﻿var ActiveShop = false;


function showLightbox() {
	try {
		$('lightboxOverlay').style.height = Element.getHeight('contentpil')+30+'px';
		if (document.all)
			$('lightboxOverlay').style.width = document.body.offsetWidth+'px';

		Effect.Appear('lightboxOverlay', {duration: 0.5,to:0.8});
		Effect.Appear('lightboxContainer', {duration: 0.5,to:1.0});
	} catch(e) {
		ErrorHandler('{86B19F41-A6B2-4c8d-8B8E-D26D09AE80D8}', "showLightbox()", e);
		alert('An Error occured. It has been logged.\nThe lightbox can not be shown.')
	}
}
	
function hideLightbox() {
	try {
		Effect.Fade('lightboxOverlay', {duration: 0.5,from:0.8});
		Effect.Fade('lightboxContainer', {duration: 0.1,from:1.0});
		document.getElementById('shoppingLinks').style.display = "none";
		document.getElementById('lightboxContentDefault').style.display = "";
		document.getElementById('lightboxContentEmail').style.display = "none";
		zoomOutProductImage();
		
//		Effect.Fade('shoppingLinks', {duration: 0.5,from:0.8});
	} catch(e) {
		ErrorHandler('{1EE5B4B7-7FA5-4de5-8724-0A681938AD43}', "hideLightbox()", e);
		alert('An Error occured. It has been logged.\nThe Lightbox can not be closed')
	}
}



function zoomProductImage() {
	try {
		imgHeight = $('productImageBig').getHeight()/2;
		imgWidth = $('productImageBig').getWidth()/2;

		$('productImageBig').style.top = -imgHeight+"px";
		$('productImageBig').style.left = -imgWidth+"px";

		Effect.Fade('productImage', {duration: 0.2});
		Effect.Appear('productImageBig');
		setTimeout("Effect.Appear('zoomDragText', {to:0.7})", 400);
		setTimeout("Effect.Fade('zoomDragText')", 3000);

		new Draggable('productImageBig');
		$('lightboxImagecontainer').style.cursor = "hand";
		$('lightboxImagecontainer').style.cursor = "pointer";

		$('zoomOut').style.display = "block";
		$('zoom').style.display = "none";
	} catch(e) {
		ErrorHandler('{AEFCED67-B4F6-4ffe-B947-D11D565DE7C7}', "zoomProductImage()", e);
		alert('An Error occured. It has been logged.\nYou can not zoom right now.')
	}
}

function zoomOutProductImage() {
	try {
		Effect.Fade('productImageBig', {duration: 0.2});
		Effect.Appear('productImage');
		$('zoomDragText').style.display = "none";
		$('zoomOut').style.display = "none";
		$('zoom').style.display = "block";
	} catch(e) {
		ErrorHandler('{3FC21BF2-BC40-4345-B608-006379DE133B}', "zoomOutProductImage()", e);
		alert('An Error occured. It has been logged.\nCan not zoom out. ')
	}
}

function checkImagePosition() {
 	try {
		imgHeight = $('productImageBig').getHeight()-386;
		negImgHeight = -imgHeight;

		imgWidth = $('productImageBig').getWidth()-324;
		negImgWidth = -imgWidth;

		if(parseInt($('productImageBig').style.top) > 0) {
			$('productImageBig').style.top = "0px";
		}
		if(parseInt($('productImageBig').style.left) > 0) {
			$('productImageBig').style.left = "0px";
		}
		if(parseInt($('productImageBig').style.top) < negImgHeight) {
			$('productImageBig').style.top = negImgHeight+"px";
		}
		if(parseInt($('productImageBig').style.left) < negImgWidth) {
			$('productImageBig').style.left = negImgWidth+"px";
		}
	} catch(e) {
		ErrorHandler('{DD1D25A4-8E43-455b-91A3-8D86917894F7}', "checkImagePosition()", e);
		alert('An Error occured. It has been logged.')
	}
}

function toggleEmail() {
 	try {
		if($('lightboxContentEmail').style.display == 'none') {
			Effect.Fade('lightboxContentDefault', {duration: 0.2});
			Effect.Appear('lightboxContentEmail');
		}
		else {
			Effect.Fade('lightboxContentEmail', {duration: 0.2});
			Effect.Appear('lightboxContentDefault');
		}
	} catch(e) {
		ErrorHandler('{D275F6C9-B6B6-4c4f-B2E2-2704425C1D50}', "toggleEmail()", e);
		alert('An Error occured. It has been logged.\nCan not hide/shop the Email form.')
	}
}


function GetProductFromWindowOpner()
{
 	try {
		oWinDoc = window.opener.document;
		document.getElementById('ReplacePrint').innerHTML = oWinDoc.getElementById('lightboxOverlay').outerHTML + oWinDoc.getElementById('lightboxContainer').outerHTML;
		var oContent = document.getElementById('lightboxContainer');
		oContent.style.left = '10px';
		oContent.style.marginLeft = '0px';
	
		window.print();
	} catch(e) {
		ErrorHandler('{46D84D87-3944-4639-86D6-C1D98091C026}', "GetProductFromWindowOpner()", e);
		alert('An Error occured. It has been logged.')
	}
}

