//GLOBAL VARIABLES (Some of them are used only to reduce calls to '$ function' to improve javascript performance)
var shop = {};
shop.url = location.protocol +'//'+ location.host;

var interval_ID;
var maxWidth;
var maxWidthMenuTabs;

var interval_IDVertical;
var maxHeight;
var maxHeightMenuTabs;

var intervals_IDVertical = new Array();
var arrMaxHeight = new Array();
var arrMaxHeightMenuTabs = new Array();

var intervals_ID = new Array();
var arrMaxWidth = new Array();
var arrMaxWidthMenuTabs = new Array()

//NO MORE VARIABLES

$(window).addEvent('domready', function(){ initShop(); initPlugins(); } );

function initShop()
{
	initOverlay();
	initBuyForms();
	initLoginForms();
	initAsyncBasket();
	initAlert();
	initCheckout();
}

function initOverlay()
{
	shop.overlay = $('overlay');
	shop.overlay.show = function()
											{
												this.style.display = 'block';
												$(document.html).style.overflow = 'hidden';
												this.style.width = document.body.offsetWidth+'px';
												this.style.height = document.body.offsetHeight+'px';
											}
	
	shop.overlay.hide = function()
											{
												$(document.html).style.overflow = 'auto';
												this.style.display = 'none';
											}
	
	window.addEvent('scroll', function()
										{
												shop.overlay.style.top = 0 + document.documentElement.scrollTop + 'px';
												//shop.basketDiv.movement.start('top', parseInt(shop.basketDiv.style.top), 180 + document.documentElement.scrollTop );
										}
	);
}


function initLoginForms()
{
 $$('.loginForm').each(
           function(form)
           {
						 initFormFields(form.id); 
             form.addEvent('submit', function()
                             {
                              //overwrite form action
                              this.action = shop.url + '/ajaxTemplates/checkoutActions.cfm?action=login';
                              //autoDragImage(this);
															if( Spry.Widget.Form.validate(this) )
                              	{
																	shop.overlay.show();
																	return Spry.Utils.submitForm(this, validateLogin);
																}
                             }
             );
           }
 );
}

function initBuyForms()
{
	$$('.buyForm').each(
											function(form)
											{
													initFormFields(form.id);
													getStockByCombination(form);
													form.addEvent('submit', function()
																													{
																														//overwrite form action
																														this.action = shop.url + '/ecommerce/basket/asyncBasket.cfm';
																														autoDragImage(this);
																														if( Spry.Widget.Form.validate(this) )
																														{
																															shop.overlay.show();
																															return Spry.Utils.submitForm(this, reloadMiniBaskets );
																														}
																													}
													);
											}
	);
}

function initAsyncBasket()//init vertical movement, transition... of the minibasket
{
	shop.basketDiv = $('asyncBasketFloater');
	//shop.basketDiv.movement = new Fx.Tween( shop.basketDiv , 'top', {duration:20, transition:new Fx.Transition(Fx.Transitions.linear) } );
	shop.basketDiv.style.top = '200px';
	
	window.addEvent('scroll', function()
										{
												shop.basketDiv.style.top = 200 + document.documentElement.scrollTop + 'px';
												//shop.basketDiv.movement.start('top', parseInt(shop.basketDiv.style.top), 180 + document.documentElement.scrollTop );
										}
	);
	
	shop.asyncBasketBox = $('asyncBasketBox');
	shop.asyncBasketBox.transition = new Fx.Tween( shop.asyncBasketBox , 'opacity', {duration:700, transition:new Fx.Transition(Fx.Transitions.linear) } );
}

function initAlert()//init vertical movement, transition... of the minibasket
{
	shop.alertDiv = $('alertFloater');
	//shop.basketDiv.movement = new Fx.Tween( shop.basketDiv , 'top', {duration:20, transition:new Fx.Transition(Fx.Transitions.linear) } );
	shop.alertDiv.style.top = '180px';
	
	window.addEvent('scroll', function()
										{
												shop.alertDiv.style.top = 200 + document.documentElement.scrollTop + 'px';
												//shop.basketDiv.movement.start('top', parseInt(shop.basketDiv.style.top), 180 + document.documentElement.scrollTop );
										}
	);
	
	shop.alertBox = $('alertBox');
	shop.alertBox.transition = new Fx.Tween( shop.alertBox , 'opacity', {duration:700, wait:true , transition:new Fx.Transition(Fx.Transitions.linear) } );
	
	shop.cuteAlert = new cuteAlert();
}

