
jQuery.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

jQuery(document).ready(function($) {
	
	do_loginPage();
	
	do_downloadPage();
	
})

function do_loginPage() {
	
	// get ID from URL, if it exists
	var category_id = $.getUrlVar('category');
	
	// get login form
	var form = $("div.tx-newloginbox-pi1").find("form")
	
	// add param to URL to be able to track successful logins
	var old_action = form.attr("action") + "";
	var new_action = "";
	
	// check if ?L=0 param is aleady present
	if (old_action.indexOf("?") > 0)
		new_action = old_action + "&previous=login";
	else
		new_action = old_action + "?previous=login";
	
	// check if ID was provided, i.e. user is coming from "solutions/product page"
	if (category_id != "" && typeof category_id != 'undefined') {
		// append ID to maintain drect link functionality
		new_action = new_action + "&category=" + category_id;
	}	
	
	// set new action url for form
	form.attr("action", new_action);
}

// store link in case the terms where not yet accepted
function do_downloadPage() {
	
	// add link classes
	addLinkMarkerClasses();
	
	// show Click Stream EPA note
	$("div#category-navigation").show();
	
	
	// add event handler to EPA links
	$("a.downloadlink").click(function(e) {
		// stop link from being executed
		// e.preventDefault();
		
		var start_download;
		if ($(this).hasClass("epa")) {
			if ($('input#accept-license').is(':checked')) {
				start_download = true
			}
			else {
				$.scrollTo("#topofpage", 500);
				$("p#accept-license-text").addClass("markLicense");
				start_download = false;
			}
		}
		else {
			start_download = true;
		}
		
		// stop IE, the return "false" only works in firefox
		if (start_download) {
			
			// traverse DOM to actual category title
			var cat = "Download";
			var action = $(this).parent().parent().parent().parent().find("span.categoryTitle").text()
			var label = $(this).find("b").text();
			var value = 0; // unused
			
			// track download
			// use 'this' instead of $(this) because no jQuery functionality is needed
			trackDownload(this, cat, action, label, value);
		}
		//else {
			// stop standard behaviour for click on link
			e.preventDefault();
			return false;
		//}	
	})
	
	
	// initially toggle EPA links
	toggleEpaActivityClass();
	
	// add event handler to checkbox
	$("input#accept-license").change(function() {
		toggleEpaActivityClass();
	})
	
	// get reference to category dropdown
	var dropdown = $("select#category_selection");
	
	// get all titles to create dropdown menu entries
	$("span.categoryTitle").each(function() {
		var title = $(this).text();
		var id = $(this).next("span.categoryId").text();
		dropdown.append("<option value='" + id + "'>" + title + "</option>");
	})

	// add change handler to dropdown
	$("select#category_selection").change(function() {
		
		// get selected item ID
		var id = $(this).val();
		
		// track dropdown selection
		try {

			// category=-1 is submitted for "All" downloads
			// track fake pageview for download selection
			_gaq.push(['_trackPageview', '/downloads.html?category=' + id]);
		}
		catch (e) {}
		
		
		if (id != -1) {
			$("div.category").hide();
			$("div.category[id=category_"+id+"]").fadeIn();
			
		}
		else {
			$("div.category").fadeIn();
		}
	})

	// get ID from URL, if it exists
	var category_id = $.getUrlVar('category');

	// get matching DIV for URL id
	var category_div = $("div.category[id=category_"+category_id+"]")
	
	// show proper div if ID matches any existing value
	if (category_div.size() > 0) 
	{
		category_div.show();
		// set dropdown to shown category
		$("select#category_selection").val(category_id);
	}
	// show first in category list
	else 
	{
		// show all
		$("div.category").show();
		$("select#category_selection").val(-1);
		category_id = -1;
	}
	
	// hide CS note of EPA link exists in CS DIV
	// Click Stream has cat-id 16
	if ($("div.category[id=category_16]").find("a.epa").size() == 0)
		$("div#clickstream-epa-note").show();	
		
	// move CS note into proper table as new row
	var clickstream_note = $("div#clickstream-epa-note").remove();
	var clickstream_table_cell = $("div.category[id=category_16]").find("tr.note-row").show().find("td");
	clickstream_table_cell.html(clickstream_note);
	
	// enable "download terms" link
	//var terms_link_href = $("a#downloadlink_9").attr("href");
	//$("a#download-terms").attr("href", terms_link_href);
	
	// simulate click on link in actual category
	$("a#download-terms").click(function(e){
		e.preventDefault();
		$("a#downloadlink_9").trigger('click');
	});
	
	// url in browser navigation bar
	var url = location.href
	
	// check if downloads are visible and user is not on public downloads page
	if ($("div.category").size() > 0 && url.indexOf("downloads_public.html") == -1)
	{
		// detect if user is coming from account confirmation email
		if (url.indexOf("user=") > 0 && url.indexOf("pass") > 0 && url.indexOf("logintype") > 0 && url.indexOf("redirect_url") > 0)
		{
			_gaq.push(['_trackPageview', '/register_confirmed.html']);
		}
		
		if (url.indexOf("previous=login") > 0)
		{
			_gaq.push(['_trackPageview', '/login_success.html']);
		}
		
		// normal request for downloads page
		if (category_id == -1)
			_gaq.push(['_trackPageview', '/downloads.html']);
		// url hat parameter attached, i.e. referring from product page menu
		else
			_gaq.push(['_trackPageview', '/downloads.html?category='+category_id]);
	}
	
	// check if page is the public page
	if (url.indexOf("downloads_public.html") != -1)
	{
		// track pageview
		_gaq.push(['_trackPageview', '/downloads_public.html']);
		
		// hide navigation
		$("div#category-navigation").hide();
		
		// replace index.php
		$("a.downloadlink").each(function(e) {
			var href = $(this).attr("href");
			
			var new_href = href;
			new_href = href.replace("index.php", "downloads_public.html");
			new_href = new_href.replace("&L=0", "");
			new_href = new_href.replace("&user_id=0", "");
			
			$(this).attr("href", new_href);
			
			// remove download restriction class if EPA is in name
			$(this).removeClass("epa").removeClass("inactive");
		})
	}
}

function addLinkMarkerClasses() {
	// mark all download links
	// mark all EPA links
	// visually deactivate EPA links
	$("a.downloadlink").each(function() {
		var link = $(this);
		var label = $(this).text()
		
		// add epa class if product link contains "EPA" (capital letters)
		if (label.lastIndexOf("EPA") > -1)
		{
			link.addClass("epa");
			link.append("<span class='epa-note'>&nbsp;(accept license above)</span>");
		}
	})	
}

function toggleEpaActivityClass() {
	// mark links with "EPA" in text as inactive
	if ($('#accept-license').is(':checked')) {
		$("p#accept-license-text").removeClass("markLicense");
		$("a.epa").removeClass("inactive");
	}
	else {
		$("a.epa").addClass("inactive");
	}	
}



