
// JavaScript Document
// VAR DEFINITIONS ----------------
var winPopup;
var isPageValid=true;
// FUNCTIONS -----------------------
function HO_openPopup(theURL,features) {
	if (winPopup) {
		if (!winPopup.closed) {
			winPopup.close();
		}
	}
	winPopup=window.open(theURL,"popup",features);
}
//
function validateReqPass(lgform)
{
	isPageValid=true;
	var elem;
	
	//Controllo Email
	elem = "txtMail"
	resetClass(elem);
	required(lgform,elem);
	validateEmail(lgform,elem);

	return isPageValid;
}
function validateLogin(lgform)
{
	isPageValid=true;
	var elem;
	hideMessage("loginerror");
	resetClass("txtMail");
	//Controllo Email
	elem = "txtMail"
	resetClass(elem);
	required(lgform,elem);
	validateEmail(lgform,elem);
	
	//Controllo Password
	elem = "txtPass"
	resetClass(elem);
	required(lgform,elem);
	validateIntervalLength(lgform,elem,6,10);
	validateMask(lgform,elem,"^([A-Za-z0-9_]+)$");
	
	return isPageValid;
}
//validateContact
function validateContact(lgform)
{
	isPageValid=true;
	var elem;

	//Controllo Email
	elem = "txtMail"
	resetClass(elem);
	required(lgform,elem);
	validateEmail(lgform,elem);
	
	//Controllo Password
	elem = "textarea"
	resetClass(elem);
	required(lgform,elem);
	
	return isPageValid;
}
function validateReg(rgform)
{
	isPageValid=true;
	var elem;

	//Controllo Email
	elem = "txtMail"
	resetClass(elem);
	required(rgform,elem);
	validateEmail(rgform,elem);
	
	//Controllo Password
	elem = "txtPass"
	resetClass(elem);
	required(rgform,elem);
	validateIntervalLength(rgform,elem,6,10);
	validateMask(rgform,elem,"^([A-Za-z0-9_]+)$");
	
	
	//Controllo conferma password
	elem = "txtPass2"
	resetClass(elem);
	validateRetype(rgform,elem,"txtPass");
	
	//FirstName
	elem = "txtName"
	resetClass(elem);
	required(rgform,elem);
	validateMask(rgform,elem,txtRegExp);
	
	
	//LastName
	elem = "txtLastname"
	resetClass(elem);
	required(rgform,elem);
	validateMask(rgform,elem,txtRegExp);
	
	//City
	elem = "txtCity"
	resetClass(elem);
	required(rgform,elem);
	validateMask(rgform,elem,txtRegExp);
	
	//Address
	elem = "txtAddress"
	resetClass(elem);
	required(rgform,elem);

	//Region
	elem = "cmbCountry"
	resetClass(elem);
	required(rgform,elem);
	
	//Controllo ZIP
	elem = "txtZip";
	resetClass(elem);
	required(rgform,elem);
	//validateMask(rgform,elem,"^([A-Za-z0-9_\-]+)$");
	return isPageValid;
}

function expand(controllo)
{
	var msgField = document.getElementById("plus" + controllo);
	if (msgField)
	{
		if (msgField.style.visibility == 'hidden')
		{
			msgField.style.visibility = 'visible';
			msgField.style.display = '';
		}
		else
		{
			msgField.style.visibility = 'hidden';
			msgField.style.display = 'none';
		}
	}
	
	msgField = document.getElementById("minus" + controllo);
	if (msgField)
	{
		if (msgField.style.visibility == 'hidden')
		{
			msgField.style.visibility = 'visible';
			msgField.style.display = '';
		}
		else
		{
			msgField.style.visibility = 'hidden';
			msgField.style.display = 'none';
		}
	}
	
}

function hideAll()
{
	hide("controller");
	hide("effect");
	hide("picker");
	hide("captor");
	hide("timer");
	hide("style");
	hide("stylefull");
	hide("mpanel");
	hide("image");
	hide("tooltip");
	
}
function hide(controllo)
{
	var msgField = document.getElementById("plus" + controllo);
	if (msgField)
	{
		msgField.style.visibility = 'visible';
		msgField.style.display = '';
	}
	msgField = document.getElementById("minus" + controllo);
	if (msgField)
	{
		msgField.style.visibility = 'hidden';
		msgField.style.display = 'none';
	}
}

function changeClass(elem)
{
	var tdelem;
	tdelem = document.getElementById("td"+elem);
	tdelem.className='table-error_01';
}

function resetClass(elem)
{
	var tdelem;
	tdelem = document.getElementById("td"+elem);
	tdelem.className='';
}

function showMessage(elemName)
{
	var msgField = document.getElementById(elemName);
	
	if (msgField)
	{
		msgField.style.visibility = 'visible';
		msgField.style.display = '';
	}
}

function hideMessage(elemName)
{
	var msgField = document.getElementById(elemName);
	if (msgField)
	{
		msgField.style.visibility = 'hidden';
		msgField.style.display = 'none';
	}
}