function OpenProductForPrint() {


	oNewWindow = window.open('/SHOP/Print/Pages/Print.aspx?product=', 'Print', '');
}
/*
function VariantChange(obj) {
	var colorSelector;
	var lengthSelector;
	var strengthSelector;
	var sizeSelector;
	var selectedValue = obj.options[obj.selectedIndex].innerText;
	var selectedObjType = '';
	if(obj.id == 'colorSelector') {
		colorSelector = obj
		selectedObjType = 'color';
	} else {
		colorSelector = document.getElementById('colorSelector')
	}
	if(obj.id == 'lengthSelector') {
		lengthSelector= obj
		selectedObjType = 'length';
	} else {
		lengthSelector= document.getElementById('lengthSelector')
	}
	if(obj.id == 'strengthSelector') {
		strengthSelector= obj
		selectedObjType = 'strength';
	} else {
		strengthSelector= document.getElementById('strengthSelector')
	}
	if(obj.id == 'sizeSelector') {
		sizeSelector= obj
		selectedObjType = 'size';
	} else {
		sizeSelector= document.getElementById('sizeSelector')
	}

	if(colorSelector.id != obj.id)
		ClearOptions(colorSelector);
	if(lengthSelector.id != obj.id)
		ClearOptions(lengthSelector);
	if(strengthSelector.id != obj.id)
		ClearOptions(strengthSelector);
	if(sizeSelector.id != obj.id)
		ClearOptions(sizeSelector);
		
for(i=0; Variant_array.length; i++) {
	var oVariant = Variant_array[i];
	var Continue = false;
	if(selectedType == 'color') {
		if(oVariant.color == selectedValue;)
			Continue = true;
	} 
	if(selectedType == 'length') {
		if(oVariant.length == selectedValue;)
			Continue = true;
	} 
	if(selectedType == 'strength') {
		if(oVariant.strength == selectedValue;)
			Continue = true;
	} 
	if(selectedType == 'size') {
		if(oVariant.size == selectedValue;)
			Continue = true;
	} 

	if(Continue = true) {
		if(selectedType == 'color') {
			if(selectedValue = oVariant.color) {
				AddToOptionList(sizeSelector, oVariant.size, oVariant.size); 
				AddToOptionList(strengthSelector, oVariant.strength, oVariant.strength); 
				AddToOptionList(lengthSelector, oVariant.length, oVariant.length); 
			}
		}
		if(selectedType == 'size') {
			if(selectedValue = oVariant.size) {
				AddToOptionList(colorSelector, oVariant.color, oVariant.color); 
				AddToOptionList(strengthSelector, oVariant.strength, oVariant.strength); 
				AddToOptionList(lengthSelector, oVariant.length, oVariant.length); 
			}
		}
		if(selectedType == 'strength') {
			if(selectedValue = oVariant.strength) {
				AddToOptionList(sizeSelector, oVariant.size, oVariant.size); 
				AddToOptionList(strengthSelector, oVariant.strength, oVariant.strength); 
				AddToOptionList(lengthSelector, oVariant.length, oVariant.length); 
			}
		}
		if(selectedType == 'color') {
			if(selectedValue = oVariant.color) {
				AddToOptionList(sizeSelector, oVariant.size, oVariant.size); 
				AddToOptionList(strengthSelector, oVariant.strength, oVariant.strength); 
				AddToOptionList(lengthSelector, oVariant.length, oVariant.length); 
			}
		}
	}

	
		
//alert('VariantChange' + obj.id)

}

function obVariant(id, color, length, strenght, size){ 
 this.id = id; 
 this.color = color; 
 this.length = length; 
 this.strenght = strenght; 
 this.size = size; 
}

var Variant_array = new Array();

function InsertInVariant() {

}

function ClearVariantOptions() {
}
*/

function ColorVariationChange(obj, currency) { 
 	try {
 		zoomOutProductImage();
 		var id = obj.options[obj.selectedIndex].value
 		document.getElementById('currentid').value = id;
		//var color = document.getElementById('HiddenSelectedColor').value;
		ret = PilgrimService.GetVariantProduct(id, currency, OnComplete, OnTimeOut, OnError);
	} catch(e) {
		ErrorHandler('{921ABA1B-163D-4b76-A802-ACCE6614F911}', "clickme()", e);
		alert('An Error occured. It has been logged.')
	}
}



function clickme(id, currency) { 
	//debugger;
 	try {
	 	zoomOutProductImage();
		var color = document.getElementById('HiddenSelectedColor').value;
		//ret = PilgrimService.GetProduct(id, currency, color, OnComplete, OnTimeOut, OnError);
		ret = PilgrimService.GetVariantProduct(id, currency, OnComplete, OnTimeOut, OnError);
	} catch(e) {
		ErrorHandler('{921ABA1B-163D-4b76-A802-ACCE6614F911}', "clickme()", e);
		alert('An Error occured. It has been logged.')
	}
}

function OnComplete(arg) {
	SetProductData(arg)
	showLightbox();
}

function OnCompletePage(arg) {
	SetProductData(arg)
}


