var cr = String.fromCharCode(10);

var G_divProductDetails_ControlId = '';
var G_divProductList_ControlId = '';
var G_divProductDetails_PreviousItem_ControlId = '';
var G_divProductDetails_NextItem_ControlId = '';
var G_divProductDetails_Id_ControlId = '';
var G_divProductDetails_Quantity_ControlId = '';
var G_divProductDetails_Div_ControlId = '';
var G_divProductDetails_Title_ControlId = '';
var G_divProductDetails_Text_ControlId = '';
var G_divProductDetails_Price_ControlId = '';
var G_nSelectedProductId = 0;

function validateEmail(szEmail){
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return szEmail.match(emailRegEx);
}

function MyStringDecode(PI_szString) {
	var szReturnString = PI_szString;
	szReturnString = szReturnString.replace(/\$SQ\$/g, "'");
	szReturnString = szReturnString.replace(/\$DQ\$/g, String.fromCharCode(34));
	szReturnString = szReturnString.replace(/\$CR\$/g, '<br>');
	return szReturnString;
}

function showProductDetails(PI_nProductId) {
	G_nSelectedProductId = PI_nProductId;
	document.getElementById(G_divProductDetails_Quantity_ControlId).value = '1';
	
	//alert('G_nSelectedProductId: ' + G_nSelectedProductId);
	//alert('ControlId_Id[G_nSelectedProductId]: ' + ControlId_Id[G_nSelectedProductId]);
	//alert('document.getElementById(ControlId_Id[G_nSelectedProductId]).value: ' + document.getElementById(ControlId_Id[G_nSelectedProductId]).value);
	
	document.getElementById(G_divProductDetails_Id_ControlId).innerHTML = Product_Id[G_nSelectedProductId];
	
	document.getElementById(G_divProductDetails_PreviousItem_ControlId).onclick = new Function('showProductDetails("' + Product_Previous[G_nSelectedProductId] + '")');
	document.getElementById(G_divProductDetails_NextItem_ControlId).onclick = new Function('showProductDetails("' + Product_Next[G_nSelectedProductId] + '")');
	
	document.getElementById(G_divProductDetails_Div_ControlId).style.backgroundImage = '';
	document.getElementById(G_divProductDetails_Div_ControlId).style.backgroundImage = 'url(' + Product_Image[G_nSelectedProductId] + ')';
	document.getElementById(G_divProductDetails_Title_ControlId).innerHTML = MyStringDecode(Product_Title[G_nSelectedProductId]);
	document.getElementById(G_divProductDetails_Text_ControlId).innerHTML = MyStringDecode(Product_Text[G_nSelectedProductId]);
	document.getElementById(G_divProductDetails_Price_ControlId).innerHTML = Product_Price[G_nSelectedProductId];
	document.getElementById(G_divProductDetails_ControlId).style.display = 'block';
	document.getElementById(G_divProductList_ControlId).style.display = 'none';
}

function hideProductDetails() {
	//alert('HideProductDetails: START');
	document.getElementById(G_divProductDetails_ControlId).style.display = 'none';
	document.getElementById(G_divProductList_ControlId).style.display = 'block';
	//alert('HideProductDetails: END');
}

function addProductToShoppingCart(PI_szProductId, PI_nQuantity) {
	var nQuantity = 1;
	
	try {
		nQuantity = eval(PI_nQuantity);
	} catch(err) {}
	
	//alert('--- addProductToShoppingCart ---' + cr + 'szProductId: ' + PI_szProductId + cr + 'nQuantity: ' + nQuantity);
	updateShoppingCart('product', PI_szProductId, nQuantity);
	
}

function cleanUpShoppingCart() {
	document.getElementById('hdShoppingCart').value = "";
}

function CheckIfValidQuantity(txtQuantityId, hdOriginalQuantityId) {
	//alert('txtQuantityId: ' + txtQuantityId);
	var nNewQuantity = document.getElementById(txtQuantityId).value;
	var nOriginalQuantity = document.getElementById(hdOriginalQuantityId).value;
	try {
		nNewQuantity = eval(nNewQuantity);
		if (nNewQuantity < 0 || nNewQuantity > 100) {
			alert('The Quantity must be a number between 0 and 100');
			document.getElementById(txtQuantityId).value = nOriginalQuantity;
		}
	} catch(err) {
		alert('The Quantity must be a number between 0 and 100');
		document.getElementById(txtQuantityId).value = nOriginalQuantity;
	}
}

