﻿// File JScript

function GetStringParams(params){
    var retValue = "";
    for(var i = 0; i < params.length; i++){
			retValue += URLEncode(params[i].name) + "=" + URLEncode(params[i].value) + "&";   
      //retValue += params[i].name + "=" + params[i].value + "&";   
		}
    return retValue;
}

function GetParams(strParams){

    var retValue = new Object();
    strParams = (strParams.indexOf("?") > -1) ? strParams.substring(strParams.indexOf("?")) : strParams;
    strParams = (strParams.charAt(strParams.length - 1) == "&") ? strParams.substring(0, strParams.length - 1) : strParams;
    strArray = strParams.split('&');
    for(var i = 0; i < strArray.length; i++){
        //alert(strArray[i].substring(0, strArray[i].indexOf('=')) + " @ " + strArray[i].substring(strArray[i].indexOf('=') + 1));
        retValue[strArray[i].substring(0, strArray[i].indexOf('='))] = URLDecode(strArray[i].substring(strArray[i].indexOf('=') + 1));
    }
        
    return retValue;

}

//Update box Carrello
function BoxCartPostBack(){
	//Aggiorno numero elementi in carrello 
    $("#CartBoxCounter").load("getAjax.aspx?cmd=cartcounter");
}


function CartOneCallBack(cmd, params){

    var pageId = document.getElementById('ClientPageId');
    if (pageId == null){
        alert(templateStrings.GetUnknownPanelId('ClientPageId'));
        return false;
    }
    //StartWait();
    //il parametro 4 viene ripetuto con cmd per far capire quale comando era stato richiesto
    var request = cmd + "?" + GetStringParams(params);
		//alert(request);
    WebForm_DoCallback(pageId.value, request, CartOneComeBack, request, CartOneComeBackOnError, true);
}

function CartOneComeBack(returnMessage, context){
    //EndWait();
    var cmd = context.substring(0, context.indexOf('?'));
    var params = GetParams(context);
    switch(cmd){
        
        case "addNewsletter":
            InfoMsgBox(templateStrings.GetAddNewsLetterOk());
            break;
            
        case "removeNewsletter":
            InfoMsgBox(templateStrings.GetRemoveNewsLetterOk());
            break;

        case "addToCart":
            EndWait();
            BoxCartPostBack();
            ShowAddToCartMsgBox(params.title, params.thumbpath, params.qty, params.description);
            break;
        case "addPrizeToCart":
            EndWait();
            BoxCartPostBack();
            ShowAddToCartMsgBox(params.title, params.thumbpath, params.qty, params.description);
            break;            
        case "recoveryPassword":
            InfoMsgBox(templateStrings.GetRecoveryPasswordOk());
            break;
        case "telltofriend":
            InfoMsgBox(templateStrings.GetTellToFriendOk());
            break;
        case "infodemand":
            InfoMsgBox(templateStrings.GetInfoDemandOk());
            break;
        case "waitpricedown":
            InfoMsgBox(templateStrings.GetWaitPriceDownOk());
            break;
        case "waitavailability":
            InfoMsgBox(templateStrings.GetWaitAvailabilityOk());
            break;
        case "addproductkititemvalue":
        case "removeproductkititemvalue":
					var boxCartId = document.getElementById('SheetPanelId');
					if (boxCartId == null){
							alert(templateStrings.GetUnknownPanelId('SheetPanelId'));
							return false;
					}
					__doPostBack(boxCartId.value, '');
					break;				
        default:
						if(returnMessage != "")
							alert("default: " + returnMessage);
          
						break;                        
        
    }
    
}

function CartOneComeBackOnError(returnMessage, context){
 //EndWait();
    var cmd = context.substring(0, context.indexOf('?'));
    var params = GetParams(context);
    switch(cmd){
        
        case "addNewsletter":
            ErrorMsgBox(templateStrings.GetAddNewsLetterKo());
            break;
            
        case "removeNewsletter":
            ErrorMsgBox(templateStrings.GetRemoveNewsLetterKo());
            break;

        case "addPrizeToCart":
        case "addToCart":
						EndWait();
            ErrorMsgBox(templateStrings.GetAddToCartKo());
            break;
            
        case "recoveryPassword":
            ErrorMsgBox(templateStrings.GetRecoveryPasswordKo());
            break;
            
        default:
            ErrorMsgBox("Si è verificato un errore nella comunicazione con il server!<br/><br/>" + returnMessage);
            break;                        
        
    }
    
}