function SetProductData(arg)
{
		//document.write(arg);
		//return;

//debugger;
	try {
	
		arg = arg.replace(/&amp;/g, '&');	
		var argVariant = arg;
		var argColor = arg;
		var myregexpVariant = new RegExp("(<variant id=\")(.*?)(</variant>)");
		
		var matchVariant = myregexpVariant.exec(argVariant );
		var VarianSelector= document.getElementById('VarianSelector');
		var VariantSelectorLable= document.getElementById('VariantSelectorLable');
		var VariantDiv= document.getElementById('VariantDiv');
		
		ClearOptions(VarianSelector);
	
		if(matchVariant== null){
			VariantDiv.style.display='none';
		} else {
			VariantDiv.style.display='';
		}
			
		
		while (matchVariant!= null) {
			var myregexpVariantUnit = new RegExp("(.*)\"><(.*?)>(.*?|.\\d)</");
			var matchVariantUnit = myregexpVariantUnit.exec(matchVariant[2]);
		
			if(matchVariantUnit.length==4) {
				
				VariantSelectorLable.innerHTML = matchVariantUnit[2];
				AddToOptionList(VarianSelector, matchVariantUnit[1], matchVariantUnit[3]);

			}
			argVariant = argVariant.substring(matchVariant.index + matchVariant[0].length);
			matchVariant= myregexpVariant.exec(argVariant);
		}
		
		
		var myregexpColor = new RegExp("<colorVariant id=\"(.*?)</colorVariant>");
		
		var matchColor = myregexpColor.exec(argColor );
		var ColorSelector= document.getElementById('ColorSelector');
		ClearOptions(ColorSelector);
	
		while (matchColor!= null) {
			var myregexpColorUnit = new RegExp("(.*)\"><.*?>(.*?|.\d)</");
			var matchColorUnit = myregexpColorUnit.exec(matchColor[1]);
		
			if(matchColorUnit.length==3) {
				AddToOptionList(ColorSelector, matchColorUnit[1], matchColorUnit[2]);

			}
//			argColor = argColor.substring(matchColor.lastIndex);
			argColor = argColor.substring(matchColor.index + matchColor[0].length);

			matchColor= myregexpColor.exec(argColor);
		}

		var regExPriceCurrency = new RegExp("<price.*currency=\"(.*?)\".*>(.*)</price>");
		var matchPriceCurrency = regExPriceCurrency.exec(arg);
		var currency = matchPriceCurrency [1];
		var price = matchPriceCurrency[2];
		//var currency = arg.substring(arg.indexOf('<price currency="', 0) + 17, arg.indexOf('"', arg.indexOf('<price currency="', 0)+18));
	
		// Find discount if avaiable			
		var curPriceDO= document.getElementById('curPriceDO');
		var curPriceDP= document.getElementById('curPriceDP');
		var curPriceD= document.getElementById('curPriceD');
		var curPrice= document.getElementById('curPrice');
		
		var regExDiscountPct = new RegExp("discountPct=\"(.*?)\"");
		if (regExDiscountPct.test(arg))
		{
			//alert("Discount found");
			var matchDiscountPct = regExDiscountPct.exec(arg);
			var discountPct = matchDiscountPct[1];
			//alert("DiscountPct: " + discountPct);
			
			var regExDiscountAmount = new RegExp("discountAmount=\"(.*?)\"");
			var matchDiscountAmount = regExDiscountAmount.exec(arg);
			var discountAmount = matchDiscountAmount[1];
			
			var regExOldPrice = new RegExp("oldPrice=\"(.*?)\"");
			var matchOldPrice = regExOldPrice.exec(arg);
			var oldPrice = matchOldPrice[1];
			
			curPriceDO.innerHTML = formatCurrency(oldPrice);
			curPriceDP.innerHTML = "&nbsp;(-" + discountPct + "%) ";
			//curDiscount.style.display = "";
			curPriceDO.style.display = "";
			curPriceDP.style.display = "";
			curPriceD.style.display = "";
			curPrice.style.display = "none";
		}
		else
		{
			//alert("No discount found";
			curPriceDO.style.display = "none";
			curPriceDP.style.display = "none";
			curPriceD.style.display = "none";
			curPrice.style.display = "";
		}
		
		SetCurrencyDD(currency);
		
		//document.getElementById('curPrice').innerHTML = formatCurrency(arg.substring(iStartTag + iStartLenght, iStopTag)) + ' ' + currency;
		curPrice.innerHTML = formatCurrency(price) + " " + currency;
		curPriceD.innerHTML = formatCurrency(price) + " " + currency;
//		if (curDiscount.style.display == "")
//			document.getElementById('curPrice').innerHTML = "&nbsp;" + document.getElementById('curPrice').innerHTML;
		
		var regExProductNo = new RegExp("<product.*displayId=\"(.*?)\"");
		var matchProductNo = regExProductNo .exec(arg);
		var cProductNo = matchProductNo [1];

		document.getElementById('curProductNo').innerHTML = cProductNo ;	//arg.substring(arg.indexOf('<product id="', 0) + 13, arg.indexOf('"', arg.indexOf('<product id="', 0) + 14));
			
		var sCategory = "";
		var regExCategory = new RegExp("<category.*>(.*)</category>");
		if (regExCategory .test(arg))
		{
			//alert("Discount found");
			var matchCategory = regExCategory .exec(arg);
			sCategory = matchCategory[1];
			//document.getElementById('curSeries').innerHTML = arg.substring(arg.indexOf('<category id="', 0) + 14, arg.indexOf('">', arg.indexOf('<category id="', 0)));
			//<category.*>(.*)</category>
		}
		document.getElementById('curSeries').innerHTML = sCategory ;
			
		document.getElementById('ProductTitle').innerHTML = arg.substring(arg.indexOf('<title>', 0) + 7, arg.indexOf('</title>', 0));
		
		document.getElementById('curProductText').innerHTML = arg.substring(arg.indexOf('<description>', 0) + 13, arg.indexOf('</description>', 0));
		
		var ImageMedium = arg.substring(arg.indexOf('<picture type="medium">', 0) + 23, arg.indexOf('</picture>', arg.indexOf('<picture type="medium">', 0)));
		var Image = arg.substring(arg.indexOf('<picture type="large">', 0) + 22, arg.indexOf('</picture>', arg.indexOf('<picture type="large">', 0)));
		document.getElementById('productImage').src = ImageMedium;
		document.getElementById('productImageBig').src = Image;
			
		var outOfStock = arg.substring(arg.indexOf('outOfStock="', 0) + 12, arg.indexOf('outOfStock="', 0)+ 17);
		
		if(outOfStock == 'false') {
			
			document.getElementById('curStock').innerHTML = 'In Stock';
						document.getElementById('AddToBasketLink').style.display = '';
		} else {

			document.getElementById('curStock').innerHTML = 'Out of Stock';
  			document.getElementById('AddToBasketLink').style.display = 'none';
		}

		var CounterStr = 'Count' + document.getElementById('currentid').value;
		if(document.getElementById(CounterStr)!=null)
			document.getElementById('CurCurentCount').innerHTML = document.getElementById(CounterStr).innerHTML;
			
		document.getElementById('CurTotalCount').innerHTML = document.getElementById('TotalCount').innerHTML;
		
		/*var VariantStr = arg.substring(arg.indexOf('<variant', 0), arg.lastIndexOf('</variant>')+10);
		var VarianSelector= document.getElementById('VarianSelector');
	
		ClearOptions(VarianSelector);
	*/
		var subVariantStr;
		var Contiue = true;
		var strSize = '';
	/*
		if(VariantStr.length > 0)
		{
			while(Contiue == true)
			{
				subVariantStr = VariantStr.substring(VariantStr.indexOf('<variant', 0), VariantStr.indexOf('</variant>')+10);
				VariantStr = VariantStr.replace(subVariantStr,'');
				var subSubVariantStr;
				var FinalStr = "";
				var id;
				var Continue2 = true;
				var index = 1;
				var lindex = 1;
				var sindex = 0;
				
				if(subVariantStr.length > 0)
				{
					id = subVariantStr.substring(subVariantStr.indexOf('<variant id="', 0) + 13, subVariantStr.indexOf('"', subVariantStr.indexOf('<variant id="', 0) + 14));	
					sindex = subVariantStr.indexOf('"', subVariantStr.indexOf('<variant id="', 0) + 14) + 2;
					var counter = 0;
					while(index > 0 && lindex > 0)
					{
						index = subVariantStr.indexOf('>', sindex) + 1;
						lindex = subVariantStr.indexOf('</', index)
						if(FinalStr.length > 0 && lindex > 0)
							FinalStr += '/';
						if(lindex > 0 && index > 0)
						{
							if(counter != 0)
								FinalStr += subVariantStr.substring(index, lindex);	
							
							lindex = subVariantStr.indexOf('>', lindex)
							sindex = lindex + 1;
							counter++;
						}
						if(strSize.length < FinalStr.length)
							strSize = FinalStr ;
					}
				}
				AddToOptionList(VarianSelector, id, FinalStr);
	
				if(VariantStr.length < 10)
					Contiue = false;
			}
	
		}
			if((strSize.length * 10) > 70){
				VarianSelector.style.width = (strSize.length * 9) + 'px';
				document.getElementById('selectQuantity').style.width = (strSize.length * 9) + 'px';
	 		} else {
				VarianSelector.style.width = '70px';
				document.getElementById('selectQuantity').style.width = '70px';
			}
			
	*/	
	// set the top position of the layer to display, relative to the scrollposition
			var sSize = '150px';
			var aa = document.getElementsByTagName('select');
			for(var i=0; i < aa.length; i++){
				var aaname = aa[i].id;
				if(aaname.indexOf("ColorSelector") > -1 && aaname.indexOf("SPWebPartManager") > -1) {
					sSize = aa[i].offsetWidth;
					break;
				}
			}
			document.getElementById('selectQuantity').style.width = sSize;
			document.getElementById('ColorSelector').style.width = sSize;
			document.getElementById('VarianSelector').style.width = sSize;

			var offset = GetVerticalScrollPosition();
			var lightboxContainer = document.getElementById('lightboxContainer');
			lightboxContainer.style.top = 127 + offset + "px";
	} catch(e) {
		ErrorHandler('{4CD286D4-6B90-4485-99A7-0516B05E9FA6}', "SetProductData()", e);
		alert('An Error occured. It has been logged.\nCould not load the productdata. Try again later.')
	}
}