function hideAsyncBasket()
{
	shop.asyncBasketBox.transition.start('opacity',1,0);
	shop.overlay.hide();
}

var reloadMiniBaskets = function(req)
{
	//window.location=shop.url+'/ecommerce/basket/basket.cfm';
	//return;
	//reload asyncBasket
	$('asyncBasket').innerHTML = req.xhRequest.responseText;
	shop.asyncBasketBox.transition.set('opacity',0);
	shop.asyncBasketBox.transition.start('opacity',0,1);
	
	//reload minibasket
	ajaxLoad(shop.url+ '/ajaxTemplates/basket.cfm', $('minibasket') )
}

//checkout initialization
var initCheckout = function()
{
	var titleDivs = $$('.checkoutTitle');
	shop.checkoutAccordion = new Accordion( titleDivs , $$('.checkoutContent'), {opacity:false,
																												 											 hideAll:true,
																																							 show:100,
																																							 onActive:function(toggler, element)
																																							 					{
																																													var index = toggler.getAttribute('index');
																																								 					toggler.addClass('checkoutActiveTitle'+index);
																																													toggler.removeClass('checkoutTitle'+index);
																																												},
																																							 onBackground:function(toggler, element)
																																							 							{
																																															var index = toggler.getAttribute('index');
																																															toggler.removeClass('checkoutActiveTitle'+index);
																																															toggler.addClass('checkoutTitle'+index);
																																														}
																																							}
																				);
	titleDivs.each(
								 	function(el){ el.removeEvents('click'); el.addEvent('click', function(el){ var ev = new Event(el); ev.stop(); return false; } ); }
								 );
}

function autoDragImage(form)
{
	var images = form.getElements('img.mainProductImage');
	if(!images.length) return;
	
	var image = images[0]; //get the 1st image from the product
	
	var imageClone = image.clone(false, false);
	
	imageClone.style.position = 'absolute';
		
	imageClone.setStyles(image.getCoordinates());
	document.body.appendChild(imageClone);
	
	imageClone.transition = new Fx.Tween( imageClone , 'top', {duration:'long', fps:10, transition:new Fx.Transition(Fx.Transitions.Sine.easeInOut) } );
	imageClone.transition2 = new Fx.Tween( imageClone , 'left', {duration:'long', fps:10, transition:new Fx.Transition(Fx.Transitions.Sine.easeInOut) } );
	
	imageClone.transition.start('top', parseInt(image.getCoordinates().top) , parseInt($('basketContentModuleC').getCoordinates().top) );
	imageClone.transition2.start('left', parseInt(image.getCoordinates().left) , parseInt($('basketContentModuleC').getCoordinates().left) );
	
}

/**CHECKOUT FUNCTIONS************************/
function checkoutOptionSelected(field)
{
	
	field = $(field);
	if(parseInt(field.value) && field.value.length){
		return true;}
	else{
		return false;}
}

function validateAccount(req) //gets the response of the customer form and sends an error message or calls next screen.
{
	var objResponse = eval('(' + req.xhRequest.responseText + ')');
	
	if( objResponse.ERROR )
		{
			switch (objResponse.ERROR)
			{
				case 'TLG1000':
				case 'TLG1001':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblUserNotFound,0,0);
					break;
				case 'TLG1002':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblDifferentPassword,0,0);
					break;
				case 'TLG1003':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblEmailInUse,0,0);
					break;
				case 'TLG1004':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblDifferentEmail,0,0);
					break;
			}
		}
	else
		{
			if( objResponse.ACTION == 'login' )
			{
				location.reload();	
			}
			else if( objResponse.ACTION == 'signIn' )
			{
				location.reload();
			}
			else
			{
				loadNextCheckoutScreen(1, shop.url+'/ajaxTemplates/shippingZone.cfm' , $('shippingMethodBox') );
			}
		}
}

function validateLogin(req) //gets the response of the small Login form and sends an error message or calls next screen.
{
	var objResponse = eval('(' + req.xhRequest.responseText + ')');

	
	if( objResponse.ERROR )
		{
			switch (objResponse.ERROR)
			{
				case 'TLG1000':
				case 'TLG1001':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblUserNotFound,0,0);
					break;
				case 'TLG1002':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblDifferentPassword,0,0);
					break;
				case 'TLG1003':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblEmailInUse,0,0);
					break;
				case 'TLG1004':
					shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblDifferentEmail,0,0);
					break;
			}
		}
	else
		{
			if( objResponse.ACTION == 'login' )
			{
				location.reload();
				//location.href = shop.url+'/ecommerce/users/userControlPanel.cfm';	
			}			
		}
}

