/* Common Javascript functions for use throughout Interspire Shopping Cart */

// Fetch the value of a cookie
function get_cookie(name) {
	name = name += "=";
	var cookie_start = document.cookie.indexOf(name);
	if(cookie_start > -1) {
		cookie_start = cookie_start+name.length;
		cookie_end = document.cookie.indexOf(';', cookie_start);
		if(cookie_end == -1) {
			cookie_end = document.cookie.length;
		}
		return unescape(document.cookie.substring(cookie_start, cookie_end));
	}
}

// Set a cookie
function set_cookie(name, value, expires)
{
	if(!expires) {
		expires = "; expires=Wed, 1 Jan 2020 00:00:00 GMT;"
	} else {
		expire = new Date();
		expire.setTime(expire.getTime()+(expires*1000));
		expires = "; expires="+expire.toGMTString();
	}
	document.cookie = name+"="+escape(value)+expires;
}

/* Javascript functions for the products page */
var num_products_to_compare = 0;
var product_option_value = "";
var CurrentProdTab = "";
function showProductImage(filename, product_id, currentImage) {
	var l = (screen.availWidth/2)-350;
	var t = (screen.availHeight/2)-300;
	var variationAdd = '';
	if(ShowVariationThumb) {
		variationAdd = '&variation_id='+$('body').attr('currentVariation');
		CurrentProdThumbImage = null;
	}
	UrlAddOn = '';

	if(currentImage) {
		UrlAddOn = "&current_image="+currentImage;
	} else if(CurrentProdThumbImage) {
		UrlAddOn = "&current_image="+CurrentProdThumbImage;
	}
	var imgPopup = window.open(filename + "?product_id="+product_id+variationAdd+UrlAddOn, "imagePop", "toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=700,height=600,top="+t+",left="+l);
	imgPopup.focus();
}

function CheckProductConfigurableFields(form)
{
	var requiredFields = $('.FieldRequired');
	var valid = true;
	requiredFields.each(function() {
		var namePart = this.name.replace(/^.*\[/, '');
		var fieldId = namePart.replace(/\].*$/, '');

		if(this.type=='checkbox' ) {
			if(!this.checked) {
				valid = false;
				alert(lang.EnterRequiredField);
				this.focus();
				this.select();
				return false;
			}
		} else if(this.value == '') {
			if(this.type != 'file' || (this.type == 'file' && document.getElementById('CurrentProductFile_'+fieldId).value == '')) {
				valid = false;
				alert(lang.EnterRequiredField);
				this.focus();
				this.select();
				return false;
			}
		}
	});
	
	

	var fileFields = $(form).find('input[type=file]');
	fileFields.each(function() {
		if(this.value != '') {
			var namePart = this.name.replace(/^.*\[/, '');
			var fieldId = namePart.replace(/\].*$/, '');
			var fileTypes = document.getElementById('ProductFileType_'+fieldId).value;

			fileTypes = ','+fileTypes.replace(' ', '').toLowerCase()+','
			var ext = this.value.replace(/^.*\./, '').toLowerCase();

			if(fileTypes.indexOf(','+ext+',') == -1) {
				alert(lang.InvalidFileTypeJS);
				this.focus();
				this.select();
				valid = false;
			}

		}
	});

	return valid;
}

/** begin ajax cart **/

function check_add_to_cart(form, required) {
	var valid = true;
	var qtyInputs = $(form).find('input.qtyInput');
	qtyInputs.each(function() {
		if(isNaN($(this).val()) || $(this).val() <= 0) {
			alert(lang.InvalidQuantity);
			this.focus();
			this.select();
			valid = false;
			return false;
		}
	});
	if(valid == false) {
		return false;
	}

	if(!CheckProductConfigurableFields(form)) {
		return false;
	}

	if(required && !$(form).find('.CartVariationId').val()) {
		alert(lang.OptionMessage);
		var select = $(form).find('select').get(0);
		if(select) {
			select.focus();
		}
		var radio = $(form).find('input[type=radio]').get(0);
		if(radio) {
			radio.focus();
		}
		return false;
	}

	if (!CheckEventDate()) {
		return false;
	}

	
	/** jquery add to cart override **/
	
	
	openCartBox('add', $('#cartpost').serialize());
	
	
	/** jquery add to cart override **/
	
	// return true;
	return false;
}

function ShowAjaxCart()
{
	openCartBox("get", "");
}

function AddAjaxCart(productid)
{
	var param = "action=add&product_id="+productid;		
	openCartBox("add", param);
}