function AddNewsletter(email){

    //Si potrebbe verificare la correttezza dell'email
    var re_email = /\S+@\S+\.\S+/;
	if (!re_email.exec(email)){
		alert("L'email inserita non è valida!");
		return false;
    }

    var params = [];
    params[0] = new Object();
    params[0].name = "email";
    params[0].value = email;
    
    CartOneCallBack("addNewsletter", params);
    
}

function RemoveNewsletter(email){

    //Si potrebbe verificare la correttezza dell'email

    var params = [];
    params[0] = new Object();
    params[0].name = "email";
    params[0].value = email;
    
    CartOneCallBack("removeNewsletter", params);
    
}

function AddPrizeToCart(productId, title, qty, thumbPath, description){

		StartWait();
		
    var params = [];
    params[0] = new Object();
    params[0].name = "productid";
    params[0].value = productId;
    params[1] = new Object();
    params[1].name = "title";
    params[1].value = title;
    params[2] = new Object();
    params[2].name = "qty";
    params[2].value = qty;    
    params[3] = new Object();
    params[3].name = "thumbpath";
    params[3].value = thumbPath;
    if (description != null){
        params[4] = new Object();
        params[4].name = "description";
        params[4].value = description;
    }
    
    CartOneCallBack("addPrizeToCart", params);
    EndWait();
}


function AddToCart(productId, title, qty, thumbPath, description){

		StartWait();
		
    var params = [];
    params[0] = new Object();
    params[0].name = "productid";
    params[0].value = productId;
    params[1] = new Object();
    params[1].name = "title";
    params[1].value = title;
    params[2] = new Object();
    params[2].name = "qty";
    params[2].value = qty;
    params[3] = new Object();
    params[3].name = "thumbpath";
    params[3].value = thumbPath;
    if (description != null){
        params[4] = new Object();
        params[4].name = "description";
        params[4].value = description;
    }
    
    CartOneCallBack("addToCart", params);
    //EndWait();
}

function ShowAddToCartMsgBox(title, thumbPath, qty, description){

    var titleHtml = "<b>" + templateStrings.GetTitleAddToCart() + "</b>";
    
    var text = title;
    text = text + "<br/>" + templateStrings.GetQtyAddToCart() + qty;
    if (description != null)
        text += "<br/><br/>" + description;
    
    var abstractHtml = templateStrings.GetDescrAddToCart();  
    var bodyHtml = "<table width='340px'>";
    bodyHtml += "<tr>";
    bodyHtml += "<td style='padding: 5px; text-align: center;'><img src='" + thumbPath + "' border='0' /></td>"; 
    bodyHtml += "<td style='padding: 5px; text-align: left;color:#000;'>" + text + "</td>";
    bodyHtml += "</tr>";
    bodyHtml += "</table>";
    
    var btnOk = new Object();
    btnOk.link = "cart.aspx";
    btnOk.title = templateStrings.GetLinkAddToCart();

    ShowMsgBox(titleHtml, abstractHtml, bodyHtml, btnOk, null);
    
}

function RecoveryPassword(){
   
    var titleHtml = "<b>" + templateStrings.GetTitleRecoveryPassword() + "</b>";
    var abstractHtml = templateStrings.GetAbstractRecoveryPassword();
    var bodyHtml = templateStrings.GetBodyRecoveryPassword() + "&nbsp;<input type='text' class='textbox' id='recoveryPasswordEmail' />";
    
    var btnOk = new Object();
    btnOk.link = "#";
    btnOk.onClickEvent = "SendRecoveryPasswordRequest();";
    btnOk.title = "Ok";

    ShowMsgBox(titleHtml, abstractHtml, bodyHtml, btnOk, null);
    
}

function SendRecoveryPasswordRequest(){
    var element = document.getElementById('recoveryPasswordEmail');
    if (element == null){
        alert(templateStrings.GetUnableFindEmailControl());
        return false;
    }    
    var params = [];
    params[0] = new Object();
    params[0].name = "email";
    params[0].value = element.value;
    CartOneCallBack("recoveryPassword", params);
}


function OpenCalcItalianIdentificationCode(basepath, firstname, lastname, provinceid, cityid){

    firstname = (firstname == null) ? "" : firstname;
    lastname = (lastname == null) ? "" : lastname;
    provinceid = (provinceid == null) ? "" : provinceid;
    cityid = (cityid == null) ? "" : cityid;
    
    window.open(basepath + 'services/CalcItalianIdentificationCode.aspx?firstname=' + firstname + '&lastname=' + lastname + '&provinceid=' + provinceid + '&cityid=' + cityid,'CalcIIC','width=420,height=420,resize=no;');

}



function URLEncode(value)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = ""+value;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    /*alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );*/
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

	return encoded;
};

function URLDecode(value)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = "" + value;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				//alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
};