function required(form,elem)
{
	var isValid = true;
	var field = form[elem];
	if ((field.type == 'hidden' ||
        field.type == 'text' ||
        field.type == 'textarea' ||
        field.type == 'file' ||
        field.type == 'checkbox' ||
        field.type == 'select-one' ||
        field.type == 'password') &&
        field.disabled == false) 
	{

        var value = '';
        // get field's value
        if (field.type == "select-one") 
        {
            var si = field.selectedIndex;
            if (si >= 0) {
                value = field.options[si].value;
            }
         } else if (field.type == 'checkbox') {
			if (field.checked) {
				value = field.value;
			}
        } else {
            value = field.value;
        }
		
        if (trim(value).length == 0) 
        {
			isValid = false;
        } 
    }
	else if (field.type == "select-multiple") 
    { 
        var numOptions = field.options.length;
        lastSelected=-1;
        for(loop=numOptions-1;loop>=0;loop--) 
        {
            if(field.options[loop].selected) 
            {
                lastSelected = loop;
                value = field.options[loop].value;
                break;
            }
        }
        if(lastSelected < 0 || trim(value).length == 0) 
        {
			isValid=false;
        }
    } 
    else if ((field.length > 0) && (field[0].type == 'radio' || field[0].type == 'checkbox')) 
    {
        isChecked=-1;
        for (loop=0;loop < field.length;loop++) {
            if (field[loop].checked) {
                isChecked=loop;
                break; // only one needs to be checked
            }
        }
		if (isChecked < 0) 
		{
			isValid=false;
		}
	}
	if (!isValid)
	{
		showMessage("req"+elem);
		changeClass(elem);
		isPageValid=false;
	}
	else
	{
		hideMessage("req"+elem);
	}
    return isValid;
}

function trim(s) {
        return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

function validateEmail(form,elem) 
{
	var bValid = true;
	var field = form[elem];
    if ((field.type == 'hidden' || 
        field.type == 'text' ||
        field.type == 'textarea') &&
		(field.value.length > 0) &&
		field.disabled == false) 
	{
		if (!checkEmail(field.value)) 
		{
			bValid = false;
		}
	}
	if (!bValid)
	{
		showMessage("inc"+elem);
		changeClass(elem);
		isPageValid=false;
	}
	else
	{
		hideMessage("inc"+elem);
	}
	return bValid;
}

    /**
     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
     * http://javascript.internet.com
     */
    function checkEmail(emailStr) {
       if (emailStr.length == 0) {
           return true;
       }
       var emailPat=/^(.+)@(.+)$/;
       var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
       var validChars="\[^\\s" + specialChars + "\]";
       var quotedUser="(\"[^\"]*\")";
       var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
       var atom=validChars + '+';
       var word="(" + atom + "|" + quotedUser + ")";
       var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
       var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
       var matchArray=emailStr.match(emailPat);
       if (matchArray == null) {
           return false;
       }
       var user=matchArray[1];
       var domain=matchArray[2];
       if (user.match(userPat) == null) {
           return false;
       }
       var IPArray = domain.match(ipDomainPat);
       if (IPArray != null) {
           for (var i = 1; i <= 4; i++) {
              if (IPArray[i] > 255) {
                 return false;
              }
           }
           return true;
       }
       var domainArray=domain.match(domainPat);
       if (domainArray == null) {
           return false;
       }
       var atomPat=new RegExp(atom,"g");
       var domArr=domain.match(atomPat);
       var len=domArr.length;
       if ((domArr[domArr.length-1].length < 2) ||
           (domArr[domArr.length-1].length > 3)) {
           return false;
       }
       if (len < 2) {
           return false;
       }
       return true;
}
function validateRetype(form,elem,elem2)
{
	var isValid = true;
	var field1 = form[elem];
	var field2 = form[elem2];
	var value1 = field1.value;
	var value2 = field2.value;
	if (value1!=value2)
		isValid=false;
	if (!isValid)
	{
		showMessage("cmp"+elem);
		changeClass(elem);
		isPageValid=false;
	}
	else
	{
		hideMessage("cmp"+elem);
	}
	return isValid;
}

function validateMask(form,elem,regExp) 
{
	var isValid = true;
	var field = form[elem];
//	alert(regExp);
	if ((field.type == 'hidden' ||
		field.type == 'text' ||
		field.type == 'password' ||
			field.type == 'textarea' ||
			field.type == 'file') &&
			(field.value.length > 0) &&
			field.disabled == false) {
			var re = new RegExp(regExp);
			if (!field.value.match(re))
				isValid=false;
	}
	
	if (!isValid)
	{
		showMessage("msk"+elem);
		changeClass(elem);
		isPageValid=false;
	}
	else
	{
		hideMessage("msk"+elem);
	}
	return isValid;
}

function validateIntervalLength(form,elem,min,max)
{
	var isValid = true;
	var field = form[elem];
	if ((field.type == 'hidden' ||
        field.type == 'text' ||
        field.type == 'textarea' ||
        field.type == 'file' ||
        field.type == 'checkbox' ||
        field.type == 'select-one' ||
        field.type == 'password') &&
        field.disabled == false) 
	{

        var value = '';
        // get field's value
        if (field.type == "select-one") 
        {
            var si = field.selectedIndex;
            if (si >= 0) {
                value = field.options[si].value;
            }
         } else if (field.type == 'checkbox') {
			if (field.checked) {
				value = field.value;
			}
        } else {
            value = field.value;
        }
        var lunghezza;
        lunghezza =parseInt(trim(value).length);
        if (lunghezza>0) 
        {
			if (lunghezza<parseInt(min) || lunghezza>parseInt(max))
				isValid = false;
        } 
        
    }
	if (!isValid)
	{
		showMessage("int"+elem);
		changeClass(elem);
		isPageValid=false;
	}
	else
	{
		hideMessage("int"+elem);
	}
    return isValid;
}