function validateAccountNewUser(req) //gets the response of the customer form and sends an error message or calls next screen.
{
 var objResponse = eval('(' + req.xhRequest.responseText + ')');
 
 if( objResponse.ERROR )
  {
   switch (objResponse.ERROR)
   {
    case 'TLG1000':
    case 'TLG1001':
     shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblUserNotFound,0,0);
     break;
    case 'TLG1002':
     shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblDifferentPassword,0,0);
     break;
    case 'TLG1003':
     shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblEmailInUse,0,0);
     break;
    case 'TLG1004':
     shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblDifferentEmail,0,0);
     break;
   }
  }
 else{
//   loadNextCheckoutScreen(1, shop.url+'/users/userControlPanel.cfm' , $('shippingMethodBox') );
   window.location = shop.url+'/ecommerce/users/userControlPanel.cfm';
  }
}


function loadNextCheckoutScreen(index, path, targetDiv, callBack )
{
	if(index > 0){

								if (index == 1){ 
									$('checkoutBasketDiv').slide = new Fx.Slide('checkoutBasketDiv', {'link':'cancel'}).hide();
									ajaxLoadSync(shop.url+'/ajaxTemplates/checkoutBasket.cfm', $('checkoutBasketDiv') , '$("checkoutBasketDiv").slide.toggle();' );
								}else{
									ajaxLoad(shop.url+'/ajaxTemplates/checkoutBasket.cfm', $('checkoutBasketDiv'), '$("checkoutBasketDiv").slide.slideOut().slideIn();' );
								}
	}
	
	ajaxLoadSync(path, targetDiv);
	
	if(index == 0){
									
									if(document.getElementById('companyField').value != "") {                   // if user is a company
										document.getElementById('userCompany').click();
										document.getElementById('userCompany').checked = 1;
										document.getElementById('userCompany').setAttribute('disabled', 'true');
										document.getElementById('userPrivate').setAttribute('disabled', 'true');
										document.getElementById('userRE').setAttribute('disabled', 'true');
										document.getElementById('userNoRE').setAttribute('disabled', 'true');
									}else if(document.getElementById('firstNameField').value != ""){             // if user is not a company 
										document.getElementById('userPrivate').click();
										document.getElementById('userPrivate').checked = 1;
										document.getElementById('userCompany').setAttribute('disabled', 'true');
										document.getElementById('userPrivate').setAttribute('disabled', 'true');
									}else{																						                     			//  (default)
										document.getElementById('userPrivate').click();
										document.getElementById('userPrivate').checked = 1; 
									}
									
	}
	
	if(callBack)
		eval(callBack);
	Shadowbox.init();			
	shop.checkoutAccordion.display(index);
}

function showShadowboxCheckout(divId)
{
	Shadowbox.open({
        player:     'html',
        content:    $(divId).innerHTML,				
        width:      600,
				height: 		400
    },
		{
			animate: false
		}
		);

}


function requireSignIn(value)
{
	document.getElementById('userSignInNick').setAttribute('requiredField', value);
	document.getElementById('userSignInPassword').setAttribute('requiredField', value);
	document.getElementById('confirmPassword').setAttribute('requiredField', value);
	
	initFormFields('checkoutUserForm');
}

function requireShipTo(value)
{
	document.getElementById('firstNameShippingField').setAttribute('requiredField', value);
	document.getElementById('lastNameShippingField').setAttribute('requiredField', value);
	document.getElementById('addressShippingField').setAttribute('requiredField', value);
	document.getElementById('cityShippingField').setAttribute('requiredField', value);
	document.getElementById('zipShippingField').setAttribute('requiredField', value);
	
	initFormFields('checkoutUserForm');
}

