// JavaScript Document
var isMenuBrowseCollapsed;

$(document).ready(function() {
	$('#menu-browse').corner('left', '8px');
	$('#menu-filter').corner('left', '8px');
	$('.menu-header').corner('tl', '8px');
	$('#cart').corner('bottom', '8px');
	$('#login-controls').corner('bottom', '8px');
	$('.dropdown dt').corner('4px');
	$('#footnav a').corner('4px');
	$('.applied-filters-container').corner('8px');
	$('.applied-filters').corner('right', '8px');
	$('#breadcrumb').corner('br', '8px');
	
	$('.menu-headerxxx').toggle(menuCollapse, menuExpand);
	
	$('.dropdown').hover(function() {
		$(this).find('dd ul').show();
		$(this).find('dt').addClass('hover');
	}, function() {
		$(this).find('dd ul').hide();
		$(this).find('dt').removeClass('hover');
	});
	$('.dropdown dd ul li a').click(function() {
		$(this).parents('ul').hide();
	});
	
	$('#auxnav ul ul').parent('li').addClass('selected');
	$('.nicetable th:last').addClass('last');
	$('.nicetable td:last').addClass('last');
	$('.nicetable tr:last').addClass('last');
	$('.category-copy table th:last').addClass('last');
	$('.category-copy table td:last').addClass('last');
	$('.category-copy table tr:last').addClass('last');
	$('.category-copy table tr:even').addClass('even');
	$('.application_table th:last').addClass('last');
	$('.application_table td:last').addClass('last');
	$('.application_table tr:last').addClass('last');
	// Default Expandable Content Function	
	$('.expand h4').click(function() {
		$(this).next().toggle('fast');
		$(this).toggleClass('active');
		return false;
	}).next().hide();
	
	// Filter Menu Expand & Collapse Controller
	$('#menu-filter li a').not(".facet").click(menuclick);
	
	/*
	$('#menu-filter li').toggle(function() {
		openChild(this);
	}, function() {
		closeChild(this);
	});
	*/
});

function menuclick () {
	var elem = $(this);
	if (elem.is (".closed")) {
		openChild(elem);
	} else {
		closeChild(elem);
	}
	return false;
}

function openChild(elem) {
	$(elem).removeClass('closed');
	$(elem).addClass('open');
	$(elem).siblings('ul').slideDown('fast', function() {
		// animation complete
	});
}

function closeChild(elem) {
	$(elem).removeClass('open');
	$(elem).addClass('closed');
	$(elem).siblings('ul').slideUp('fast', function() {
		// animation complete
	});
}

function menuCollapse() {
	$(this).next('.menu-content').slideUp();
	$(this).uncorner();
	$(this).corner('left', '8px');
}

function menuExpand() {
	$(this).next('.menu-content').slideDown();
	$(this).uncorner();
	$(this).corner('tl', '8px');
}


/* EMAIL ENCRYPTION SCRIPT */

// This script is (c) copyright 2008 by Dan Appleman under the
// GNU General Public License (http://www.gnu.org/licenses/gpl.html)
// This script is modified from an original script by Jim Tucek
// For more information, visit www.danappleman.com 
// Leave the above comments alone!
// see encryption_instructions.txt for explanation of usage

var decryption_cache = new Array();

function decrypt_string(crypted_string,n,decryption_key,just_email_address) {
	var cache_index = "'"+crypted_string+","+just_email_address+"'";

	if(decryption_cache[cache_index])					// If this string has already been decrypted, just
		return decryption_cache[cache_index];				// return the cached version.

	if(addresses[crypted_string])						// Is crypted_string an index into the addresses array
		var crypted_string = addresses[crypted_string];			// or an actual string of numbers?

	if(!crypted_string.length)						// Make sure the string is actually a string
		return "Error, not a valid index.";

	if(n == 0 || decryption_key == 0) {					// If the decryption key and n are not passed to the
		var numbers = crypted_string.split(' ');			// function, assume they are stored as the first two
		n = numbers[0];	decryption_key = numbers[1];			// numbers in crypted string.
		numbers[0] = ""; numbers[1] = "";				// Remove them from the crypted string and continue
		crypted_string = numbers.join(" ").substr(2);
	}

	var decrypted_string = '';
	var crypted_characters = crypted_string.split(' ');

	for(var i in crypted_characters) {
		var current_character = crypted_characters[i];
		var decrypted_character = exponentialModulo(current_character,n,decryption_key);
		if(just_email_address && i < 7)				// Skip 'mailto:' part
			continue;
		if(just_email_address && decrypted_character == 63)	// Stop at '?subject=....'
			break;
		decrypted_string += String.fromCharCode(decrypted_character);
	}
		decryption_cache[cache_index] = decrypted_string;			// Cache this string for any future calls

	return decrypted_string;
}