function GetVerticalScrollPosition()
{
	var y;
	if (self.pageYOffset) // all except Explorer
	{
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		y = document.body.scrollTop;
	}
	return y;
}

function GetHorisontalScrollPosition()
{
	var x;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
	}
	return x;
}


function SetCurrencyDD(strCurrency) {

   // Always clear an option list from the last entry to the first
	try {
	   	var OptionList = document.getElementById('ProductCurrencySelector');
	   	for (x = OptionList.length-1; x >= 0; x--) {
	   	if(OptionList[x].innerHTML == strCurrency)
		  	OptionList.selectedIndex = x;
	   	}
   	} catch(e) {
		ErrorHandler('{44EDA114-0C89-4aa9-97CD-22A905C68A83}', "SetCurrencyDD()", e);
		alert('An Error occured. It has been logged.\nCan not set Currency data.')
	}
}


function ClearOptions(OptionList) {

   // Always clear an option list from the last entry to the first
   	try {
		for (x = OptionList.length; x >= 0; x--) {
    	  OptionList[x] = null;
   		}
   	} catch(e) {
		ErrorHandler('{AF5E8F8E-ACA0-4d67-B529-9D7898F3F318}', "ClearOptions()", e);
		alert('An Error occured. It has been logged.')
	}
}

function AddToOptionList(OptionList, OptionValue, OptionText) {
   // Add option to the bottom of the list
   	try {
		OptionList[OptionList.length] = new Option(OptionText, OptionValue);
	} catch(e) {
		ErrorHandler('{BB52037A-763D-4fc3-B58F-A379FB883468}', "AddToOptionList()", e);
		alert('An Error occured. It has been logged.')
	}
}