/****************************************/
function initFormFields(form)
{
	var form = document.getElementById(form);
	Spry.Widget.Form.destroy(form);
		
	for (var i = 0; i < form.elements.length; i++ )
	{
			element = form.elements[i];
			
			fieldType = element.getAttribute('fieldType');
			requiredField = element.getAttribute('requiredField');

			if( element.getAttribute('affectsstock') && element.getAttribute('affectsstock') == 1 )
			{
				$(element).addEvent('change', function(){ getStockByCombination(form); } );
			}
			
			if(fieldType)
			{
				try
				{
					if(requiredField == 1)
						required = true;
					else
						required = false;
				}
				catch(err){ required = false }
				
				switch(fieldType)
				{
					case 'natural':
						
						element.validate = new Spry.Widget.ValidationTextField(element, "integer", { isRequired:required, validateOn:['blur'], minValue:0 } );
						break;
						
					case 'integer':
						
						element.validate = new Spry.Widget.ValidationTextField(element, "integer", { isRequired:required, validateOn:['blur'] } );
						break;
					
					case 'float':	
					
						element.validate = new Spry.Widget.ValidationTextField(element, "real", { isRequired:required,validateOn:['blur'] } );
						break;
					
					case 'email':	
					
						element.validate = new Spry.Widget.ValidationTextField(element, "email", { isRequired:required,validateOn:["blur"] });
						break;
					
					case 'time':	
					
						element.validate = new Spry.Widget.ValidationTextField(element, "time", { isRequired:required, validateOn:['blur'] , useCharacterMasking:true , format:formats.timeFormat } );
						break;
					
					case 'date':	
					
						element.validate = new Spry.Widget.ValidationTextField(element, "date", { isRequired:required, useCharacterMasking:true, format:formats.dateFormat, hint:formats.dateFormat, validateOn:["blur"]} );
						
						Calendar.setup({inputField:element, button:element});
						
						break;
						
					case 'phone':	
					
						//element.validate = new Spry.Widget.ValidationTextField(element, "phone_number", { isRequired:required, validateOn:["blur"],format:"phone_custom" , pattern:"000000000"});
						element.validate = new Spry.Widget.ValidationTextField(element, "integer", { isRequired:required, validateOn:["blur"], allowNegative:false, minValue:10000000 });
						break;
					
					case 'url':	
					
						element.validate = new Spry.Widget.ValidationTextField(element, "url", { isRequired:required, validateOn:["blur"]});
						break;
					
					case 'creditcard':
					
						element.validate = new Spry.Widget.ValidationTextField(element, "zip_code", { isRequired:required, useCharacterMasking:true, pattern:'0000-0000-0000-0000' , validateOn:['blur'] } );
						break;
					
					case 'ip':	
					
						element.validate = new Spry.Widget.ValidationTextField(element, "ip", { isRequired:required, validateOn:['blur'] } );
						break;
					
					case 'checkbox':
						
						var container = element.getAttribute('fieldContainerId')
						if( container )
							container = $(container);
						else
							container = $(element);
						
						new Spry.Widget.ValidationCheckbox(container);
						break;
						
				 case 'select':
      
						var container = element.getAttribute('fieldContainerId')
						if( container )
						 container = $(container);
						else
						 container = $(element);
						
						new Spry.Widget.ValidationSelect(container,{isRequired:required});
						break;
						
					case 'shortmemo':	
					
						element.validate = new Spry.Widget.ValidationTextarea(element, { isRequired:required, validateOn:['blur'] } );
						break;
						
					/*case 'longmemo':	
					
						element.validate = new Spry.Widget.ValidationTextarea(element, { isRequired:required, validateOn:['blur'] } );
						break;*/
						
					default:
					
						element.validate = new Spry.Widget.ValidationTextField(element, "none", { isRequired:required, validateOn:['blur'] } );
						break;
					
				}
			}
			
	}
}


function getStockByCombination(form)
{
	var element;
	var formParams = new Array();
	
	for (var i = 0; i < form.elements.length; i++ )
	{
		element = form.elements[i];
		if( element.getAttribute('affectsstock') && element.getAttribute('affectsstock') == 1 )
		{
		  if( element.tagName.toUpperCase() != 'INPUT' || (element.type.toUpperCase() != 'CHECKBOX' && element.checked == true) || (element.tagName.toUpperCase() == 'INPUT' && element.type.toUpperCase() == 'HIDDEN' ) )
			formParams.push(encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value));
		}
		else if(element.name.toUpperCase() == 'PRODUCTID')
		{
			formParams.push(encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value));
			el = document.getElementById('prodDetailBuyButton');
			el.style.display = 'none';
		}
	}
	formParams = formParams.join("&");
	
	var frmOpts = {};
	frmOpts.method = 'POST';
	frmOpts.url = shop.url + '/ajaxTemplates/checkStockByCombination.cfm';
	frmOpts.headers = {};
	frmOpts.headers['Content-Type'] = 'application/x-www-form-urlencoded';
	frmOpts.postData = formParams;
	
	Spry.Utils.loadURL('post', frmOpts.url, true, setStockByCombination, frmOpts);
}