function updateQuantity(szId, szQuantityControlId) {
	var nNewQuantity = document.getElementById(szQuantityControlId).value;
	//alert('szQuantityControlId: ' + szQuantityControlId);
	var szOldShoppingCart = document.getElementById('hdShoppingCart').value;
	var szNewShoppingCart = '';
	//alert('updateQuantity' + cr + 'szId: ' + szId + cr + 'nNewQuantity: ' + nNewQuantity + cr + 'szOldShoppingCart: ' + szOldShoppingCart);

	var aszOldShoppingCart = szOldShoppingCart.split('|');
	var szSingleLine = '';
	var szNewLine = '';

	for (i=0; i<aszOldShoppingCart.length; i++){
		szSingleLine = aszOldShoppingCart[i];
		szNewLine = szSingleLine;
		
		if (szSingleLine.indexOf(';') > -1) {
			var aszSingleElementsOfOneLine = szSingleLine.split(';');
			//The elements should be three: Type;Id;Value
			
			if (aszSingleElementsOfOneLine.length == 3 && aszSingleElementsOfOneLine[0] == 'product' && szId == aszSingleElementsOfOneLine[1]) {
				if (eval(nNewQuantity) == 0) {
					szNewLine = '';
				} else {
					szNewLine = 'product;' + szId + ';' + nNewQuantity;
				}
			}
			
			//alert('szNewLine: -' + szNewLine + '-');
			
			if (szNewLine != '') {
				szNewShoppingCart += szNewLine + '|';
			}
		}
	}
	
	//alert('szNewShoppingCart: ' + szNewShoppingCart);
	
	document.getElementById('hdShoppingCart').value = szNewShoppingCart;
	
	updateShoppingCartNav();
}

function updateShoppingCart(szType, szId, szValue) {

	//szType:
	// - product
	// - shipping
	// - delivery
	// - invoice
	// - payment
	
	//alert('szType: ' + szType + cr + 'szId: ' + szId + cr + 'szValue: ' + szValue);
	
	var szOldShoppingCart = document.getElementById('hdShoppingCart').value;
	
	//alert('szOldShoppingCart: ' + szOldShoppingCart);
	
	var szNewShoppingCart = '';
	var nItems = 0;
	
	if (szOldShoppingCart == '') {
		switch (szType) {
			case "product":
				szNewShoppingCart = szType + ';' + szId + ';' + szValue;
				nItems = 1;
				break;
			case "shipping": case "delivery": case "invoice": case "payment":
				szNewShoppingCart = szType + ';' + szId + ';' + szValue;
				nItems = 0;
				break;
		}
		
	} else {
		var aszOldShoppingCart = szOldShoppingCart.split('|');
		var szSingleLine = '';
		var bItemFound = false;
		for (i=0; i<aszOldShoppingCart.length; i++){
			szSingleLine = aszOldShoppingCart[i];
			//alert('szSingleLine: -' + szSingleLine + '-'); 
			
			var aszSingleElementsOfOneLine = szSingleLine.split(';');
			//The elements should be three: Type;Id;Value
			//alert('The elements should be three: -' + aszSingleElementsOfOneLine.length + '-' + cr + 'Firstelement:' + aszSingleElementsOfOneLine[0]); 
			
			switch (aszSingleElementsOfOneLine[0]) {
				case 'product' :
					var nOldQuantity = eval(aszSingleElementsOfOneLine[2]);
					var nNewQuantity = nOldQuantity;
					//alert('nOldQuantity: ' + nOldQuantity);
					if (szType == 'product' && szId == aszSingleElementsOfOneLine[1]) {
						bItemFound = true;
						if (eval(szValue) == 0) { //If the quantity is 0 the line must be deleted
							szSingleLine = '';
							nNewQuantity = 0;
						} else {
							nNewQuantity = eval(eval(nOldQuantity) + eval(szValue));
							//alert('Quantity to add: ' + eval(szValue) + cr + 'nNewQuantity: ' + nNewQuantity);
							szSingleLine = 'product;' + szId + ';' + nNewQuantity;
						}
					}
					nItems = eval(eval(nItems) + eval(nNewQuantity));
					break;
				case 'shipping' :
					if (szType == 'shipping' && szId == aszSingleElementsOfOneLine[1]) {
						bItemFound = true;
						szSingleLine = 'shipping;' + szId + ';' + szValue;
					}
					break;
				case 'delivery' :
					if (szType == 'delivery' && szId == aszSingleElementsOfOneLine[1]) {
						bItemFound = true;
						szSingleLine = 'delivery;' + szId + ';' + szValue;
					}
					break;
				case 'invoice' :
					if (szType == 'invoice' && szId == aszSingleElementsOfOneLine[1]) {
						bItemFound = true;
						szSingleLine = 'invoice;' + szId + ';' + szValue;
					}
					break;
				case 'payment' :
					if (szType == 'payment') {
						bItemFound = true;
						szSingleLine = 'payment;payment_method;' + szValue;
					}
					break;
					
				case 'page' :
					if (szType == 'page') {
						bItemFound = true;
						szSingleLine = 'page;page_id;' + szValue;
					}
					break;
			}
			
			if (szSingleLine != '') {
				szNewShoppingCart += szSingleLine + '|';
			}
		}
		
		if (!bItemFound) {
			szNewShoppingCart += szType + ';' + szId + ';' + szValue + '|';
			if (szType == 'product') {
				nItems = eval(eval(nItems) + eval(szValue));
			}
		}
	}
	
	if (szNewShoppingCart.charAt(szNewShoppingCart.length-1) == '|') {
		szNewShoppingCart = szNewShoppingCart.substring(0,szNewShoppingCart.length);
	}
	
	document.getElementById('hdShoppingCart').value = szNewShoppingCart;
	
	//alert('szNewShoppingCart: ' + szNewShoppingCart);
	
	updateShoppingCartNav();
	
	if (szOldShoppingCart == "") {
		alert(document.getElementById('divFirstItemInShoppingCartMessage').value);
	}
}