function OnTimeOut(arg) {
	alert("OnTimeOut " + arg);
	alert("TimeOut encountered..");
}


function OnError(arg) {
	alert("OnError " + arg);
	alert("Error encountered..");
}

function getCurrentOriginalID() {
//debugger;
	//alert(document.getElementById('currentid').value);
	OptionList = document.getElementById('ColorSelector');
	var id;
	for (x = 0; x < OptionList.length; x++) {
		if(document.getElementById('Count' + OptionList[x].value) != null) {
			id = OptionList[x].value;
	   	  //alert(OptionList[x].value);
		}
	}
	return id;
}

function ClickMePage(str, currency)
{
 	try {
	 	zoomOutProductImage();
 		var shoppingLinks = document.getElementById('shoppingLinks');
		var color = document.getElementById('HiddenSelectedColor').value;
		var currentid = document.getElementById('currentid').value;
		var id;
		currentid = getCurrentOriginalID();
		if(currentid != '')
		{

			if(str=='next')
			{
				if(document.getElementById('next' + currentid))
					id = document.getElementById('next' + currentid).innerHTML;
			} else {
				id = document.getElementById('prev' + currentid).innerHTML;
			}
			var Continue = true;
			if(id == "" || id == null) {
					Continue = false;
			}
			if(Continue) {
				//ret = PilgrimService.GetProduct(id, currency, color, OnCompletePage, OnTimeOut, OnError);
				ret = PilgrimService.GetVariantProduct(id, currency, OnCompletePage, OnTimeOut, OnError);

				document.getElementById('currentid').value = id;
			} else {
				alert('No more products this way.');
			}
			shoppingLinks.style.display = "none";
		}
	} catch(e) {
		ErrorHandler('{5785AF1E-42F5-4f05-AC9D-626D5BD03215}', "ClickMePage()", e);
		alert('An Error occured. It has been logged.\nCould not get Product Data.\nTry again later.')
	}	
}

function ClickMeUpdate(curControl)
{
	try {
		zoomOutProductImage();
	 	var color = document.getElementById('HiddenSelectedColor').value;
		var currency = curControl.options[curControl.selectedIndex].innerHTML;
		var currentid = document.getElementById('currentid').value;
		//ret = PilgrimService.GetProduct(currentid, currency, color, OnCompletePage, OnTimeOut, OnError);
		ret = PilgrimService.GetVariantProduct(currentid, currency, OnCompletePage, OnTimeOut, OnError);

		return(true);
	} catch(e) {
		ErrorHandler('{CB3156E3-E0F4-4308-BE54-FE5C066893CF}', "ClickMeUpdate()", e);
		alert('An Error occured. It has been logged.\nCould not get Product Data.\nTry again later.')
	}
}

function AddToBasket(currency)
{
//debugger;
	try {
		if(ActiveShop == false)
		{
			ActiveShop = true;

			var currentid = document.getElementById('currentid').value;
			var conSelectQuantity = document.getElementById('selectQuantity');
			var quantity= conSelectQuantity.SelectedValue;
			var quantity = conSelectQuantity[conSelectQuantity.selectedIndex].value;
			var conVarianSelector = document.getElementById('VarianSelector');
			var variantId;
			if(conVarianSelector.selectedIndex < 0) {
				variantId = null;
			} else {
				variantId =	conVarianSelector[conVarianSelector.selectedIndex].value;
			}			
			ret = PilgrimService.AddToBasket(currentid, variantId, quantity, currency, OnBasketUpdate, OnTimeOut, OnError);
		} else {
			alert('The shop is busy. You may have clicked twice or activated 2 simultaneously activities. Wait a few seconds.');
		}
	} catch(e) {
		ActiveShop = false;
		ErrorHandler('{6D84B368-9AD9-4450-A53B-7E73401CA389}', "AddToBasket()", e);
		alert('An Error occured. It has been logged.\nCould not at to basket.\nTry again later.')
	}
}

function OnBasketUpdate(arg)
{
	if(arg != '0')
	{
		try {
			Effect.Pulsate('topBasket'); 
			basketCount(parseInt($('selectQuantity').value)); 
			Effect.Appear('shoppingLinks', {duration: 0.3});
		} catch(e) {
			ErrorHandler('{3CEA0C62-0CC6-4434-877E-242524B790D6}', "OnBasketUpdate()", e);
			alert('An Error occured. It has been logged.')
		}
	} else {
		alert('An Error occured. It has been logged.\nCould not at to basket.\nTry again later.')
	}
	ActiveShop = false;
}

function formatCurrency(num) {
	try {
		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);
	} catch(e) {
		ErrorHandler('{8218C5AD-B5EF-4732-9FDE-9D8C934D2A22}', "formatCurrency()", e);
		alert('An Error occured. It has been logged.\nCould not format the currency.')
		return num;
	}
}

function imgfade() {
//debugger;
	try {
		Effect.Appear('img1');
		setTimeout("Effect.Appear('img2')", 4000);
		setTimeout("Effect.Fade('img2')", 8000);
		setTimeout("imgfade()", 12000);
	} catch(e) {
		ErrorHandler('{EEABF269-0239-435d-8DC5-7F7CF400F076}', "imgfade()", e);
		//alert('An Error occured. It has been logged.\nCould not fade og rotate image.')
	}
}
	
var OriginalOnload;

function SetOnLoad() {
	try {
		OriginalOnload  = document.body.onload; 
		document.body.onload = StartImgfade;
	} catch(e) {
		ErrorHandler('{47AA32BA-1AC5-4bb4-87B7-48EDF530150F}', "SetOnLoad()", e);
		alert('An Error occured. It has been logged.')
	}
}