function decrypt_and_email(crypted_string,n,decryption_key) {
	if(!n || !decryption_key) { n = 0; decryption_key = 0; }
	if(!crypted_string) crypted_string = 0;

	var decrypted_string = decrypt_string(crypted_string,n,decryption_key,false);
	parent.location = decrypted_string;
}

function decrypt_and_echo(crypted_string,n,decryption_key) {
	if(!n || !decryption_key) { n = 0; decryption_key = 0; }
	if(!crypted_string) crypted_string = 0;

	var decrypted_string = decrypt_string(crypted_string,n,decryption_key,true);
	document.write(decrypted_string);
	return true;
}

// Finds base^exponent % y for large values of (base^exponent)
function exponentialModulo(base,exponent,y) {
	if (y % 2 == 0) {
		answer = 1;
		for(var i = 1; i <= y/2; i++) {
			temp = (base*base) % exponent;
			answer = (temp*answer) % exponent;
		}
	} else {
		answer = base;
		for(var i = 1; i <= y/2; i++) {
			temp = (base*base) % exponent;
			answer = (temp*answer) % exponent;
		}
	}
	return answer;
}

// Remove the comments below to improve spam resistance! 
// email addresses: 

 if(!addresses) var addresses = new Array();
addresses.push("3337 3331 405 1177 1443 545 953 131 2430 953 545 405 1177 1731 2992 1181 953 1443 2891 1085 1635 1177 2529 953 1443 1192 1181 405 131 953 1443 2993 46 2529 131 405 1763 1093 1111 1108 2404 1181 2529 953 2378 151 1181 1093 1093 1177 1085 1181 3073 2993 1731 131 405 3073 1192 1443 1093 1443 953 131 1731 3073 953 131 3073 1546 1443 405 1181 2206 131 1085 1443 2529 3073 2948 1181 1108 1093 1443 953 1181");  // [0] marketing
addresses.push("3337 3331 405 1177 1443 545 953 131 2430 953 545 1093 1111 97 97 131 1731 953 1635 1177 2529 953 1443 1192 1181 405 131 953 1443 2993 46 2529 131 405 1763 1093 1111 1108 2404 1181 2529 953 2378 151 1181 1093 1093 1177 1085 1181 3073 2993 1731 131 405 3073 1192 1443 1093 1443 953 131 1731 3073 953 131 3073 1546 1443 405 1181 2206 131 1085 1443 2529 3073 2948 1181 1108 1093 1443 953 1181"); // [1] support
addresses.push("3337 3331 405 1177 1443 545 953 131 2430 953 545 1093 1177 545 1181 1093 1635 1177 2529 953 1443 1192 1181 405 131 953 1443 2993 46 2529 131 405 1763 1093 1111 1108 2404 1181 2529 953 2378 151 1181 1093 1093 1177 1085 1181 3073 2993 1731 131 405 3073 1192 1443 1093 1443 953 131 1731 3073 953 131 3073 1546 1443 405 1181 2206 131 1085 1443 2529 3073 2948 1181 1108 1093 1443 953 1181");  // [2] sales

function searchQuery() {
    var textNode = document.getElementById('searchterm');
    window.location = "/sitesearch?q=" + textNode.value;
    return false;
}

function searchMiniQuery() {
    var textNode = document.getElementById('searchterm-mini');
    window.location = "/sitesearch?q=" + textNode.value;
    return false;
}

function clearSearchQuery() {
    var textNode = document.getElementById('searchterm');
    textNode.value="";
    window.location = "/sitesearch";
    return false;
}