function setStockByCombination(response)
{
	var objResponse = eval('(' + response.xhRequest.responseText + ')');
	var productId = parseInt(objResponse.PRODUCTID);
	var buyButton = document.getElementById('prodDetailBuyButton');
	var stock = parseInt(objResponse.STOCK);
	
	if( stock == 0 )
	{
		//no stock
		if(objResponse.ALLOWRESERVE)
		{
			//allow reserve
			buyButton.value = languageSheet.lblDisabledBuy;
			buyButton.disabled = false;
//			document.getElementById('reserveText').innerHTML = languageSheet.lblReserveAllowed;
		}
		else
		{
			//disallow buy
			buyButton.value = languageSheet.lblDisabledBuy;
			buyButton.disabled = true;
	//		document.getElementById('reserveText').innerHTML = languageSheet.lblReserveNotAllowed;
		}
	}
	else if( stock == -1 )
	{
		//disallow buy
		buyButton.value = languageSheet.lblDisabledBuy;
		buyButton.disabled = true;
		//document.getElementById('reserveText').innerHTML = languageSheet.lblReserveNotAllowed;
	}
	else
	{
		//stock available	
		buyButton.value = languageSheet.lblBuy;
		buyButton.disabled = false;
		//document.getElementById('reserveText').innerHTML = '';
	}
	
//	$('loadingImage' + productId).destroy();
	buyButton.style.display = '';
}



function cuteAlert(){
	
	this.timeOut = null;
	this.showing = false;
	this.messageQueue = new Array();
	this.addMessage = function(title, content, image, timeout)
								{
									this.messageQueue.push( {title:title, content:content, image:image, timeout:timeout} );
									if(!this.showing)
										this.showMessage();
								}
	this.showMessage = function()
								{
									if(this.messageQueue.length)
									{
										shop.overlay.show();
										this.showing = true;
										var message = this.messageQueue.shift();
										document.getElementById('alertTitle').innerHTML = message.title;
										document.getElementById('alertMessage').innerHTML = message.content;
										shop.alertBox.transition.start('opacity',0,1);
										
										if(message.timeout && message.timeout > 0)
										{
											var self = this;
											this.timeOut = setTimeout(function(){ self.closeMessage()}, message.timeout);
										}
										
									}
									else
									{
										this.showing = false;
									}
								}
	this.clear = function()
								{
									this.messageQueue = new Array();
									clearTimeout(this.timeOut);
								}
	this.closeMessage = function()
								{
									clearTimeout(this.timeOut);
									shop.alertBox.transition.start('opacity',1,0);
									var self = this;
									setTimeout(function(){self.showMessage();},700);
									shop.overlay.hide();
								}
};

/*CATEGORY FUNCTIONS*************************************/
function toggleSubcategories(parentId, level)
{
	var targetElement = document.getElementById('subcategories' + parentId);
	var togglerElement = document.getElementById('categoryToggler' + parentId);
	
	if(targetElement.style.display == 'none')//open subcategories
	{
		targetElement.style.display = '';
		togglerElement.className = 'categoryTogglerOpen';
	}
	else if(targetElement.innerHTML.length < 41)//load subcategories
	{
		ajaxLoadSync(shop.url + '/ajaxTemplates/categoriesContent.cfm?parentId='+parentId+'&deepLevel=1&level='+level, targetElement);
		togglerElement.className = 'categoryTogglerOpen';
		targetElement.style.display = '';
	}
	else //close subcategories
	{
		togglerElement.className = 'categoryTogglerClosed';
		targetElement.style.display = 'none';
	}
}
function showSubcategories(parentId)
{
	var targetElement = document.getElementById('subcategoriesViewer');
	//var togglerElement = document.getElementById('categoryToggler' + parentId);
	targetElement.slide = new Fx.Slide( targetElement, {duration: 500, wait:false} );
	
	targetElement.slide.slideOut();
	
	setTimeout(function(){ ajaxLoadSync(shop.url + '/ajaxTemplates/categoriesContent.cfm?parentId='+parentId+'&deepLevel=1', targetElement); targetElement.slide.slideIn(); } , 400 );
	/*
	if(targetElement.innerHTML.length < 15) //if no content
		return true; //follow links
	//togglerElement.className = 'categoryTogglerOpen';
	*/

	return false; //avoid href link
}