function StartImgfade() {
	try {
		if (OriginalOnload) OriginalOnload();  
		//first run the OriginalOnload
		// Custom onload code can now follow
		imgfade();
	} catch(e) {
		ErrorHandler('{0BCC2EE8-D9A3-47b0-8C0F-ECDD19A99A41}', "StartImgfade()", e);
		alert('An Error occured. It has been logged.\nCould not fade og rotate image.')
	}
}

function GetProductFromWindowOpner()
{
	try {
		oWinDoc = window.opener.document;
		document.getElementById('ReplacePrint').innerHTML = oWinDoc.getElementById('lightboxOverlay').outerHTML + oWinDoc.getElementById('lightboxContainer').outerHTML;
		var oContent = document.getElementById('lightboxContainer');
		oContent.style.left = '10px';
		oContent.style.marginLeft = '0px';
		
		window.print();
	} catch(e) {
		ErrorHandler('{FFA0E8CE-72ED-4626-BECA-01D791B27A44}', "GetProductFromWindowOpner()", e);
		alert('An Error occured. It has been logged.')
	}
}

function OpenProductForPrint()
{
	oNewWindow = window.open('/SHOP/Print/Pages/Print.aspx?product='+document.getElementById('currentid').value+'&Quantity='+document.getElementById('selectQuantity').value, 'Print', '');
}

function SendEmailToFriend()
{
//debugger;
	try {
		var location = document.location;	//
		var currentid = document.getElementById('currentid').value;
		var Fname = document.getElementById('txtFriendName').value;
		var Name = document.getElementById('txtYourName').value;
		var FEmail = document.getElementById('txtFriendEmail').value;
		var message = document.getElementById('txtSendFriendMessage').value;
		var conVarianSelector = document.getElementById('VarianSelector');
		var variantId;
		if(conVarianSelector.selectedIndex < 0) {
			variantId =	null;
		} else {
			variantId =	conVarianSelector[conVarianSelector.selectedIndex].value;
		}
		var currency = document.getElementById('CurrentCurrency').value;	
		var Continue = true;
		
		var Fromname = document.getElementById('strFromName').value;
		var xslt = document.getElementById('strXsltFile').value;
		var FromEmail = document.getElementById('strFromEmail').value;
		var subject = document.getElementById('strSubject').value;
	
	
		var FnameError = document.getElementById('txtFriendNameError');
		var NameError = document.getElementById('txtYourNameError');
		var FEmailError = document.getElementById('txtFriendEmailError');
	
	
		if(Fname == '') {
			Continue = false;
			FnameError.style.display = '';
		} else {
			FnameError.style.display = 'none';				
		}
		if(Name == '') {
			Continue = false;
			NameError .style.display = '';
		} else {
			NameError .style.display = 'none';				
		}
		if(testEmail(FEmail) == false) {
			Continue = false;
			FEmailError .style.display = '';
		} else {
			FEmailError .style.display = 'none';				
		}
		if (Continue == true)
		{
			ret = PilgrimService.SendToFriend(currency, variantId, currentid, message, location.href, Fname, Name, FEmail, OnSendToFriend, OnTimeOut, OnError);
		}
	} catch(e) {
		ErrorHandler('{03816E33-7E8B-4392-8EAC-4828A7997304}', "SendEmailToFriend()", e);
		alert('An Error occured. It has been logged.\nCould not send email')
	}
}


function check_email(e) {
	try {
		ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";

		for(i=0; i < e.length ;i++){
			if(ok.indexOf(e.charAt(i))<0){ 
				return (false);
			}	
		} 
	
		if (document.images) {
			re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
			re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
			if (!e.match(re) && e.match(re_two)) {
				return (false);		
			} 
		}
	} catch(e) {
		ErrorHandler('{BDA010F5-AC03-4737-AA2A-94EA5CD1131C}', "testEmail()", e);
		alert('An Error occured. It has been logged.\nThe email check failed.')
		return true;
	}

}

function testEmail(src) {
	try {
	     var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	     var regex = new RegExp(emailReg);
	     return regex.test(src);
    } catch(e) {
		ErrorHandler('{BDA010F5-AC03-4737-AA2A-94EA5CD1131C}', "testEmail()", e);
		alert('An Error occured. It has been logged.\nThe email check failed.')
		return false;
	}
}


function OnSendToFriend(arg)
{
	if(arg!='0') {
		alert('Mail Sent!');
		toggleEmail();
	} else {
		alert('An Error occured. It has been logged.\nThe Email was not send.')
	}
}


function RemoveProduct(LineGuid, currency)
{
	try {
		ret = PilgrimService.RemoveFromBasket(LineGuid, currency, OnRemoveFromBasket, OnTimeOut, OnError);
	} catch(e) {
		ErrorHandler('{3A652269-836A-4bea-9315-DB16F003A5A4}', "RemoveProduct()", e);
		alert('An Error occured. It has been logged.\nThe product could not be removed.\nTry again later')
	}
}

function OnRemoveFromBasket(arg)
{
	if(arg == '1') {
		window.location.reload();
	} else {
		alert('An Error occured. It has been logged.\nThe product could not be removed.\nTry again later')
	}
}


//function ChangeQuntity(LineItemId, this, currency)
function ChangeQuntity(LineGuid, obj, currency)
{
	try {
		ret = PilgrimService.SetQuantity(LineGuid, obj.options[obj.selectedIndex].innerHTML, currency, OnChangeQuntity, OnTimeOut, OnError);
	} catch(e) {
		ErrorHandler('{C7491DDD-186B-47bd-94E1-447AA4BF1F0F}', "ChangeQuntity()", e);
		alert('An Error occured. It has been logged.\nCould not change the quantity.\nTry again later')
	}

}

