// JavaScript Document
	var http = getHTTPObject();


var _initText = "" ;
function ResetBox(sender, textVal)
{
	if (textVal != "" && _initText == "")
	{
		_initText = sender.value;
		sender.value="";
		sender.style.color = "#000";
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////
//Hint Start
//hint object format -> {id: "", hint: "", head: "": style: "" }
var HintElements = new Array();
var ValElements = new Array();
var ClientStrings = new Array();	
var ErrorValidators= new Array();
var ErrorInputs= new Array();

addLoadEvent(prepareInputsForHints);
addLoadEvent(prepareSelectsForHints);

function addLoadEvent(func) 
{
  var oldonload = window.onload;
  if (typeof window.onload != 'function') 
  {
    window.onload = func;
  } 
  else 
  {
    window.onload = function() 
    {
      oldonload();
      func();
    }
  }
}
function prepareInputsForHints() 
{
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++)
	{
	    if((inputs[i].type == "text" || inputs[i].type == "password") && 
	        (inputs[i].className == 'signupinput' || inputs[i].className == 'signupinputError')) 
	    {
	        //show hint on focus
	        inputs[i].onfocus = function () 
		    {
		        showHint(this);
		    }
		    // when the cursor moves away from the field, hide the hint
		    inputs[i].onblur = function () 
		    {
		        hideHint(); validate(this);
		    }
		    //validate input's content 
//		    inputs[i].onchange = function () 
//		    {
//		        validate(this); 
//		    }
		}
	}
}

function prepareSelectsForHints() 
{
	var selects = document.getElementsByTagName("select");
	for (var i=0; i<selects.length; i++)
	{
        //show hint on focus
        selects[i].onfocus = function () 
	    {
	        showHint(this);
	    }
	    // when the cursor moves away from the field, hide the hint
	    selects[i].onblur = function () 
	    {
	        hideHint();
	    }
	    //validate content 
//	    selects[i].onchange = function () 
//	    {
//	        validate(this); 
//	    }
	}
}

function buildHintMarkup(ele, head, body, showimg)
{
    var hintstyle = "signupBBdiv";
    var pointerstyle = ele.attributes["hintstyle"];
        
    if(typeof(head) == "object")
        head = head.value;
    if(typeof(body) == "object")
        body = body.value;
    if(typeof(pointerstyle) == "object")
        pointerstyle = pointerstyle.value;
    
    var hintpos = findPos(ele);
    
    var top = hintpos.top + 4;
    var width = hintpos.width;
    var left = hintpos.left + width + 10;
       
    switch(pointerstyle)
    {
        case "top" :
            pointerstyle = "hint-pointer_top";
            top = top + 30  ;
            left = left - width + 50;
            break;
        case "bottom" :
            pointerstyle = "hint-pointer_bottom";
            top = top - 50  ;
            left = left - width;
            break;
            
        case "right" :
            pointerstyle = "hint-pointer_right";
            left = left - width - 240;
            break;
        default:
            hintstyle = " signupBBdiv";
            pointerstyle = "signupBBleft";
            break;
    }
      
    if(typeof(pointerstyle) == "undefined" || !pointerstyle)
        pointerstyle = "signupBBleft";
        
    var hintMarkup = "<div class=\"" + hintstyle + "\">";
    hintMarkup += "<div class=\""+pointerstyle+"\"></div>";
    hintMarkup += "<div class=\"signupBBcontent\">";
    if(typeof(head) != "undefined" || head)
    {
        if(showimg)
            hintMarkup += "<div class=\"signupBBerrorHead\">" + head + "</div>";
        else
            hintMarkup += "<div class=\"signupBBHead\">" + head + "</div>";
    }
    else
        hintMarkup += "<div class=\"signupBBerrorHead\">&nbsp; </div>";
    hintMarkup += "<div style=\"clear:left;\">" + body + "</div> ";
    hintMarkup += "</div>";  
    hintMarkup += "</div>";              

    return {markup:decode(hintMarkup),left:left,top:top};
}

function showHint(ele)
{
    if(typeof(ele) == "undefined" || !ele || ele.style.display == 'none')
        return;
    
    //display any validation err on the page.
    if(ErrorInputs.length > 0)
    {
        var errObj = ErrorValidators[ErrorInputs.indexOf(ele.id)];
        if(typeof(errObj) == "undefined" || !errObj)
            return;
        showErr(ele, errObj.msg, errObj.head);
        return;
    }
        
    var hint = document.getElementById("divHint");
  
    if(typeof(hint) == "undefined" || ! hint)
    {
        hint = document.createElement("div");
        hint.id= "divHint";
        hint.style.position = "absolute";
        document.body.appendChild(hint, ele.parentNode);
        //ele.parentNode.appendChild(hint, ele.parentNode);
    }
    
    var hintobj = GetHint(ele);
    var head = hintobj.head;
    var body = hintobj.hint;
    if(!body || body == "")
        return;
    var hintbody = buildHintMarkup(ele, head, body, false);

    hint.style.left = hintbody.left + "px";
    hint.style.top = hintbody.top + "px";
    if(hintbody.markup && hintbody.markup != "")
        hint.innerHTML = hintbody.markup;
    hint.style.display = "inline";
    hint.style.paddingTop = "5px";
    //ele.className = ele.attributes["orig_class"];
}

function decode(text)
{
    return text.replace(/&lt;/g, "<").replace(/&gt;/g, ">");
}

function GetHint(ele)
{
//hint object format -> {id: "", hint: "", head: "": style: "" }
    if(!HintElements)
        return;
    for(var i=0; i<HintElements.length; i++)
    {
        var hintObj = HintElements[i];
        if(!hintObj)
            break;
        if(ele.id === hintObj.id)
            return {hint: hintObj.hint, head:hintObj.head};
    }
    return {hint:"", head:""};
}

function SetHint(ele, hint)
{
//hint object format -> {id: "", hint: "", head: "": style: "" }
    if(!HintElements)
        HintElements = new Array();
    var hintObj;    
    for(var i=0; i<HintElements.length; i++)
    {
        var v = HintElements[i];
        if(ele.id === v.id)
        {
            hintObj = v;
            break;
        }
    }
    if(hintObj)
    {
        hintObj.hint = hint.hint;
        hintObj.head = hint.head; 
    }
    else
        HintElements.push({id:ele.id, hint:hint.hint, head:hint.head, style: hint.style});
}

function GetValidationObj(ele)
{
//var validationObj = {id: "", type: "", val: "", body: "", head: "", style: ""};
    if(!ValElements)
        return;
    
    // added by Derik H. Jang
    // handle exception which fired when 'ele' variables is null.
    // if 'ele' is null, IE 7 can't submit form data because an exception.
    if (ele == null || typeof(ele) == 'undefined')
		return;
		
    var validations = new Array();
    
    for(var i=0; i<ValElements.length; i++)
    {
        var valObj = ValElements[i];
        if(!valObj)
            break;
        
        if(ele.id === valObj.id)
            validations.push(valObj);
    }
    return validations;
}

function showErr(ele, msg, head)
{
    if(typeof(ele) == "undefined" || !ele)
        return false;
        
    var hint = document.getElementById("divHint");
    if(typeof(hint) == "undefined" || ! hint)
    {
        hint = document.createElement("div");
        hint.id="divHint";
        hint.style.position = "absolute";
        document.body.appendChild(hint, ele.parentNode); 
    }
    
    if(head && typeof(head) == "object")
        head = head.value;
    if(msg && typeof(msg) == "object")
        msg = msg.value;
    
    var hintbody = buildHintMarkup(ele, head, msg, true);
    if(hintbody.markup && hintbody.markup != "")
        hint.innerHTML = hintbody.markup;
    hint.style.left = hintbody.left + "px";
    hint.style.top = hintbody.top + "px";
    hint.style.display = "inline";
    //ele.className = "signupinputError";
    //ele.focus();
}

function hideHint()
{
//    if(ErrorValidators.length > 0)
//        return;
    var hint = document.getElementById("divHint");
    
    if(typeof(hint) == "undefined" || !hint)
        return;
    hint.style.display = "none";
}


var nameRegex = /^([a-zA-Z]+)$/;
var emailRegex = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
                ///^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/;
var dobRegex = /^([0-9]){2}(\/|-){1}([0-9]){2}(\/|-)([0-9]){4}$/;

function validate(ele)
{
    //var validationObj = {id: "", type: "", val: "", body: "", head: "", style: ""};        
    var valObj = GetValidationObj(ele);
    
    var flag = true;
    
    if(!valObj || valObj.length <=0)
        return flag;
    
    for(var i=0; i<valObj.length; i++)
    {
        if(!flag)
            break;
        flag = ValidateElement(ele, valObj[i]);
    }
    return flag;
}
function ValidateElement(ele, valObj)
{
    if(typeof(ele) == "undefined" || typeof(valObj) == "undefined")
	    return false;
	
    var result = true;
	if(valObj && typeof(valObj.type) != "undefined")
	{
	    var eleDefaultStyle = "signupinput";
	    var eleErrStyle = (valObj.style && valObj.style != "" && valObj.style != null)? valObj.style : 'signupinputError';
	    switch(valObj.type)
	    {
	        case "required":
	            if(valObj.val == true || valObj.val == "true")
                {
                    //required field validation
                    if(ele.value.length <= 0)
                    {
                        msg = valObj.body;
                        head = valObj.head;
                        if(typeof(msg) == "object")
                                msg = msg.value;
                        if(typeof(head) == "object")
                            head = head.value;
                        updateErrLists(ele.id, {id:ele.id, msg:msg, head:head, style: eleErrStyle}, false);
                        result = false;
                    }
                    else
                        updateErrLists(ele.id, {style: eleDefaultStyle}, true);
                }
	            break;
	        case "minlength":
	            //min length validation
                if(ele.value.length < valObj.val)
                {
                    msg = valObj.body;
                    head = valObj.head;
                    if(typeof(msg) == "object")
                            msg = msg.value;
                    if(typeof(head) == "object")
                        head = head.value;

                    updateErrLists(ele.id, {id:ele.id, msg:msg, head:head, style:eleErrStyle}, false);
                    result = false;
                }
                else
                    updateErrLists(ele.id, {style: eleDefaultStyle}, true);
                break;
	        case "comparewith":
	            var eleToCompare = document.getElementById(valObj.val);
                if(eleToCompare)
                {
                   if(ele.value != eleToCompare.value)
                    {
                        msg = valObj.body;
                        head = valObj.head;
                        if(typeof(msg) == "object")
                            msg = msg.value;
                        if(typeof(head) == "object")
                            head = head.value;
                            
                        updateErrLists(ele.id, {id:ele.id, msg:msg, head:head, style:eleErrStyle}, false);
                        result = false;
                    }
                    else
                        updateErrLists(ele.id, {style: eleDefaultStyle}, true);
                }
	            break;
	        case "regex":
	            //regex validation
                var regex = valObj.val; 
                switch(regex)
                {
                    case "name":
                        result = validateRegex(ele, nameRegex, valObj);
                        break;
                    case "dob":
                        result = validateRegex(ele, dobRegex, valObj);
                        break;
                    case "email":
                        result = validateRegex(ele, emailRegex, valObj);
                        break;
                    default:
                        result = validateRegex(ele, regex, valObj);
                        break;    
                }
	            break;
	        case "customfunc":
	            var customfunc = valObj.val;
	            if(customfunc && typeof(customfunc) == "function")
	                result = customfunc(ele.id, valObj);
	            break;
	        default:
	            break;
	    }
	} 
	return result;
}

function validateRegex(ele, regex, valObj)
{
    var msg;
    var head;
    var regex = new RegExp(regex);
    var result = true;
    
    if(!ele)
        return result;
    
    var eleDefaultStyle = "signupinput";
	var eleErrStyle = (valObj.style && valObj.style != "" && valObj.style != null)? valObj.style : 'signupinputError';
    
    if(regex.test(ele.value) != true)
    {
        msg = valObj.body;
        head = valObj.head;
        
        if(typeof(msg) == "object")
            msg = msg.value;
        if(typeof(head) == "object")
            head = head.value;

        updateErrLists(ele.id, {id:ele.id, msg:msg, head:head, style:eleErrStyle}, false);
        result = false;
    }
    else
        updateErrLists(ele.id, {style: eleDefaultStyle}, true);
    return result;
}

function updateErrLists(eleId, errObj, isvalid)
{
   var ele = document.getElementById(eleId);
   var style = "";
   if(typeof(errObj) != "undefined" && errObj.style != null)
       style = errObj.style;
   if(!isvalid)
   {
        if(ErrorInputs.indexOf(eleId) != -1)
            return;
        showErr(ele,errObj.msg, errObj.head);
        ele.className = style;//"signupinputError";
        ErrorValidators.push(errObj);
        ErrorInputs.push(eleId);
   }
   else
   {
        hideHint();
        if(ErrorInputs.indexOf(eleId) == -1)
            return;
        ele.className = style;
        ErrorValidators.splice(ErrorInputs.indexOf(eleId), 1);
        ErrorInputs.splice(ErrorInputs.indexOf(eleId), 1);
   }
}

function GetClientString(key)
{
    if(!key || typeof(ClientStrings) == "undefined")
        return "";
    for(var i=0; i<ClientStrings.length; i++)
    {
        var errObj = ClientStrings[i];
        if(!errObj || typeof(errObj) == "undefined")
            break;
        if(errObj.key == key)
            return errObj.msg;    
    } 
    return decode(key);
}

[].indexOf || (Array.prototype.indexOf = function(v,n)
{
  n = (n==null)?0:n; var m = this.length;
  for(var i = n; i < m; i++)
    if(this[i] == v)
       return i;
  return -1;
});

function findPos(obj) 
{
	var curleft = curtop = curwidth = 0;
	var elementNode = obj;
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	if(elementNode.offsetWidth) 
	{
		curwidth = elementNode.offsetWidth;
	} 
			
	return {left:curleft, top:curtop, width:curwidth};
}

function ValidateForm()
{
    var isValid = false;
    
    if(ValElements.length >0)
    {
        for(var i=0; i<ValElements.length; i++)
        {
            var valObj = ValElements[i];
            validate(document.getElementById(valObj.id));
        }
    }
    if(ErrorInputs.length <=0)
    {
       isValid = true;
    }
    else
    {
        //display any validation err on the page. 
        for(var i=0; i<ValElements.length; i++)
        {
            var j = ErrorInputs.indexOf(ValElements[i].id);
            if(j >= 0)
            {
                var errObj = ErrorValidators[j];
                if( errObj && typeof(errObj) != "undefined" )
                {
                    var ele = document.getElementById(errObj.id);
                    showErr(ele, errObj.msg, errObj.head);
                    ele.focus();
                    isValid = false;
                    break;
                }
            }
        }
    }
    return isValid;
}

//Hint End
//////////////////////////////////////////////////////////////////////////////////////////////////////

function isNumeric(s) 
{ 
	var validChars = "0123456789"; 
	var c;
	for (i = 0; i < s.length; i++) 
	{
		c = s.charAt(i);
		if (validChars.indexOf(c) == -1) 
			return false;
	}
	return true;
}
//Password Start
function ValidatePassword(id, valObj)
{
    var Password = document.getElementById('password');
    var firstname = '';
    var lastname = '';
    var email = document.getElementById('email');
    var strPassword = new String(Password.value);
    var flag = true;
    var errMsg = "";
    
    //remove password ele from the errList
	updateErrLists(id, {style: 'signupinput'}, true);
    
    // Password Checker
	if (Password.value =="") {
		errMsg = GetClientString('PasswordErrorMessage');
		flag = false;
	} else if (strPassword.length < 6) {
		errMsg = GetClientString('PasswordErrorMessage');
		flag = false;
	} else if (email.value.length > 2 && strPassword.toUpperCase().lastIndexOf(email.value.toUpperCase()) > -1) {
        errMsg = GetClientString('PasswordErrorMessage7');		
		flag = false;
	} else if (Password.value.indexOf(" ") >= 0) {
		errMsg = GetClientString('PasswordErrorMessage8');
		flag = false;
	} 
	
	if(!flag)
	{
	    //remove prev confirm pwd errs
	    updateErrLists('password2', {style: 'signupinput'}, true);
        //display err hint
        updateErrLists(id, {id:id, msg:errMsg, head: valObj.head, style: 'signupinputError'}, false);
	}
	
	return flag;
}

function ValidateConfPassword(id, valObj)
{
    var result = true;
    var pwdEle = document.getElementById('password');
    
    if(!pwdEle)
        return result;
    
    if(validate(pwdEle))
    {
        var ele = document.getElementById(id);
        if(!ele)
            return result;
        if(ele.value != pwdEle.value)
        {
            updateErrLists(ele.id, {id:ele.id, msg:valObj.body, head:valObj.head, style:'signupinputError'}, false);
            result = false;
        }
        else
            updateErrLists(ele.id, {style: 'signupinput'}, true);
    }
    
    return result;
}



function ValidateRagioneSociale(id, valObj)
{
    var ragSociale = document.getElementById('ragSociale');
    var aziendaCheck = document.getElementById('aziendaCheck').checked;
    var strRagSociale = new String(ragSociale.value);
    var flag = true;
    var errMsg = "";
    
    //remove password ele from the errList
	updateErrLists(id, {style: 'signupinput'}, true);
    if(aziendaCheck==true){
    // Password Checker
		
		if (ragSociale.value =="") {
			errMsg = GetClientString('ragSocialeErrorMessage');
			flag = false;
		} 
	}
	if(!flag)
	{
        //display err hint
        updateErrLists(id, {id:id, msg:errMsg, head: valObj.head, style: 'signupinputError'}, false);
	}
	
	return flag;

}

function ValidateCodiceFiscale(id, valObj)

{
    var codFiscale = document.getElementById('codFiscale');
    var aziendaCheck = document.getElementById('aziendaCheck').checked;
    var flag = true;
    var errMsg = "";
    
    //remove password ele from the errList
	updateErrLists(id, {style: 'signupinput'}, true);
    if(aziendaCheck==true){
		controllo=verificaCFPI(codFiscale.value);	
	}
	else	controllo=ControllaCF(codFiscale.value);	
		
	if (codFiscale.value =="") {
		errMsg = GetClientString('codFiscaleErrorMessage');
		flag = false;
	}
	else if(controllo==-1){
		errMsg = GetClientString('codFiscaleErrorMessage2');
		flag = false;
	}
	if(!flag)
	{
        //display err hint
        updateErrLists(id, {id:id, msg:errMsg, head: valObj.head, style: 'signupinputError'}, false);
	}
	
	return flag;

}

function ValidatePartitaIva(id, valObj)

{
    var pIva = document.getElementById('pIva');
    var aziendaCheck = document.getElementById('aziendaCheck').checked;
    var flag = true;
    var errMsg = "";
    
    //remove password ele from the errList
	updateErrLists(id, {style: 'signupinput'}, true);
    if(aziendaCheck==true){
		if (pIva.value =="") {
			errMsg = GetClientString('pIvaErrorMessage');
			flag = false;
		}
		else{
			controllo=verificaCFPI(pIva.value);
			if(controllo==-1){
				errMsg = GetClientString('pIvaErrorMessage2');
				flag = false;
			}
		}
	}

	if(!flag)
	{
        //display err hint
        updateErrLists(id, {id:id, msg:errMsg, head: valObj.head, style: 'signupinputError'}, false);
	}
	
	return flag;

}




function getHTTPObject() {
	var xmlhttp;

  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {

    try {

      xmlhttp = new XMLHttpRequest();

    } catch (e) {

      xmlhttp = false;

    }

  }

  return xmlhttp;

}
var resultAjaxCheck;

function handleHttpResponse() {
	if (http.readyState == 4) {
		// Split the comma delimited response into an array 
		resultAjaxCheck = http.responseText; 
		
	}
	else
		alert(http.readyState);
}

function ValidateUsername(id, valObj)
{
    var Username = document.getElementById('username').value;
	var strUsername = new String(Username);
//    var email = document.getElementById('email');
    var errMsg = "";
    var url = "../php/checkCampi.php?username=";
    //remove password ele from the errList
	updateErrLists(id, {style: 'signupinput'}, true);

    var flag = true;
    var result = true;
	
	if (Username =="") {
		errMsg = GetClientString('UsernameErrorMessage2');
		flag = false;
	} else if (strUsername.length < 4) {
		errMsg = GetClientString('UsernameErrorMessage3');
		flag = false;
	} else if (strUsername.match(/[^A-Za-z0-9_.]/)) {
		errMsg = GetClientString('UsernameErrorMessage3');
		flag = false;
	}
	if(flag){
		http.open("GET", url + escape(Username), false); 
		http.send(null);
		// USERNAME Checker

		if(http.responseText=='true') {
			errMsg = GetClientString('UsernameErrorMessage');
			flag = false;
		}
	}
	if(!flag)
	{
        //display err hint
        updateErrLists(id, {id:id, msg:errMsg, head: valObj.head, style: 'signupinputError'}, false);
	}
	
	return flag;
}


function ValidateNomePagina(id, valObj)
{

//	document.getElementById('nomePagina').value=document.getElementById('nomePagina').value.replace(/\w|\W/,"_");
    var nomePagina = document.getElementById('nomePagina').value;
	scriviNomePagina(nomePagina);
    var cat = document.getElementById('categoria').value;
	var strNomePagina = new String(nomePagina);
//    var email = document.getElementById('email');
    var errMsg = "";
	if(cat=='modelli')	var url = "../php/checkCampi.php?cat="+cat+"&sesso="+document.getElementById('sesso').value+"&nomePagina=";
	else var url = "../php/checkCampi.php?cat="+cat+"&nomePagina=";
    //remove password ele from the errList
	updateErrLists(id, {style: 'signupinput'}, true);
    var flag = true;
    var result = true;
	if (nomePagina =="") {
		errMsg = GetClientString('NomePaginaErrorMessage2');
		flag = false;
	} else if (strNomePagina.length < 4) {
		errMsg = GetClientString('NomePaginaErrorMessage3');
		flag = false;
	}
	else if(nomePagina.search(/[^a-z0-9_]/gi)!=-1){
		errMsg = GetClientString('NomePaginaErrorMessage3');
		flag = false;
	}
	if(flag){
		http.open("GET", url + escape(nomePagina), false); 
		http.send(null);

		// NomePagina Checker

		if(http.responseText=='true') {
			errMsg = GetClientString('NomePaginaErrorMessage');
			flag = false;
		}
	}
	if(!flag)
	{
        //display err hint
        updateErrLists(id, {id:id, msg:errMsg, head: valObj.head, style: 'signupinputError'}, false);
	}
	
	return flag;
}

//Email Start
function CheckDuplicateEmail(id, valObj)
{
    var ele = document.getElementById(id);
    var prevEmail = GetClientString("PrevEmail");
    
    if(ele.value == prevEmail)
    {
        updateErrLists(id, {id:id, msg:valObj.body, head: valObj.head, style: 'signupinputError'}, false);
		return false; 
    }
    else
    {
        updateErrLists(id, {style: 'signupinput'}, true);
        return true;
    }
}

function ValidateConfEmail(id, valObj)
{
    var result = true;
    var emailEle = document.getElementById('Email');
    
    if(!emailEle)
        return result;
    
    if(validate(emailEle))
    {
        var ele = document.getElementById(id);
        if(!ele)
            return result;
		
		var email1 = emailEle.value.toLowerCase();            
		var email2 = ele.value.toLowerCase();            
        if(email1 != email2)
        {
            updateErrLists(ele.id, {id:ele.id, msg:valObj.body, head:valObj.head, style:'signupinputError'}, false);
            result = false;
        }
        else
            updateErrLists(ele.id, {style: 'signupinput'}, true);
    }
    
    return result;
}

function PreventEmailConfirmPasteByMouse(e)
{
	var btnType = 0;
    
    btnType = e.button;
		
	if(btnType == 2 || btnType == 3)
        MustTypeConfirmEmail();
}

function PreventEmailConfirmPasteByKeyboard(e)
{	               
	SetCtrlKey(e);
	
	if(e.keyCode == "86" && ctrlKeyCode == "17") //ctrl+v
	{                    
		confirmEmailTextBox.value = "";
		MustTypeConfirmEmail();
		e.preventDefault();
	}
}

function SetCtrlKey(e)
{
	var pressedKeyCode = e.keyCode; 
	if (pressedKeyCode == "17") //ctrl
	{
		ctrlKeyCode = pressedKeyCode;                    
	}	
}

function UnsetCtrlKey(e)
{
	var releasedKeyCode = e.keyCode; 
	if (releasedKeyCode == "17") //ctrl
	{
		ctrlKeyCode = 0;                    
	}	
}

//Email End
//Age check
function ValidateAge(id, valObj)
{
    var day = document.getElementById('Day');
    var month = document.getElementById('Month');
    var year = document.getElementById(id);
    
    //remove age ele from errList
	updateErrLists(id, {style: ''}, true);
    
    if(day.value == -1 || month.value == -1 || year.value == -1)
    {
        updateErrLists(id, {id:id, msg:GetClientString('BirthdayErrorMessage'), head: valObj.head, style: ''}, false);
		return false;
    }
    return true;
}
//Age check end
//Gender Start
function ValidateGender(id, valObj)
{
    var M = document.getElementById('genderM');
    var F = document.getElementById('genderF');
    if(!M.checked && !F.checked)
    {
        updateErrLists(F.id, {id:M.id, msg:GetClientString('GenderErrorMessage'), head: valObj.head, style: null}, false);
        return false;
    }
    updateErrLists(F.id, {style: null}, true);
    return true;
}
//Gender End
//Preferred Site & Language Start
function handleOnChangePreferredCulture(id) 
{
    var ele = $get('TermsDiv');
    
    if(ele)
    {
        var prefCultureDropDown = $get(id);
        if(prefCultureDropDown)
        {   
            //display secondary disclaimer for ja-JP, ko-KR
            DisplaySecondaryUserAgreement(prefCultureDropDown.value);
            //display disclaimer for selected pref culture.
            ele.innerHTML = GetClientString(prefCultureDropDown.value);
        }
    }
}
//Terms Start
function ValidateTermsOfUse(id, valObj)
{
    var tos = document.getElementById(id);
    // TOS check
	if (!tos.checked) 
	{
		//alert("Please check the agree to our terms box.");
		updateErrLists(id, {id:id, msg: GetClientString('TOSErrorMessage'), head: valObj.head, style:null}, false);
		tos.onclick = function()
		               {
		                if(tos.checked)
		                    hideHint();
		                else 
		                    showHint(tos);
		               }
		return false;
	}
	
	updateErrLists(id, {style: null}, true);
	return true;
}
//Terms End

function ShowValidationErrors()
{
    for(var i=0; i < ErrorInputs.length; i++)
    {
        var errObj = ErrorValidators[i];
        if( errObj && typeof(errObj) != "undefined" )
        {
            var ele = document.getElementById(errObj.id);
            showErr(ele, errObj.msg, errObj.head);
            ele.className = errObj.style;
        }
    }
}

//safety tips popup
// Security Pop-up code.

var continueButton;
function DisplaySafetyTips(content, title, continueBtnTitle, cancelBtnTitle)
{
    var p = FotoPortale.UI.Popup.create(content, title, hideSafetyTips);
    p.addCssClass('popUp');
    continueButton = p.add_button(continueBtnTitle, false);
    continueButton.disabled = true;

    p.show();                
}   

function hideSafetyTips(popup, args)
{
    var v = document.getElementById('safetytipsread');
    if(!v.checked)
    {
        popup.show();
    }
}

function toggleContinueBtn()
{
    var v = document.getElementById('safetytipsread');
    if(v && v.checked)
    {
        continueButton.disabled = false;
    }
    else
    {
        continueButton.disabled = true;
    }
    return continueButton.enabled;
}

//
function openWin(url, title, width, height)
{
    window.open(url,title,"height="+height+",width="+width+",status=yes,toolbar=no,menubar=no,location=no,resizable=no");
}

function adjustTabHeight(tab1, tab2)
{
    var t1 = document.getElementById(tab1);
    var t2 = document.getElementById(tab2);

    if(t1 && t2)
    {
        if(t1.offsetHeight - t2.offsetHeight > 6)
        {
            t2.style.height = "27px";
        }
        else if(t2.offsetHeight - t1.offsetHeight > 6)
        {
            t1.style.height = "27px";
        }
    }
}

function adjustTabHeight(tab1, tab2, tab3)
{
    var t1 = document.getElementById(tab1);
    var t2 = document.getElementById(tab2);
    var t3 = document.getElementById(tab3);

    if(t1 && t2 && t3)
    {
        if(t1.offsetHeight - t2.offsetHeight > 6)
        {
            t2.style.height = "27px";
            t3.style.height = "27px";
        }
        else if(t2.offsetHeight - t1.offsetHeight > 6)
        {
            t3.style.height = "27px";
            t1.style.height = "27px";
        }
        else if(t3.offsetHeight - t1.offsetHeight > 6)
        {
			t2.style.height = "27px";
            t1.style.height = "27px";
        }
    }
}
function ValidateSignupInviteForm(id)
{
    //the id passed is the first input box id(could be any id). 
    //and holds the err msgs that are required 
    var eles = document.getElementsByTagName("input");
    if(!eles)
        return;
        
    var isValid = true;    
    var errEle = null;
    var valType = null;
    var emptyEleCount = 0;
    var eleCount = 0;
    var firstEleIndex = null;
    
    for(var i =0; i < eles.length; i++)
    {
        if(eles[i].className === "signupinput2" || eles[i].className === "signupinput2 signupinput2error")
        {
            if(!firstEleIndex)
                firstEleIndex = i;
            //count the number of email inputs
            eleCount++;

            //clear prev errs
            updateErrLists(eles[i].id, {style:'signupinput2'}, true);
            
            if(eles[i].value.length == 0)         
                emptyEleCount++; //count number of empty inputs
    
            //validate email(s) entered
            if(eles[i].value.length > 0 && !emailRegex.test(eles[i].value))      
            {
                valType = "regex";
                errEle = eles[i];
                isValid = false;
                //break out of the loop if there's invalid input
                break;
            }
        }
    }
    
    //if all the inputs are empty show err msg for the first input
    if(errEle == null && emptyEleCount == eleCount)
    {
        errEle = eles[firstEleIndex];
        valType = "required";
        isValid = false;
    }   
    
    //get all validation objs for these inputs
    //Note: as all the text boxes had same type of validations and need to display same err msgs,
    //stored all the validation objects under one id(the first text box) so that they can be used for all validations.
    var valObjs = GetValidationObj($get(id));
    var valObj = null;
    
    for(var i = 0; i < valObjs.length; i++)
    {
        if(valObjs[i].type === valType)
        {
            valObj = valObjs[i];
            break;
        }
    }
    
    if(errEle && valObj)
    {
        updateErrLists(errEle.id, {id:errEle.id, msg:valObj.body, head:valObj.head, style: valObj.style}, false);
    }
    
    return isValid;
}


// setting the webservice path
// This method also sets the handler that will be invoked before making reqests
// Sets handler to unload the eventhandlers
function setServicePath(wsPath)
{
	FotoPortale.Web.Modules.Signup.Services.SignupService.set_path(wsPath);
}

/**************************************
    Controllo del Codice Fiscale
    Linguaggio: JavaScript
***************************************/

function ControllaCF(cf)
{
    var validi, i, s, set1, set2, setpari, setdisp;
    if( cf == '' )  return '';
    cf = cf.toUpperCase();
    if( cf.length != 16 )
        return -1;
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for( i = 0; i < 16; i++ ){
        if( validi.indexOf( cf.charAt(i) ) == -1 )
            return -1;
    }
    set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    s = 0;
    for( i = 1; i <= 13; i += 2 )
        s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    for( i = 0; i <= 14; i += 2 )
        s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
        return -1;
    return 1;
}


/*****************************************
    Controllo della Partita I.V.A.
    Linguaggio: JavaScript
******************************************/

function ControllaPIVA(pi)
{
    if( pi == '' )  return '';
    if( pi.length != 11 )
        return -1;
    validi = "0123456789";
    for( i = 0; i < 11; i++ ){
        if( validi.indexOf( pi.charAt(i) ) == -1 )
            return -1;
    }
    s = 0;
    for( i = 0; i <= 9; i += 2 )
        s += pi.charCodeAt(i) - '0'.charCodeAt(0);
    for( i = 1; i <= 9; i += 2 ){
        c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
        if( c > 9 )  c = c - 9;
        s += c;
    }
    if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
        return -1;
    return 1;
}

function verificaCFPI(cod)
{
	err=''
	if( cod.length == 16 )
		err = ControllaCF(cod);
	else if( cod.length == 11 )
		err = ControllaPIVA(cod);
	else
		err = -1;
	return err;
}