function getSubCountries(divId, countryId, subCountryId, index)
{
	if ( index == 0 )		
	{
		var responseText = ajaxLoadSync(shop.url + '/ajaxTemplates/hasSubCountries.cfm?countryId='+countryId+'&subCountryId='+subCountryId+'&index='+index);
		var objResponse = eval('(' + responseText + ')');
		if( objResponse.HAS == 0 )
			{
				document.getElementById('stateShippingField2TR').style.display = '';
				//document.getElementById('cityShippingField2TR').style.display = '';
				document.getElementById('stateShippingField2').setAttribute('requiredField', 1);
				//document.getElementById('cityShippingField2').setAttribute('requiredField', 1);
			}
		else
			{
				document.getElementById('stateShippingField2TR').style.display = 'none';
				//document.getElementById('cityShippingField2TR').style.display = 'none';
				document.getElementById('stateShippingField2').setAttribute('requiredField', 0);
				//document.getElementById('cityShippingField2').setAttribute('requiredField', 0);
				document.getElementById('stateShippingField2').value = '';
				//document.getElementById('cityShippingField2').value = '';
			}
	}
	ajaxLoadSync(shop.url + '/ajaxTemplates/subCountries.cfm?countryId='+countryId+'&subCountryId='+subCountryId+'&index='+index , $(divId) );
}

function saveCountriesData( index )
{ 
	if (index == 1 )
	{
		//document.getElementById('stateShippingField').value = document.getElementById('selectSubCountries'+index).options[document.getElementById('selectSubCountries'+index).selectedIndex].text;
		//document.getElementById('stateShippingField2').value = document.getElementById('selectSubCountries'+index).options[document.getElementById('selectSubCountries'+index).selectedIndex].text;
	}
	else if (index == 2)
	{
		document.getElementById('stateShippingField').value = document.getElementById('selectSubCountries'+index).options[document.getElementById('selectSubCountries'+index).selectedIndex].text;
		document.getElementById('stateShippingField2').value = document.getElementById('selectSubCountries'+index).options[document.getElementById('selectSubCountries'+index).selectedIndex].text;
	}
}

function loadAjaxFile(nameFile, nameDiv, callBack, ajaxLoading) {
	if(ajaxLoading.length == 0)
		ajaxLoading = "<img src='" + shop.url + "/ecommerce/images/icons/loading.gif'>";
	var div_pointer = $(nameDiv);
	ajaxLoad(nameFile,div_pointer,callBack, ajaxLoading);
}

function closeContent(){
	$('informationBox').innerHTML = '';
	$('informationBox').style.visibility = 'hidden';
}

