$jQ = $.noConflict();

$jQ(document).ready(function() {
	// set current page main nav state
	setActiveLink();
	
	// main nav roll overs
	$jQ("#mainNav li").hover(
		function(){
			$jQ(this).css("backgroundPosition", "0px -25px");
		}, 
		function() {
			$jQ(this).css("backgroundPosition", "0px 0px");
			setActiveLink();
		}
	);
	
	var baseUrl = "http://www.abnrml.com";
	
	// Random splotch generator
	var splotches = new Array();
		splotches[0] = "/media/images/abnrml_splotch_1.jpg";
		splotches[1] = "/media/images/abnrml_splotch_2.jpg";
		splotches[2] = "/media/images/abnrml_splotch_3.jpg";
		splotches[3] = "/media/images/abnrml_splotch_7.jpg";
		splotches[4] = "/media/images/abnrml_splotch_8.jpg";
		splotches[5] = "/media/images/abnrml_splotch_9.jpg";
		splotches[6] = "/media/images/abnrml_splotch_10.jpg";
		splotches[7] = "/media/images/abnrml_splotch_11.jpg";
		splotches[8] = "/media/images/abnrml_splotch_12.jpg";
		splotches[9] = "/media/images/abnrml_splotch_13.jpg";
		splotches[10] = "/media/images/abnrml_splotch_14.jpg";
		splotches[11] = "/media/images/abnrml_splotch_15.jpg";
		splotches[12] = "/media/images/abnrml_splotch_16.jpg";
		splotches[13] = "/media/images/abnrml_splotch_17.jpg";
		splotches[14] = "/media/images/abnrml_splotch_18.jpg";
		splotches[15] = "/media/images/abnrml_splotch_19.jpg";
		splotches[16] = "/media/images/abnrml_splotch_20.jpg";
		splotches[17] = "/media/images/abnrml_splotch_21.jpg";
		splotches[18] = "/media/images/abnrml_splotch_22.jpg";
		splotches[19] = "/media/images/abnrml_splotch_23.jpg";
		splotches[20] = "/media/images/abnrml_splotch_24.jpg";
		splotches[21] = "/media/images/abnrml_splotch_25.jpg";
		splotches[22] = "/media/images/abnrml_splotch_26.jpg";
		splotches[23] = "/media/images/abnrml_splotch_27.jpg";
		splotches[24] = "/media/images/abnrml_splotch_28.jpg";
		
	var randomSplotch = (Math.floor(Math.random()*23));
	var url = "url("+baseUrl+splotches[randomSplotch]+")"
	$jQ(".splotch").css("background-image", url);
	
	
	
	function setActiveLink() {
		var currentPage = window.location.pathname;
		var hostName = window.location.hostname;
		var storeDomain = "abnrml.bigcartel.com";
		
		switch(currentPage) {
			case "/index.asp":
				$jQ("#mainNav .link-home").css("backgroundPosition", "0px -25px");
			break;
			case "/services.asp":
				$jQ("#mainNav .link-services").css("backgroundPosition", "0px -25px");
			break;
			case "/examples.asp":
				$jQ("#mainNav .link-examples").css("backgroundPosition", "0px -25px");
			break;
			case "/about.asp":
				$jQ("#mainNav .link-about").css("backgroundPosition", "0px -25px");
			break;
			case "/contact.asp":
				$jQ("#mainNav .link-contact").css("backgroundPosition", "0px -25px");
			break;
			case "/freshness.asp":
				$jQ("#mainNav .link-freshness").css("backgroundPosition", "0px -25px");
			break;
		}
		
		if (hostName == storeDomain) {
			$jQ("#mainNav .link-store").css("backgroundPosition", "0px -25px");
		}
		
	}
	
	
	
	/* MAILING LIST */
	// link event handler
	$jQ(".ml-join, #ml-signup-link").live("click", function(evt) {
		doMailingList();
	});
	
	// field, clear default valueon focus if init val
	$jQ("#frmMailingList #name, #frmMailingList #email").live("focus", function(evt) {
		var val = $jQ(this).val();
		var valAlt = $jQ(this).attr("alt");
		if (val == valAlt) { $jQ(this).val(""); }
	});
	// search query field, repopulate init val if left blank
	$jQ("#frmMailingList #name, #frmMailingList #email").live("blur", function(evt) {
		var val = $jQ(this).val();
		var valAlt = $jQ(this).attr("alt");
		if (val == "") { $jQ(this).val(valAlt); }
	});

	// button over/out event handler
	$jQ("#ml-cancel").live("mouseover", function(evt) {
		$jQ("#ml-cancel").css("cursor", "pointer");
		var oSrc = baseUrl+"/media/images/abnrml_btn_cancel_f2.png";
		$jQ(this).attr("src", oSrc);
	});
	$jQ("#ml-cancel").live("mouseout", function(evt) {
		$jQ("#ml-cancel").css("cursor", "default");
		var oSrc = baseUrl+"/media/images/abnrml_btn_cancel.png";
		$jQ(this).attr("src", oSrc);
	});
	// button over/out event handler
	$jQ("#ml-close").live("mouseover", function(evt) {
		$jQ("#ml-close").css("cursor", "pointer");
		var oSrc = baseUrl+"/media/images/abnrml_btn_close_f2.png";
		$jQ(this).attr("src", oSrc);
	});
	$jQ("#ml-close").live("mouseout", function(evt) {
		$jQ("#ml-close").css("cursor", "default");
		var oSrc = baseUrl+"/media/images/abnrml_btn_close.png";
		$jQ(this).attr("src", oSrc);
	});
	// button click event handler
	$jQ("#ml-cancel").live("click", function(evt) {
		evt.preventDefault();

		resetFormField("frmMailingList", "name");
		resetFormField("frmMailingList", "email");
		$jQ.unblockUI();
	});
	$jQ("#ml-close").live("click", function(evt) {
		evt.preventDefault();

		resetFormField("frmMailingList", "name");
		resetFormField("frmMailingList", "email");
		
		$jQ.unblockUI();
		$jQ(".mailing-list-thanks").hide();
		$jQ(".mailing-list-join").show();
	});
	
	
	// button over/out event handler
	$jQ("#ml-submit").live("mouseover", function(evt) {
		$jQ("#ml-submit").css("cursor", "pointer");
		var oSrc = baseUrl+"/media/images/abnrml_btn_submit_f2.png";
		$jQ(this).attr("src", oSrc);
	});
	$jQ("#ml-submit").live("mouseout", function(evt) {
		$jQ("#ml-submit").css("cursor", "default");
		var oSrc = baseUrl+"/media/images/abnrml_btn_submit.png";
		$jQ(this).attr("src", oSrc);
	});
	// button click event handler
	$jQ("#ml-submit").live("click", function(evt) {
		evt.preventDefault();
		doMailingListSubmit();
	});
	
	
	// doMailingList
	function doMailingList() {
		$jQ.blockUI({
			message: $jQ("#mailing-list"), 
			focusInput: false, 
			fadeIn: 250, 
			fadeOut: 250,
			css: {
				border: "none", 
				backgroundColor: "transparent", 
				cursor: "default"
			}, 
			overlayCSS: {
				backgroundColor: "#000000", 
				opacity: "0.92"
			}
		});
	}
	
	// doMailingListSubmit
	function doMailingListSubmit() {
		
		$jQ(".mailing-list-join").fadeOut(250, function() {
			$jQ(".mailing-list-wait").fadeIn(125);
		});
		
		var name = $jQ("#frmMailingList #name").val();
		var email = $jQ("#frmMailingList #email").val();
		var form = $jQ("#frmMailingList #MM_submit").val();
		
		if (!name || name == $jQ("#frmMailingList #name").attr("alt")) {
			$jQ("#frmMailingList #name").parent().addClass("required");
			return false;
		} else {
			$jQ("#frmMailingList #name").parent().removeClass("required");
		}
		
		if (!email || !isValidEmail(email) || email == $jQ("#frmMailingList #email").attr("alt")) {
			$jQ("#frmMailingList #email").parent().addClass("required");
			return false;
		} else {
			$jQ("#frmMailingList #email").parent().removeClass("required");
		}
		
		
		var dataString = "MM_submit="+form+"&name="+name+"&email="+email;
		
		$jQ.ajax({
			type: "POST", 
			url: baseUrl+"/lib/mailing-list-join.asp", 
			data: dataString, 
			dataType: "xml", 
			error: function(xhr, status, err) {
				//console.log(status+"\n"+err);
				//console.log("xhr.status: "+xhr.status);
			}, 
			complete: function(xhr, status) {
				//console.log("Complete Status: "+status);
				//console.log("xhr.status: "+xhr.status);
			}, 
			success: function(xml, status) {
				//console.log(xml);
				//console.log(status);
				// hide form, show thanks
				$jQ(".mailing-list-wait").fadeOut(250, function() {
					$jQ(".mailing-list-thanks").fadeIn(125);
				});
			}, 
			onUnblock: function() {
				$jQ("#ml-submit").trigger("mouseout");
				$jQ("#ml-cancel").trigger("mouseout");
				resetFormField("frmMailingList", "name");
				resetFormField("frmMailingList", "email");
			}
		});
	}
	
	// resetFormField
	function resetFormField(form, field) {
		$jQ("#"+form+" #"+field).val($jQ("#"+form+" #"+field).attr("alt"));
		$jQ("#"+form+" #"+field).parent().removeClass("required");
	}
	
	// check for valid email address
	function isValidEmail(str) {
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	}
	
	//unblock UI on escape pressed...
	$jQ(window).keydown(
		function(e) {
			var key = e.keyCode || e.which;
			if (key == 27) { //escape key ascii code
				$.unblockUI();
			}
		}
	);
	
	$jQ("#product_thumbnails a").lightBox();
	
	
	$jQ("#home_products a").hover(
		function() { // OVER
			$jQ(this).find(".price-block").stop(true, true).slideToggle(300);
		}, 
		function() { // OUT
			$jQ(this).find(".price-block").stop(true, true).slideToggle(300);
		}
	);
	
	$jQ("#product_list a").hover(
		function() { // OVER
			$jQ(this).find(".price-block div strong").css("color", "#E3221B");
		}, 
		function() { // OUT
			$jQ(this).find(".price-block div strong").css("color", "#FFFFFF");
		}
	);/**/
	
	
	
	

	
	
});