function openCartBox(event, parameter)
{
	var winwidth = $(window).width();
	var winheight = $(document).height();
	
	$("body").append("<div id='windowoverlay' style='width: " + winwidth + "px; height: " + winheight + "px;'></div>");
	$("#windowoverlay").fadeTo("fast", "0.8");
		
	var leftBoxMargin = ( winwidth - 920 ) / 2;
	var defaultTop = 300;
	var topPoint = window.pageYOffset - defaultTop;
	
	// build box
	$("body").append("<div id='cartBox' style='left :" + leftBoxMargin + "px;  top:" + topPoint + "px;'></div>");
	
	// append header
	$("#cartBox").append("<div class='cartboxheader'><h1>"+lang.yourcart+"</h1><div class='close-cartbox'>"+lang.continueshopping+"</div></div>");		
	
	// then show those header
	$('#cartBox').animate({top : '+='+defaultTop });
			
	// give listener to the item
	$(".close-cartbox").click(function(){
		$("#cartBox").remove();
		
		$("#windowoverlay").fadeTo("fast", "0", function(){
			$(this).remove();			
		});
				
		var cartSummary = $.ajax({
			url: "remote.php",
			data: "secaction=cartsummary",
			dataType : 'json', 
			success: function(data){		
				$("#TopMenuCartItem").html(data['itemnumber']);
								
				if(data['itemnumber'] != "") {
					$("#TopMenuSubTotal").html(data['subtotal']);
				} else {
					$("#TopMenuSubTotal").html("");
				}
			}
		});	
	});
	
	if(event == "add") {
		parameter += "&secaction=additemcart";
	} else if(event == "remove") {
		parameter += "&secaction=removeitemcart";
	} else if(event == "change") {
		parameter += "&secaction=changeitemcart";
	} else if(event == "get") {
		parameter += "&secaction=getcart";
	}
				
	/** fetch cart data here **/	
	var xmlRequest = $.ajax({
		url: "remote.php",
		data: parameter,
		success: buildProductCartList
	});
}

function appendLoadingCartBox(){
	$(".cartboxbody").html("");
	// $(".cartboxbody").append("<div class='cartboxloading'/>");
}

function buildProductCartList(data){	
	// $(".cartboxbody").append(data);
	$(".cartboxheader").after(data);
	
	$(".CartRemoveLinkAjax").click(function() {
		var cartindex = $(this).attr('index');
		var parameter = "action=remove&secaction=removeitemcart&item=" + cartindex;		
		var thistag = $(this);
		
		var xmlRequest = $.ajax({
			url: "remote.php",
			data: parameter,
			dataType : 'json', 
			success: function(data){								
				var trparent = thistag.parent().parent();
				trparent.fadeOut('slow',function(){
					trparent.remove();
					if($(".cartboxbody tbody tr").length == 1){
						$('.cartboxbody').remove();
						$('.cartboxfooter').remove();
						$('#cartBox').append('<div class="emptycart">Your shopping cart is empty</div>');
					}
				});
				
				$(".ajaxcarttotalspan").html(data['subtotal']);
				
			}
		});	
		
		return false;
	});
	
	$(".AjaxQtyInput").change(function(){
		var index = $(this).attr("index");
		var value = $(this).val();
		var updateParam = "secaction=changeitemcart&action=update&index=" + index + "&qty[" + index + "]=" + value;
		var thisobj = $(this);
		
		var xmlRequest = $.ajax({
			url: "remote.php",
			data: updateParam,
			dataType : 'json', 
			success: function(data){				
				$(".ajaxcarttotalspan").html(data['subtotal']);
				thisobj.parent().parent().find(".ProductPrice").html(data['prodprice']);
			}
		});
	});
}

/** ajax cart end here **/

function compareProducts(compare_path) {
	var pids = "";

	if($('form').find('input[name=compare_product_ids][checked]').size() >= 2) {
		var cpids = document.getElementsByName('compare_product_ids');

		for(i = 0; i < cpids.length; i++) {
			if(cpids[i].checked)
				pids = pids + cpids[i].value + "/";
		}

		pids = pids.replace(/\/$/, "");
		document.location.href = compare_path + pids;
		return false;
	}
	else {
		alert(lang.CompareSelectMessage);
		return false;
	}
}

function product_comparison_box_changed(state) {
	// Increment num_products_to_compare - needs to be > 0 to submit the product comparison form


	if(state)
		num_products_to_compare++;
	else
		if (num_products_to_compare != 0)
			num_products_to_compare--;
}

