// <!-- by Mind --> COMMON JS CODE FOR SCRIPT PAGE - require contents.js - IT

// check for number (float)
function validNum (num) { 
	var RefString="-1234567890.,";
	var chr;
	for (var i=0; i<num.length; i++)	{
		chr=num.charAt(i);
		if (RefString.indexOf (chr, 0)==-1)	return false;
	}
	try {
		return !isNaN(parseFloat(comma2point(num)));
	} catch (e) { 
		return true; 
	}
}

// check for number (integer)
function validInt (num) { 
	var RefString="-1234567890";
	var chr;
	for (var i=0; i<num.length; i++)	{
		chr=num.charAt(i);
		if (RefString.indexOf (chr, 0)==-1)	return false;
	}
	try {
		return !isNaN(parseInt(comma2point(num),10));
	} catch (e) { 
		return true; 
	}
}

// arrotonda un valore decimale
function roundVal(num,dec) {
	try {
		if ((num==""&&num!="0")||isNaN(num))		return "";
		num=parseFloat(num);
		if (dec==0)			return Math.round(num);
		if (!num.toFixed)	return num;	 // no supportato
		return				num.toFixed(dec);	
	} catch(e) {
	
		return num;
	}
}

// comma to point
function comma2point(val) {
	try {
		return val.replace(",",".");
	} catch (e) {
		var num=""+val;
		var pos=num.indexOf(",");
		for (;pos!=-1;) {
			num=""+num.substring(0,pos)+"."+num.substring(pos+1,num.length);
			pos=num.indexOf(",");
		}
		return num;
	}
}

// point to comma
function point2comma(val) {
	try {
		return val.replace(".",",");
	} catch (e) {
		var num=""+val;
		var pos=num.indexOf(".");
		for (;pos!=-1;) {
			num=""+num.substring(0,pos)+","+num.substring(pos+1,num.length);
			pos=num.indexOf(".");
		}
		return num;
	}
}

//check number field
function checkNum(obj,minlen,maxlen,str,dec,obblig) { 
	if (isNull(obj))	return false;
	var len=obj.value.length;

	if (len==0&&!obblig)	return true;
	
	if (len<=0)	{	
		alert("Devi inserire un valore nel campo '"+str+"'.");
		obj.focus();	return false;	}
	
	// NO DECIMAL
	if (!dec && (obj.value.indexOf(",")!=-1 || obj.value.indexOf(".")!=-1))	{	
		alert("Utilizzare solo numeri interi nel campo '"+str+"'.");
		obj.focus();	return false;	}

	// CHECK DECIMAL POINT
	if (dec && obj.value.indexOf(",")!=-1)	{	
		alert("Utilizzare il punto (.) per separare i decimali nel campo '"+str+"'.");
		obj.focus();	return false;	}

	if (!validNum(obj.value)) {	
		alert("Inserire solo valori numerici nel campo '"+str+"'.");
		obj.focus();	return false;	}

	if (obj.value<minlen)	{	
		alert("Il valore minimo per il campo '"+str+"' e' "+minlen+".");
		obj.focus();	return false;	}

	if (obj.value>maxlen)	{	
		alert("Il valore massimo per il campo '"+str+"' e' "+maxlen+".");
		obj.focus();	return false;	}

	return true;
}

// check string lenght
function checkLength(obj,maxlen,str) {
	if (isNull(obj))	return false;
	var len=obj.value.length;
	if (len>maxlen) {
		alert("Il campo '"+str+"' e' troppo lungo.\nCi sono "+(len-maxlen)+" caratteri in eccesso.");
		obj.focus();
		return false;
	}
	return true;
}

// check string min lenght
function checkMinLength(obj,minlen,str) {
	if (isNull(obj))	return false;
	if (obj.value.length<minlen) {
		alert("E' necessario completare il campo '"+str+"'\n(minimo "+minlen+" caratteri).");
		obj.focus();
		return false;
	}
	return true;
}

// check email format
function checkMail (obj,nome,obblig) {
	if (isNull(obj))	return false;
	var val=obj.value;
	
	if (obblig&&val.length<6) {		
		alert("L'email "+nome+" e' troppo corta\n(es: nome@nomeweb.com)");
		obj.focus();		return false;	}
	if (!obblig&&val=="")	return true;
	if (val.length<6) {
		alert("L'email "+nome+" e' troppo corta.\n(es: nome@nomeweb.com)");
		obj.focus();		return false;	}
	if (val.indexOf('.')==-1||val.indexOf('@')==-1||val.indexOf('@')!=val.lastIndexOf('@')||val.indexOf(':')!=-1||val.indexOf('"')!=-1||val.indexOf("'")!=-1) {
		alert("L'email "+nome+" non e' valida.\n(es: nome@nomeweb.com)");
		obj.focus();		return false;	}
	if (val.indexOf(' ')!=-1) {
		alert("L'email "+nome+" non e' valida.\nNon utilizzare spazi.\n(es: nome@nomeweb.com)");
		obj.focus();		return false;	}

	return true;	
}

// check Url format
function checkUrl (obj,nome,obblig) {
	if (isNull(obj))	return false;
	var val=obj.value;
	if (obblig&&val.length<4) {
		alert("L'indirizzo web "+nome+" e' troppo corto.");
		obj.focus();		return false;	}
	if (!obblig&&val=="")	return true;
	if (val.length<4) {
		alert("L'indirizzo web "+nome+" e' troppo corto.");
		obj.focus();		return false;	}
	if (val.indexOf('.')==-1) {
		alert("L'indirizzo web "+nome+" non e' valido.");
		obj.focus();		return false;	}
	if (val.indexOf(':')!=-1&&val.indexOf(':')<8) {
		alert("L'indirizzo web "+nome+" non e' valido.\nNon utilizzare il prefisso http://");
		obj.focus();		return false;	}
	if (val.indexOf(' ')!=-1) {
		alert("L'indirizzo web "+nome+" non e' valido.\nNon utilizzare spazi.");
		obj.focus();		return false;	}

	return true;	
}

// open a windows (custom parameters)
function popUp(url,x,y,menu,location,scrollbar,resize)		{

	// parametri popup
	var winParam="";
	if (menu)		winParam+=",toolbar=yes,menubar=yes";
	else			winParam+=",toolbar=no,menubar=no";
	if (location)	winParam+=",location=yes,status=yes";
	else			winParam+=",location=no,status=no";
	if (scrollbar)	winParam+=",scrollbars=yes";
	else			winParam+=",scrollbars=no";
	if (resize)		winParam+=",resizable=yes";
	else			winParam+=",resizable=no";
	
	// new windows
	var siteWindowVar=open(url,"popup"+x+"x"+y,"directories=no,width="+x+",height="+y+""+winParam);
	if (!isNull(siteWindowVar))		siteWindowVar.focus();
}

// update opener url
function updateOpener (url,newonerror,closeThisWin)	{
	if (!isNull(opener))	{
		opener.location=url;
		if (closeThisWin) opener.focus();
	} else if (newonerror) {
		window.open(url);
	}
	if (closeThisWin) self.close();
}

// add onload function (without reset previous)
function addOnLoadEvent(funcToAdd) { 
	var previousOnLoad = window.onload; 
	if (typeof window.onload!="function") {	// onload not is function 
		window.onload = funcToAdd;
	} else {								// onload have previous function
		window.onload = function() { 
			if (!isNull(previousOnLoad))	previousOnLoad();	// chiamo funzione precedente
			funcToAdd();										// chiamo funzione passata
		} 
	} 
}