function updateShoppingCartNav() {
	
	var szShoppingCart = document.getElementById('hdShoppingCart').value;
	var nItems = 0;
	
	if (szShoppingCart) {
		var aszShoppingCart = szShoppingCart.split('|');
		var szSingleLine = '';
		for (i=0; i<aszShoppingCart.length; i++){
			szSingleLine = aszShoppingCart[i];
			var aszSingleElementsOfOneLine = szSingleLine.split(';');
			if (aszSingleElementsOfOneLine[0] == 'product') {
				var nQuantity = eval(aszSingleElementsOfOneLine[2]);
				nItems = eval(eval(nItems) + eval(nQuantity));
			}
		}
	}
	
	var hdShoppingCartNavigationElements = document.getElementById('hdShoppingCartNavigationElements').value;
	
	if (hdShoppingCartNavigationElements != '') {
		var aszEntireList = hdShoppingCartNavigationElements.split('|');
		for (nInc=0; nInc<aszEntireList.length; nInc++) {
			var aszElements = aszEntireList[nInc].split(';');
			if (aszElements.length == 3) {
				var nVisibility = aszElements[0];
				var szClientId = aszElements[1];
				var szTextTemplate = aszElements[2];
				switch (nVisibility) {
					case '-1' :
						// do nothing
						break;
					case '0': //Show Always
						document.getElementById(szClientId).innerHTML = szTextTemplate.replace('$ITEMS$', nItems);
						break;
					case '1': //Only if full
						if (nItems > 0) {
							document.getElementById(szClientId).innerHTML = szTextTemplate.replace('$ITEMS$', nItems);
						} else {
							document.getElementById(szClientId).innerHTML = '';
						}
						break; 
					case '2': //Only if empty
						if (nItems == 0) {
							document.getElementById(szClientId).innerHTML = szTextTemplate.replace('$ITEMS$', nItems);
						} else {
							document.getElementById(szClientId).innerHTML = '';
						}
						break; 
				}
			}
		} 
	}
}

function setHTMLParam(szObjectId, szValue) {
	//alert('szObjectId: ' + szObjectId + cr + 'szValue: ' + szValue);
	try {
		document.getElementById(szObjectId).value = szValue;
		//alert('The value of szObjectId is: ' + document.getElementById(szObjectId).value);	
	} catch(err) {
		//alert('Error setting value to szObjectId: ' + szObjectId + cr + err);
	}
}

function setNavParam(szNavId) {
	//alert('szNavId: ' + szNavId);
	try {
		document.getElementById('hdNavID').value = szNavId;
		//alert('The value of hdNavId is : ' + document.getElementById('hdNavID').value);	
	} catch(err) {
		//alert('Error setting szNavId: ' + szNavId + cr + err);
	}
}