function loadContent(nameFile, nameDiv, callBack, ajaxLoading) {
	if(ajaxLoading.length == 0)
		ajaxLoading = "<img src='" + shop.url + "/ecommerce/images/icons/loading.gif'>";
	if($(nameDiv+'Floater'))$(nameDiv+'Floater').style.top = 30+ (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + 'px';
	loadAjaxFile(nameFile, nameDiv, callBack, ajaxLoading);
}

function submitForm(form, divId, callBack, imageLoading){
	if(imageLoading)
			document.getElementById(divId).innerHTML = "<img src='" + shop.url + "/ecommerce/images/icons/"+imageLoading+"'>";
	Spry.Utils.submitForm(form, function(req){document.getElementById(divId).innerHTML = req.xhRequest.responseText; eval(callBack);} );
}


//vertical Scroll on related products

function getWidth(id){
	if(id){
		if(document.getElementById("menuTabsTable"+id)){ arrMaxWidth[id] = document.getElementById("menuTabsTable"+id).offsetWidth;}
		if(document.getElementById("menuTabs"+id)) { arrMaxWidthMenuTabs[id] = document.getElementById("menuTabs"+id).offsetWidth;	}
	}
	else{
		if(document.getElementById("menuTabsTable")){ maxWidth = document.getElementById("menuTabsTable").offsetWidth;}
		if(document.getElementById("menuTabs")) { maxWidthMenuTabs = document.getElementById("menuTabs").offsetWidth;	}
	}
}

function getHeight(id){
	if(id){
		if(document.getElementById("menuTabsTableVertical"+id)){ arrMaxHeight[id] = document.getElementById("menuTabsTableVertical"+id).offsetHeight; }
		if(document.getElementById("menuTabsVertical"+id)) { arrMaxHeightMenuTabs[id] = document.getElementById("menuTabsVertical"+id).offsetHeight;	}
	}
	else{
		if(document.getElementById("menuTabsTableVertical")){ maxHeight = document.getElementById("menuTabsTableVertical").offsetHeight;}
		if(document.getElementById("menuTabsVertical")) { maxHeightMenuTabs = document.getElementById("menuTabsVertical").offsetHeight;	}
	}
}

function getStyleObject(objectId) {
    // cross-browser function to get an object's style object given its
    if(document.getElementById && document.getElementById(objectId)) {
	// W3C DOM
	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
	// MSIE 4 DOM
	return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
	// NN 4 DOM.. note: this won't find nested layers
	return document.layers[objectId];
    } else {
	return false;
    }
} // getStyleObject

function crearMoviment(e, id){
		var posx = e.clientX; //posicio del cursor des del marge esquerra
		
		if(id) var divImatges = document.getElementById("divImatges"+id);
		else var divImatges = document.getElementById("divImatges"); //div que conte les imatges
		
		var tamanyDivImatges = divImatges.offsetWidth; //amplada del div de les imatges
		var meitat = tamanyDivImatges/2; //meitat de l'amplada del div
		
		var posXDiv = divImatges.offsetLeft; //posicio des de l'esquerra de la pantalla del div de les imatges
		
		var posicioCursor =  posx - posXDiv; //posicio del cursor dintre del div
		
		
		var velocitat = (meitat - posicioCursor)/60; //velocitat del moviment
		startMenu(velocitat, id);
}

function crearMovimentVertical(e, id){
		var posy = e.clientY; //posicio del cursor des del marge esquerra
		
		var divImatges = document.getElementById("divImatgesVertical"); //div que conte les imatges
		
		var tamanyDivImatges = divImatges.offsetHeight; //amplada del div de les imatges
		var meitat = tamanyDivImatges/2; //meitat de l'amplada del div
		
		var posYDiv = divImatges.offsetTop; //posicio des de l'esquerra de la pantalla del div de les imatges
		
		var posicioCursor =  posy - posYDiv; //posicio del cursor dintre del div
		

		var velocitat = (meitat - posicioCursor)/60; //velocitat del moviment
		
		startMenuVertical(velocitat);
}

function startMenu(step, id)
{
	var divId = "menuTabs";
	if(id){
		divId = divId +id;
		intervals_ID[id] = setInterval('moveDiv("'+divId+'",'+step+',\''+id+'\');',15);
	}
	else{
		interval_ID = setInterval('moveDiv("'+divId+'",'+step+');',15);
	}
}

function startMenuVertical(step, id)
{
	var divId = "menuTabsVertical";
	if(id){
		divId = divId +id;
		intervals_IDVertical[id] = setInterval('moveDivVertical("'+divId+'",'+step+',\''+id+'\');',15);
	}
	else{
		interval_IDVertical = setInterval('moveDivVertical("'+divId+'",'+step+');',15);
	}
}

function moveDiv(divID,step, id)
{
  // get the stylesheet
  //
	if(id){ getWidth(id);}
	else getWidth();
  var the_style = getStyleObject(divID);
	
  if (the_style)
  {
    // get the current coordinate and add 5
    //
    var current_left = parseInt(the_style.left);
	var new_left = current_left + step;

    // set the left property of the DIV, add px at the
    // end unless this is NN4
    //
		//alert(step);
		//alert(current_left);
		
		if(step > 0 && current_left < 0 ){
			if (document.layers)  
			{
				the_style.left = new_left;
			}
			else 
			{  
				the_style.left = new_left + "px";
			}
		}
		if(id){
			if(step < 0 && current_left > (-arrMaxWidth[id] + arrMaxWidthMenuTabs[id])){
				if (document.layers) 
				{
					the_style.left = new_left;
				}
				else 
				{  
					the_style.left = new_left + "px";
				}
			}
		}
		else{
			 if(step < 0 && current_left > (-maxWidth + maxWidthMenuTabs)){
				if (document.layers) 
				{
					the_style.left = new_left;
				}
				else 
				{  
					the_style.left = new_left + "px";
				}
			}
		}
		
  }
}

function moveDivVertical(divID,step, id)
{
  // get the stylesheet
  //
 //alert(-maxHeight + maxHeightMenuTabs);

	if(id){ getHeight(id);}
	else getHeight();
  var the_style = getStyleObject(divID);
	if (the_style)
  {
    // get the current coordinate and add 5
    //
		if(the_style.top != "")
	    var current_top = parseInt(the_style.top);
		else
			var current_top = 0;
	var new_top = current_top + step;

    // set the left property of the DIV, add px at the
    // end unless this is NN4
    //
		if(step > 0 && current_top < 0 ){ 
			if (document.layers) 
			{
				the_style.top = new_top;
			}
			else 
			{  
				the_style.top = new_top + "px";
			}
		} 
		if(id){
			if(step < 0 && current_top > (-arrMaxHeight[id] + (arrMaxHeightMenuTabs[id]))){
				if (document.layers) 
				{
					the_style.top = new_top;
				}
				else 
				{  
					the_style.top = new_top + "px";
				}
			}
		}
		else{
			if(step < 0 && current_top > (-maxHeight + (maxHeightMenuTabs))){
				if (document.layers) 
				{
					the_style.top = new_top;
				}
				else 
				{  
					the_style.top = new_top + "px";
				}
			}
		}
  }
}

function stopMenu()
{
clearInterval(interval_ID);
}

function stopMenu(id){
	clearInterval(intervals_ID[id]);
}

function stopMenuVertical(id)
{
clearInterval(intervals_IDVertical[id]);
}

function validateGiftCode(req)
{
	var url = shop.url+'/ajaxTemplates/checkoutActions.cfm?action=giftCode';
	var useGiftCodeCheck = document.getElementById('useGiftCodeCheckbox');
	var giftCode = document.getElementById('giftCodeTextBox').value;
	var useGiftCode = 0;
	if(useGiftCodeCheck && useGiftCodeCheck.checked) useGiftCode = 1;
	
	url += '&useGiftCode='+useGiftCode;
	url += '&giftCode='+giftCode;
	
	var responseText = ajaxLoadSync(url);
	
	var objResponse = eval('(' + responseText + ')');

if( objResponse.ERROR )
	{
		switch (objResponse.ERROR)
		{
			case 'TLG1201':
				shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblCodeNotFound,0,0);
				break;
			case 'TLG1202':
				shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblErrorReadingCodes,0,0);
				break;
			case 'TLG1203':
				shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblCodeInUse,0,0);
				break;
			case 'TLG1204':
				shop.cuteAlert.addMessage(languageSheet.lblError, languageSheet.lblCodeInOtherSession,0,0);
				break;
		}
	}
	else
	{
/*		ajaxLoad(shop.url+'/ajaxTemplates/basket/checkoutScreen/giftCode.cfm', $('giftCodeBox') );		
		if( $('totalBasket') )
			ajaxLoad(shop.url+'/ajaxTemplates/basket/checkoutScreen/totalsBasket.cfm', $('totalBasket') );*/		
		location.reload();	
	}
}