function OnChangeQuntity(arg)
{
	if(arg == '1') {
		window.location.reload();
	} else {
		alert('An error occured. It has been logged.\nCould not change the quantity.\nTry again later');
	}
}

function PaymentDetailsWhatIs(obj)
{
	try {
		if ($('whats_securitycode').style.display == '') 
		{
			obj.innerHTML='Whats this?';
		} else {
			obj.innerHTML='Hide example';
		} 
		new Effect.toggle($('whats_securitycode'),'blind');
	} catch(e) {
		ErrorHandler('{00067C82-601B-48c3-8445-847945F706B9}', "PaymentDetailsWhatIs()", e);
		alert('An error occured. It has been logged.\nCould not hide or unhide Security code description.');
	}
}

function PaymentDoPopup() 
{
	try {
		var newwin = null;
		newwin = window.open('', 'paywin', 'scrollbars,status,width=600,height=730');
		newwin.focus();
		return true;
	} catch(e) {
		ErrorHandler('{602D07CD-324F-45f9-B125-F6EA0A828DBA}', "PaymentDoPopup()", e);
		alert('An error occured. It has been logged.\nCould not open the payment window.');
	}
}


function Checkout(currency)
{
	try {
		if(ActiveShop == false)
		{
			ActiveShop = true;
			var PaymentSecurityCode = document.getElementById('PaymentSecurityCode').value;
			var PaymentYearobj = document.getElementById('PaymentYear');
			var PaymentYear = PaymentYearobj.options[PaymentYearobj.selectedIndex].innerHTML
			var PaymentMonthobj = document.getElementById('PaymentMonth');
			var PaymentMonth = PaymentMonthobj.options[PaymentMonthobj.selectedIndex].innerHTML
			var PaymentCardNumber = document.getElementById('PaymentCardNumber').value;
			var errorString = "";
			
			if (PaymentCardNumber.length == 0)
				errorString = "Please enter your card number";
			else if (PaymentSecurityCode.length == 0)
				errorString = "Please enter your card security code";
			else
				ret = PilgrimService.Checkout(PaymentCardNumber, PaymentSecurityCode, PaymentYear, PaymentMonth, currency, OnCheckOut, OnTimeOut, OnError);
		
			ActiveShop = false;
			if (errorString.length > 0)
				alert(errorString);	
		} else {
			alert('The shop is busy. You may have clicked twice or activated 2 simultaneously activities. Wait a few seconds.');
		}
	} catch(e) {
		ErrorHandler('{9BF7D9B7-4E1D-44e2-9798-099DDD4CF175}', "Checkout()", e);
		alert('An error occured. It has been logged.\nCould not Checkout.');
	} 
}

function OnCheckOut(arg) {
	ActiveShop = false;
	var strError = '';
	if(arg == null || arg == '') {
		strError = 'Unspecified Error 1';
	} else {
		if(arg == '2') {
			strError = 'An error occured. Your may not have been compleeted.\nTry again or contact Pilgrim.';
		} else if(arg == '1') {
			strError = 'Payment autorization failed.\nPlease check your card number and try again!';
		} else if(arg.length < 2) {
			strError = 'Unspecified Error 3';
		}
	}
	if(strError == '') {
		window.location = '/Shop/Pages/ReceiptPage.aspx?ReceiptID=' + arg;
	} else {
		alert(strError);
	}
}

function GiftWrap(obj, id)
{
	try {
		ret = PilgrimService.SetGiftWrap(id, obj.checked, OnGiftWrap, OnTimeOut, OnError);
		return true;
	} catch(e) {
		ErrorHandler('{902906B6-ECC7-4242-8867-0954C93AB00D}', "GiftWrap()", e);
		alert('An error occured. It has been logged.\nCould not register GiftWrap.');
	} 	
}

function OnGiftWrap(arg)
{
	if(arg == 1) {
	} else if (arg=='0') {
		alert('GiftWrap did not register\nthe page will refresh!');
		window.location.reload();
	}else {
		alert('GiftWrap did not register\nthe page will refresh!');
		window.location.reload();
	}
}

function SelectCountry(obj)
{
	try {
		ret = PilgrimService.GetCities(obj, OnSelectCountry, OnTimeOut, OnError);
		return true;
	} catch(e) {
		ErrorHandler('{45823A27-C840-42b2-9387-3D6A402FD77F}', "SelectCountry()", e);
		alert('An error occured. It has been logged.\nCould not load cities.');
	} 	
}

function SelectCity(obj)
{
	try {
		ret = PilgrimService.GetGroups(obj, OnSelectCity, OnTimeOut, OnError);
		return true;
	} catch(e) {
		ErrorHandler('{45A10BC7-630F-4661-B265-62AA9FA9A949}', "SelectCity()", e);
		alert('An error occured. It has been logged.\nCould not load product groups.');
	} 	
}

function GetShops()
{
	try {
		/*
		var country = document.getElementById('CountrySelector');
		var city = document.getElementById('CitySelector');
		var group = document.getElementById('ProductSelector');
		
		var countryStr = country.options[country.selectedIndex].value
		var cityStr = city.options[city.selectedIndex].value
		var groupStr = group.options[group.selectedIndex].value
		
		ret = PilgrimService.GetShops(countryStr, cityStr, groupStr, OnGetShop, OnTimeOut, OnError);
		return true;
		*/
		var country = document.getElementById('CountrySelector');
		var city = document.getElementById('CitySelector');
		//var group = document.getElementById('ProductSelector');
		
		var countryStr = country.options[country.selectedIndex].value
		var cityStr = city.options[city.selectedIndex].value
		//var groupStr = group.options[group.selectedIndex].value
		
		ret = PilgrimService.GetShopsTemp(countryStr, cityStr, OnGetShop, OnTimeOut, OnError);
		return true;

	} catch(e) {
		ErrorHandler('{39C14F7B-AE45-49f7-B246-4A04044F6583}', "GetShops()", e);
		alert('An error occured. It has been logged.\nCould not load stores.');
	} 
}