function setAdditionalParam(szParamId, szParamValue) {
	//alert('szParamId: ' + szParamId + cr + 'szParamValue: ' + szParamValue);
	try {
		var aszNavParameterNames = document.getElementById('txtNavParameterNames').value.split("|");
		var aszNavParameterValues = document.getElementById('txtNavParameterValues').value.split("|");
		var nIndex = -1;
		var szNewValues = "";
		//alert('Trovati (' + eval(aszNavParameterNames.length) + ') elementi' + cr + 'Names: ' + document.getElementById('txtNavParameterNames').value + cr + 'Values: ' + document.getElementById('txtNavParameterValues').value); 
		for (i=0; i<aszNavParameterNames.length; i++){
			//alert('CONFRONTO NOMI: -' + aszNavParameterNames[i].toLowerCase() + '-   -' + szParamId.toLowerCase() + '-');
			if (aszNavParameterNames[i].toLowerCase() == szParamId.toLowerCase()) {
				 szNewValues += szParamValue;
				 nIndex = i;
			} else {
				szNewValues += aszNavParameterValues[i];
			}
			if (i<aszNavParameterNames.length - 1) {
				szNewValues += "|";
			}
		}
		if (nIndex == -1) {
			//alert('Elemento ' + szParamId + ' non trovato. Lo aggiungo');
			document.getElementById('txtNavParameterNames').value = document.getElementById('txtNavParameterNames').value + "|" + szParamId;
			document.getElementById('txtNavParameterValues').value = document.getElementById('txtNavParameterValues').value + "|" + szParamValue;
		} else {
			//alert('Elemento ' + szParamId + ' trovato. Sostituisco solo i valori');
			document.getElementById('txtNavParameterValues').value = szNewValues;
		}
		
	  //alert('Valore finale di txtNavParameterNames: ' + cr + document.getElementById('txtNavParameterNames').value + cr + cr + 'Valore finale di txtNavParameterValues: ' + cr + document.getElementById('txtNavParameterValues').value);
	} catch(err) {
		//alert('Error in setAdditionalParam: ' + err);
	}
	//alert('end of setAdditionalParam');
}

var nDelay;
var timerID = 0;
var tStart = null;

function submitMainForm(PI_nDelay){
	nDelay = eval(0);
	
	try {
		if (PI_nDelay) {
			nDelay = eval(PI_nDelay);
		}
	} catch (err) {}
	
	var theform;
	if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
		theform = document.forms["Form1"];
	}
	else {
		theform = document.Form1;
	}
	
	if (nDelay > 0) {
		tStart   = new Date();
		timerID  = setTimeout('UpdateTimer()', 250);
	} else {
		try {
			theform.submit();
		} catch (err) {
			alert('error submitting form');
		}
	}
}

function UpdateTimer() {
	if(timerID) {
		clearTimeout(timerID);
	}

	if(!tStart)
		tStart   = new Date();

	var   tDate = new Date();
	var   tDiff = tDate.getTime() - tStart.getTime();

	tDate.setTime(tDiff);

	var nElapsedSeconds = tDate.getSeconds();
	
	if (nElapsedSeconds == nDelay) {
		document.forms['Form1'].submit();
	} else {
		timerID = setTimeout("UpdateTimer()", 250);
	}
}

var cX = 0;
var cY = 0;
var rX = 0;
var rY = 0;

function UpdateCursorPosition(e){
	cX = e.pageX;
	cY = e.pageY;
}

function UpdateCursorPositionDocAll(e){
	cX = event.clientX;
	cY = event.clientY;
}

if(document.all) {
	document.onmousemove = UpdateCursorPositionDocAll; 
}	else {
	document.onmousemove = UpdateCursorPosition;
}


function AssignPosition(d) {
	if (self.pageYOffset) {
		rX = self.pageXOffset;
		rY = self.pageYOffset;
	}	else if (document.documentElement && document.documentElement.scrollTop) {
		rX = document.documentElement.scrollLeft;
		rY = document.documentElement.scrollTop;
	}	else if(document.body) {
		rX = document.body.scrollLeft;
		rY = document.body.scrollTop;
	}

	if(document.all) {
		cX += rX; 
		cY += rY;
	}
	d.style.left = (cX-230) + "px";
	d.style.top = (cY-370) + "px";
}