function remove_product_from_comparison(id) {
	if(num_compare_items > 2) {
		for(i = 1; i < 11; i++) {
			document.getElementById("compare_"+i+"_"+id).style.display = "none";
		}

		num_compare_items--;
	}
	else {
		alert(lang.CompareTwoProducts);
	}
}

function show_product_review_form() {
	document.getElementById("rating_box").style.display = "";
	if(typeof(HideProductTabs) != 'undefined' && HideProductTabs == 0) {
		CurrentProdTab = 'ProductReviews_Tab';
	} else {
		document.location.href = "#write_review";
	}
}

function jump_to_product_reviews() {
	if(typeof(HideProductTabs) != 'undefined' && HideProductTabs == 0) {
		CurrentProdTab = 'ProductReviews_Tab';
	} else {
		document.location.href = "#reviews";
	}
}

function g(id) {
	return document.getElementById(id);
}

function check_product_review_form() {
	var revrating = g("revrating");
	var revtitle = g("revtitle");
	var revtext = g("revtext");
	var revfromname = g("revfromname");
	var captcha = g("captcha");

	if(revrating.selectedIndex == 0) {
		alert(lang.ReviewNoRating);
		revrating.focus();
		return false;
	}

	if(revtitle.value == "") {
		alert(lang.ReviewNoTitle);
		revtitle.focus();
		return false;
	}

	if(revtext.value == "") {
		alert(lang.ReviewNoText);
		revtext.focus();
		return false;
	}

	if(captcha.value == "" && HideReviewCaptcha != "none") {
		alert(lang.ReviewNoCaptcha);
		captcha.focus();
		return false;
	}

	return true;
}

function check_small_search_form() {
	var search_query = g("search_query");

	if(search_query.value == "") {
		alert(lang.EmptySmallSearch);
		search_query.focus();
		return false;
	}

	return true;
}

function setCurrency(currencyId)
{
	var gotoURL = location.href;

	if (location.search !== '')
	{
		if (gotoURL.search(/[&|\?]setCurrencyId=[0-9]+/) > -1)
			gotoURL = gotoURL.replace(/([&|\?]setCurrencyId=)[0-9]+/, '$1' + currencyId);
		else
			gotoURL = gotoURL + '&setCurrencyId=' + currencyId;
	}
	else
		gotoURL = gotoURL + '?setCurrencyId=' + currencyId;

	location.href = gotoURL;
}


// Dummy sel_panel function for when design mode isn't enabled
function sel_panel(id) {}

function inline_add_to_cart(filename, product_id, quantity, returnTo) {
	if(typeof(quantity) == 'undefined') {
		var quantity = '1';
	}
	var html = '<form action="' + filename + '/cart.php" method="post" id="inlineCartAdd">';
	if(typeof(returnTo) != 'undefined' && returnTo == true) {
		var returnLocation = window.location;
		html += '<input type="hidden" name="returnUrl" value="'+escape(returnLocation)+'" />';
	}
	html += '<input type="hidden" name="action" value="add" />';
	html += '<input type="hidden" name="qty" value="'+quantity+'" />';
	html += '<input type="hidden" name="product_id" value="'+product_id+'" />';
	html += '<\/form>';
   $('body').append(html);
   $('#inlineCartAdd').submit();
}

function ShowPopupHelp(content, url, decodeHtmlEntities) {
	var popupWindow = open('', 'view','height=450,width=550');

	if(decodeHtmlEntities) {
		content = HtmlEntityDecode(content);
	}
	if (window.focus) {
		popupWindow.focus();
	}

	var doc = popupWindow.document;
	doc.write(content);
	doc.close();

	return false;
}

function HtmlEntityDecode(str) {
   try {
      var tarea=document.createElement('textarea');
      tarea.innerHTML = str; return tarea.value;
      tarea.parentNode.removeChild(tarea);
   } catch(e) {
      //for IE add <div id="htmlconverter" style="display:none;"></div> to the page
      document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
      var content = document.getElementById("innerConverter").value;
      document.getElementById("htmlconverter").innerHTML = "";
      return content;
   }
}