function showPriceByOption(form){
	var productId = form.productId.value;
	var listOptions = "";
	if(form.options && form.options.length){
		for(var i=0; i<form.options.length; i++){
			optionId = form.options[i].value;
			if($('optionValue'+optionId).type == 'radio') {
				if(listOptions.length > 0) listOptions = listOptions + ",";
				radioValue = getRadioButtonSelectedValue(document.getElementsByName('optionValue'+optionId));
				listOptions = listOptions + radioValue;
			}
			else if($('optionValue'+optionId).type == 'select') {
				if(listOptions.length > 0) listOptions = listOptions + ",";
				listOptions = listOptions + $('optionValue'+optionId)[selectedIndex].value;
			}else{
				if($('optionValue'+optionId).type != 'text' && $('optionValue'+optionId).type !='textarea')
				{
					if(listOptions.length > 0) listOptions = listOptions + ",";
					listOptions = listOptions + $('optionValue'+optionId).value;				
				}
			} 
		}
	}
	else if(form.options){
		optionId = form.options.value;
		if($('optionValue'+optionId).type == 'radio') {
			radioValue = getRadioButtonSelectedValue(document.getElementsByName('optionValue'+optionId));
			listOptions = radioValue;
		}
		else if($('optionValue'+optionId).type == 'select') {
			listOptions = $('optionValue'+optionId)[selectedIndex].value;
		}else{
			if($('optionValue'+optionId).type != 'text' && $('optionValue'+optionId).type !='textarea')
				listOptions = $('optionValue'+optionId).value;
		} 
	}
	if(listOptions.length > 0){
		var url = shop.url + '/ajaxTemplates/showPriceByOptions.cfm?productId='+productId+'&listOptions='+listOptions;
		var responseText = ajaxLoadSync(url);
		var objResponse = eval('(' + responseText + ')');
		if($('prodDetailIntPrice'))$('prodDetailIntPrice').innerHTML = objResponse.BASEPRICE;
		if($('prodDetailIntRetailPrice'))$('prodDetailIntRetailPrice').innerHTML = objResponse.RETAILPRICE;
	}
}

function getRadioButtonSelectedValue(ctrl) {
	for(i=0;i<ctrl.length;i++)
		if(ctrl[i].checked) return ctrl[i].value;
}