function HideContent(d) {
	if(d.length < 1) { return; }
	document.getElementById(d).style.display = "none";
}

function ShowContent(d) {
	if (d.length < 1) { return; }
	var dd = document.getElementById(d);
	AssignPosition(dd);
	dd.style.display = "block";
}

function ReverseContentDisplay(d) {
	if(d.length < 1) { return; }
	var dd = document.getElementById(d);
	AssignPosition(dd);
	if(dd.style.display == "none") { dd.style.display = "block"; }
	else { dd.style.display = "none"; }
}

function showFullDisplay(PI_PanelId, PI_aShowId, PI_aHideId) {
 	document.getElementById(PI_PanelId).style.display = 'block';
	document.getElementById(PI_aShowId).style.display = 'none';
	document.getElementById(PI_aHideId).style.display = 'block';
}

function hideFullDisplay(PI_PanelId, PI_aShowId, PI_aHideId) {
 	document.getElementById(PI_PanelId).style.display = 'none';
	document.getElementById(PI_aShowId).style.display = 'block';
	document.getElementById(PI_aHideId).style.display = 'none';
}

 function restoreOriginalText(PI_OriginalObject, PI_TargetObject, PI_LabelId) {
	document.getElementById(PI_TargetObject).innerText = document.getElementById(PI_OriginalObject).value;
	ChangeLabelMessage(PI_LabelId, '')
 }

 function ChangeLabelMessage(PI_LabelId, PI_szMessage) {
 	document.getElementById(PI_LabelId).innerText = PI_szMessage;
 } 

function openCentered(szURL, szName, ynResizeable, ynScroll, ynStatus, ynLocation, ynToolbar, nWidth, nHeight) {
	var x = screen.availWidth
	var y = screen.availHeight
	var spaceSx = (x - nWidth)/2
	var spaceUp = (y - nHeight)/2
	window.open(szURL,
							"",
				"scrollbars=" + ynScroll + 
				", resizable=" + ynResizeable + 
				", left=" + spaceSx + 
				", top=" + spaceUp + 
				", width=" + nWidth + 
				", height=" + nHeight + 
				", status=" + ynStatus + 
				", location=" + ynLocation + 
				", toolbar=" + ynToolbar);
}



function openFullScreen(szURL) {
	
		var ynScroll = 'yes'
		var ynResizeable = 'yes'
		var nWidth = screen.availWidth - 40
		var nHeight = screen.availHeight - 100
		var ynStatus = 'no'
		var ynLocation = 'no'
		var ynToolbar = 'no'
		
		var x = screen.availWidth;
		var y = screen.availHeight;
		
		var spaceSx = (x - nWidth)/2;
		var spaceUp = (y - nHeight)/2;
		
		window.open(szURL,
							"",
				"scrollbars=" + ynScroll + 
				", resizable=" + ynResizeable + 
				", left=" + spaceSx + 
				", top=" + spaceUp + 
				", width=" + nWidth + 
				", height=" + nHeight + 
				", status=" + ynStatus + 
				", location=" + ynLocation + 
				", toolbar=" + ynToolbar);
}

function createImageLayer(PI_nImageUrl, PI_nImageWidth, PI_nImageHeight) {
	var qt = String.fromCharCode(34);

	document.write("<layer name='L1' width=84 height=28 left=240 top=244 bgColor=red visibility='show'>");
	document.write("<IMG name='image' src='" + PI_nImageUrl + "' border=1 width=230 height=234>");
	document.write("<a href=# onclick=\"document.layers['L2'].visibility='hidden';\">chiudi</a>");
	document.write("</layer>");
}


function getInternetExplorerVersion() 
// Returns the version of Internet Explorer or a -1 
// (indicating the use of another browser). 
{ 
  var rv = -1; // Return value assumes failure. 
  if (navigator.appName == 'Microsoft Internet Explorer') 
  { 
    var ua = navigator.userAgent; 
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); 
    if (re.exec(ua) != null) 
      rv = parseFloat( RegExp.$1 ); 
  } 
  return rv; 
} 
 
function checkVersion() 
{ 
  var msg = "You're not using Internet Explorer."; 
  var ver = getInternetExplorerVersion(); 
 
  if ( ver > -1 ) { 
    if ( ver < 7.0 ) {
		document.location.href = "oldbrowser.html";
	}
  } 
  
} 