function htmlentities(string, quote_style) {
	var hash_map = {}, symbol = '', tmp_str = '', entity = '';
	tmp_str = string.toString();
	
	if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
		return false;
	}
	hash_map["'"] = '&#039;';
	for (symbol in hash_map) {
		entity = hash_map[symbol];
		tmp_str = tmp_str.split(symbol).join(entity);
	}
	
	return tmp_str;
}


function get_html_translation_table(table, quote_style) {
	var entities = {}, hash_map = {}, decimal = 0, symbol = '';
	var constMappingTable = {}, constMappingQuoteStyle = {};
	var useTable = {}, useQuoteStyle = {};
	
	// Translate arguments
	constMappingTable[0]      = 'HTML_SPECIALCHARS';
	constMappingTable[1]      = 'HTML_ENTITIES';
	constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
	constMappingQuoteStyle[2] = 'ENT_COMPAT';
	constMappingQuoteStyle[3] = 'ENT_QUOTES';

	useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
	useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';

	if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
		throw new Error("Table: "+useTable+' not supported');
		// return false;
	}

	entities['38'] = '&amp;';
	if (useTable === 'HTML_ENTITIES') {
		entities['160'] = '&nbsp;';
		entities['161'] = '&iexcl;';
		entities['162'] = '&cent;';
		entities['163'] = '&pound;';
		entities['164'] = '&curren;';
		entities['165'] = '&yen;';
		entities['166'] = '&brvbar;';
		entities['167'] = '&sect;';
		entities['168'] = '&uml;';
		entities['169'] = '&copy;';
		entities['170'] = '&ordf;';
		entities['171'] = '&laquo;';
		entities['172'] = '&not;';
		entities['173'] = '&shy;';
		entities['174'] = '&reg;';
		entities['175'] = '&macr;';
		entities['176'] = '&deg;';
		entities['177'] = '&plusmn;';
		entities['178'] = '&sup2;';
		entities['179'] = '&sup3;';
		entities['180'] = '&acute;';
		entities['181'] = '&micro;';
		entities['182'] = '&para;';
		entities['183'] = '&middot;';
		entities['184'] = '&cedil;';
		entities['185'] = '&sup1;';
		entities['186'] = '&ordm;';
		entities['187'] = '&raquo;';
		entities['188'] = '&frac14;';
		entities['189'] = '&frac12;';
		entities['190'] = '&frac34;';
		entities['191'] = '&iquest;';
		entities['192'] = '&Agrave;';
		entities['193'] = '&Aacute;';
		entities['194'] = '&Acirc;';
		entities['195'] = '&Atilde;';
		entities['196'] = '&Auml;';
		entities['197'] = '&Aring;';
		entities['198'] = '&AElig;';
		entities['199'] = '&Ccedil;';
		entities['200'] = '&Egrave;';
		entities['201'] = '&Eacute;';
		entities['202'] = '&Ecirc;';
		entities['203'] = '&Euml;';
		entities['204'] = '&Igrave;';
		entities['205'] = '&Iacute;';
		entities['206'] = '&Icirc;';
		entities['207'] = '&Iuml;';
		entities['208'] = '&ETH;';
		entities['209'] = '&Ntilde;';
		entities['210'] = '&Ograve;';
		entities['211'] = '&Oacute;';
		entities['212'] = '&Ocirc;';
		entities['213'] = '&Otilde;';
		entities['214'] = '&Ouml;';
		entities['215'] = '&times;';
		entities['216'] = '&Oslash;';
		entities['217'] = '&Ugrave;';
		entities['218'] = '&Uacute;';
		entities['219'] = '&Ucirc;';
		entities['220'] = '&Uuml;';
		entities['221'] = '&Yacute;';
		entities['222'] = '&THORN;';
		entities['223'] = '&szlig;';
		entities['224'] = '&agrave;';
		entities['225'] = '&aacute;';
		entities['226'] = '&acirc;';
		entities['227'] = '&atilde;';
		entities['228'] = '&auml;';
		entities['229'] = '&aring;';
		entities['230'] = '&aelig;';
		entities['231'] = '&ccedil;';
		entities['232'] = '&egrave;';
		entities['233'] = '&eacute;';
		entities['234'] = '&ecirc;';
		entities['235'] = '&euml;';
		entities['236'] = '&igrave;';
		entities['237'] = '&iacute;';
		entities['238'] = '&icirc;';
		entities['239'] = '&iuml;';
		entities['240'] = '&eth;';
		entities['241'] = '&ntilde;';
		entities['242'] = '&ograve;';
		entities['243'] = '&oacute;';
		entities['244'] = '&ocirc;';
		entities['245'] = '&otilde;';
		entities['246'] = '&ouml;';
		entities['247'] = '&divide;';
		entities['248'] = '&oslash;';
		entities['249'] = '&ugrave;';
		entities['250'] = '&uacute;';
		entities['251'] = '&ucirc;';
		entities['252'] = '&uuml;';
		entities['253'] = '&yacute;';
		entities['254'] = '&thorn;';
		entities['255'] = '&yuml;';
	}

	if (useQuoteStyle !== 'ENT_NOQUOTES') {
		entities['34'] = '&quot;';
	}
	if (useQuoteStyle === 'ENT_QUOTES') {
		entities['39'] = '&#39;';
	}
	entities['60'] = '&lt;';
	entities['62'] = '&gt;';


	// ascii decimals to real symbols
	for (decimal in entities) {
		symbol = String.fromCharCode(decimal);
		hash_map[symbol] = entities[decimal];
	}
	
	return hash_map;
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
		
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
		
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
		
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

String.prototype.truncate = function(length) {
  if (this.length > length) {
    return this.slice(0, length - 3) + "...";
  } else {
    return this;
  }
};