function setProductThumbHeight()
{
	var ImageBoxDiv = $('.Content .ProductList .ProductImage');
	var ImageListDiv = $('.Content .ProductList:not(.List) li');
	var CurrentListHeight = ImageListDiv.height();
	var ProductImageMargin = ImageBoxDiv.css('margin-left')*2;
/*
	ImageBoxDiv.height(ThumbImageHeight);
	ImageBoxDiv.width(ThumbImageWidth);
	ImageBoxDiv.css('line-height', ThumbImageHeight+'px');
*/

	var ImageBoxHeight = ThumbImageHeight;

	if (parseInt(ImageBoxDiv.css("padding-top"), 10)) {
		ImageBoxHeight += parseInt(ImageBoxDiv.css("padding-top"), 10) * 2; //Total Padding Width
	}

	if(parseInt(ImageBoxDiv.css("margin-top"), 10)) {
		ImageBoxHeight += parseInt(ImageBoxDiv.css("margin-top"), 10) * 2; //Total Margin Width
	}

	if (parseInt(ImageBoxDiv.css("borderTopWidth"), 10)) {
		ImageBoxHeight += parseInt(ImageBoxDiv.css("borderTopWidth"), 10) * 2; //Total Border Width
	}

	ImageBoxDiv.height(ImageBoxHeight);
	ImageBoxDiv.width(ThumbImageWidth);
	ImageBoxDiv.css('line-height', ImageBoxHeight+'px');


	//calculate the new list container width based on the difference between the thumb image and default thumb size
	var ImageListWidth = ImageListDiv.width() + (ThumbImageWidth-120);
	ImageListDiv.width(ImageListWidth);

//	var ImageListHeight = ImageListDiv.height() + (ImageBoxDiv.height() - 120);
//	ImageListDiv.height(ImageListHeight);



	$('.Content .ProductList.List .ProductDetails').css('margin-left',ThumbImageWidth+2+'px');
	$('.Content .ProductList.List li').height(Math.max(CurrentListHeight, ThumbImageHeight));
}

// Dummy JS object to hold language strings.
var lang = {
};

// IE 6 doesn't support the :hover selector on elements other than links, so
// we use jQuery to work some magic to get our hover styles applied.
if(document.all) {
	var isIE7 = /*@cc_on@if(@_jscript_version>=5.7)!@end@*/false;
	if(isIE7 == false) {
		$(document).ready(function() {
			
			$('.ProductList li').hover(function() {
				$(this).addClass('Over');
			},
			function() {
				$(this).removeClass('Over');
			});
			
			$('.ComparisonTable tr').hover(function() {
				$(this).addClass('Over');
			},
			function() {
				$(this).removeClass('Over');
			});
		});
	}
	$('.ProductList li:last-child').addClass('LastChild');
}

function ShowLoadingIndicator() {
	if (typeof(disableLoadingIndicator) != 'undefined' && disableLoadingIndicator) {
		return;
	}
	var windowWidth = $(window).width();
	var scrollTop;
	if(self.pageYOffset) {
		scrollTop = self.pageYOffset;
	}
	else if(document.documentElement && document.documentElement.scrollTop) {
		scrollTop = document.documentElement.scrollTop;
	}
	else if(document.body) {
		scrollTop = document.body.scrollTop;
	}
	$('#AjaxLoading').css('position', 'absolute');
	$('#AjaxLoading').css('top', scrollTop+'px');
	$('#AjaxLoading').css('left', parseInt((windowWidth-150)/2)+"px");
	$('#AjaxLoading').show();
}

function HideLoadingIndicator() {
	$('#AjaxLoading').hide();
}

// Ensure that all product lists are the same height
function setProductListHeights () {
	// hack job putting this here but it needs to be reused by search ajax pager
	if(typeof(DesignMode) != 'undefined') {
		return;
	}

	/*
	setProductThumbHeight();	
	function setHeight(ele) {
		var maxHeight = 0;
		$(ele).not('.List').each(function() {
			if($(this).height() > maxHeight) {
				maxHeight = $(this).height();
			}
		});
		$(ele).css('height', maxHeight);
	}

	setHeight('.Content .ProductList:not(.List) li .ProductDetails');
	setHeight('.Content .ProductList:not(.List) li .ProductPriceRating');
	setHeight('.Content .ProductList:not(.List) li');
	*/
}

$(document).ready(setProductListHeights);

/**
* Adds a script tag to the DOM that forces a hit to tracksearchclick. Should be called by a mousedown event as calling it by a click event can sometimes be cancelled by the browser navigating away from the page.
*/
function isc_TrackSearchClick (searchId) {
	if (!searchId) {
		return;
	}

	$('#SearchTracker').remove();

	var trackurl = 'search.php?action=tracksearchclick&searchid=' + encodeURIComponent(searchId) + '&random=' + Math.random();

	var script = document.createElement('script');
	script.type = "text/javascript";
	script.src = trackurl;
	script.id = "SearchTracker";

	window.document.body.appendChild(script);
}