function OnSelectCountry(arg)
{
	if(arg == "0") {
		alert('An Error occured. It has been logged.')
	} else if(arg.length > 1) {
		try {
			var OptionList = document.getElementById('CitySelector');
			var selectText = OptionList[0].text;
			ClearOptions(OptionList);
			
			var mySplitResult = arg.split(",");
			
			AddToOptionList(OptionList, '', selectText);
			
			for(i = 0; i < mySplitResult.length; i++)
				AddToOptionList(OptionList, mySplitResult[i], mySplitResult[i])
			sortDropDownList('CitySelector');
			
			var CountryList = document.getElementById('CountrySelector');
			urchinTracker("/FINDASTORE.aspx_" + CountryList[0].text); 

		 	//GetShops();
		} catch(e) {
			ErrorHandler('{B7EDDFD2-6D5E-491d-B291-B71D18EBF795}', "OnSelectCountry()", e);
			alert('An error occured. It has been logged.\nCould not load cities.');
		} 
					
	} else{
		alert('No shop in that country')
	}
	
}

function OnSelectCity(arg)
{
//debugger;
	if(arg == "0") {
		alert('An Error occured. It has been logged.')
//	} else if(arg.length > 1) {
	} else if(arg.length > 1 ||arg == '') {

		try {

			var OptionList = document.getElementById('ProductSelector');
			if(OptionList != null)
			{
				var selectText = OptionList[0].text;
				ClearOptions(OptionList);
				
				var mySplitResult = arg.split(",");
				
				AddToOptionList(OptionList, '', selectText);
				
				for(i = 0; i < mySplitResult.length; i++)
					AddToOptionList(OptionList, mySplitResult[i], mySplitResult[i])
			 }
			 GetShops();
			 
			  var CountryList = document.getElementById('CountrySelector');
			var CityList = document.getElementById('CitySelector');
			urchinTracker("/FINDASTORE.aspx_" + CountryList[0].text + '_' + CityList[0].text); 

			 
		} catch(e) {
			ErrorHandler('{26DCA92A-F3BB-41ef-B73F-679A722AC97F}', "OnSelectCity()", e);
			alert('An error occured. It has been logged.\nCould not load product groups.');
		} 
		 			
	} else{
		alert('No shop in that city')
	}
}

function OnGetShop(arg)
{

	try
	{
		if(arg == '0')
			alert('An Error occured. It has been logged.')
		else
			document.getElementById('outputarea').innerHTML = arg;
	} catch(e) {
		ErrorHandler('{26DCA92A-F3BB-41ef-B73F-679A722AC97F}', "OnSelectCity()", e);
		alert('An error occured. It has been logged.\nCould not load stores.');
	} 
}

function ClearOptions(OptionList) {

   // Always clear an option list from the last entry to the first
   for (x = OptionList.length; x >= 0; x--) {
      OptionList[x] = null;
   }
}

function ErrorHandler(ID, Function, e) {
	var Name = e.name;
	var Description = e.description;
	var message = e.message;
	var Url = document.location.href;
	var Number = (e.number & 0xFFFF) + "";
	ret = PilgrimService.HandleJsException(ID, Name, Description, message, Number, Url, Function, OnErrorLogginComplete, OnTimeOut, OnError);
}

function OnErrorLogginComplete()
{
	//ToDo: What to do if WebService Error logging dos not work
}

//var bQuantity = 0;
function basketCount(quantity) {
	try {
		var bQuantity = parseInt($('bQuantity').innerHTML)
		if(quantity > 0) {
			bQuantity = bQuantity + quantity;
			if(bQuantity < 10) {
				$('bQuantity').innerHTML = "0"+bQuantity;
			}
			else {
				$('bQuantity').innerHTML = bQuantity + "";
			}
		}
	} catch(e) {
		ErrorHandler('{CA09598C-0E70-4d97-B436-860265E1DB6A}', "basketCount()", e);
		alert('An error occured. It has been logged.\nThe visual basket det not update.\nManualy refresh the page..');
	} 
}

function sortDropDownList(id) {	
	var obj = document.getElementById(id);	
	var values = new Array();	
	for(var i = 0; i < obj.options.length; i++) {
		values.push(obj.options[i].innerHTML + "--xx--" + obj.options[i].value);	
	}
	 	
	values = values.sort(); 	
	
	for(var i = 0; i < values.length; i++) {		
		valueArray = values[i].split('--xx--');		
		obj.options[i].innerHTML = valueArray[0];		
		obj.options[i].value = valueArray[1];	
	}
}


function logginHandler(ID, Function, Name, Description, message, Number, Url) {
	ret = PilgrimService.HandleJsException(ID, Name, Description, message, Number, Url, Function, OnErrorLogginComplete, OnTimeOut, OnError);
}



function SetutmSetTrans()
{

//debugger;

logginHandler("ID", "SetutmSetTrans", "SetutmSetTrans", "SetutmSetTrans", document.forms['utmform'].innerHTML, "0", document.location.href, Function)

//document.forms['utmform'].innerHTML = document.getElementById('utmtrans').outerHTML;
//__utmSetTrans();
}