$(document).ready(function() {


/* ----------- List slider ----------*/
	$('span.sitemap_categories ul li ul li ul').hide();
			
			var elem = $('span.sitemap_categories ul li ul li');
			elem.has('ul').find('a:first').addClass('expandcat').css('display','block');
			
			
			$('.expandcat').toggle(function(e){
							
							e.preventDefault();
							$(this).siblings('ul:first').stop(true, true).show(1500);
							$(this).removeClass('expandcat');
							$(this).addClass('collapsecat');

			},function(){
							
							
								$(this).siblings('ul:first').stop(true, true).hide(1500);
									$(this).removeClass('collapsecat');
								$(this).addClass('expandcat');
								
			
			});



var from = 5, step = 10;
var max_size = $("ul.custom").children().length;

function initSize(list){
	var current_size = from*31;
	$("ul.custom").css('height',current_size);
	$(".colapse").hide();
}
function showNext(list) {

	var current_size = step*31;
	var stopSize = max_size*31;
		$("ul.custom").animate({ height:stopSize}, 500 );
		$(".expand").hide();
			$(".colapse").show();
	/*
	if(current_size <= stopSize){
		$("ul.custom").animate({ height:stopSize}, 500 );
		step += from;

	}
	else{
	
		var normSize = from*31;
		$("ul.custom").animate({ height:normSize }, 500 );
		step=10;
	
	}

*/
}
function close(list){
	var current_size = step*31;
	var stopSize = max_size*31;
		$("ul.custom").animate({ height:from*31}, 500 );
		$(".expand").show();
			$(".colapse").hide();

}

// show initial set
initSize($('ul.custom'));

/* clicking on the 'more' link:*/
$('.view_more').toggle(
function(){showNext($('ul.custom'));},function(){close($('ul.custom'));}

);

	$('.InitialFocus').focus();
	$('table.Stylize tr:first-child').addClass('First');
	$('table.Stylize tr:last-child').addClass('Last');
	$('table.Stylize tr td:odd').addClass('Odd');
	$('table.Stylize tr td:even').addClass('Even');
	$('table.Stylize tr:even').addClass('Odd');
	$('table.Stylize tr:even').addClass('Even');

	$('.TabContainer .TabNav li').click(function() {
		$(this).parent('.TabNav').find('li').removeClass('Active');
		$(this).parents('.TabContainer').find('.TabContent').hide();
		$(this).addClass('Active');
		$(this).parents('.TabContainer').find('#TabContent'+this.id).show();
		$(this).find('a').blur();
		return false;
	});

	$('html').ajaxStart(function() {
		ShowLoadingIndicator();
	});

	$('html').ajaxComplete(function() {
		HideLoadingIndicator();
	});
	
// Main banner rotate	
$('#content')
	.after('<div id="nav">') 
	.cycle({
		 fx			:	'fade', 
		 pager		:	'#nav',		 
		 speed		:	1000,
		 timeout	:	4000
		 
	});
});

var config = {};

function changeLanguage(lang) 
{
	$("#urlreturn").val(window.location);
	$("#lang").val(lang);
			
	$("#changeLang").submit();
	
	return false;
}

$(document).ready(function() {
	$(".ProductDescSh li").each(function(){
		$(this).mouseenter(function(){	
			
			$(this).find('.ProductDetails').stop().animate({
				top: "-50px"
			}, 200, function() {
		    	$(this).find('.price').show();
		    	$(this).find('.author').show();
		    	$(this).find('.ProductPriceRating').show();
		  	});
		  	
		}).mouseleave(function(){
			
			$(this).find('.price').hide();
	    	$(this).find('.author').hide();
	    	$(this).find('.ProductPriceRating').hide();
	    	
			$(this).find('.ProductDetails').stop().animate({
				top: "0px"
			}, 200, function() {});		  	
		});	
	});
});	

$(document).ready(function() {
	var $prev = "";
	$(".expandbutton").each(function(){		
		$(this).click(function(){			
			if($prev != "") {
				if($prev.get(0) !== $(this).get(0)) {
					$prev.parent().find(".secchildcategory").hide("fast");
				}
			} 			
			$(this).parent().find(".secchildcategory").toggle('fast', function() {});			
			$prev = $(this);
			return false;			
		});
	});
	
	
	// pause & resume control
	$('#pause').click(function() { 		
	    $('#content').cycle('pause');
	    $(this).hide();
	    $("#resume").show();
	    return false;
	});
	
	$('#resume').click(function() { 	    
	    $('#content').cycle('resume');
	    $(this).hide();
	    $("#pause").show();
	    return false;
	});

	
});	
