//*********************************************************************
//***************	FUNZIONI DI UTILITA

//*********************************************************************
//***************	FUNZIONI DI UTILITA

//*********************************************************************
//***	openPopup
// apertura popup
openPopup.newWindow=null;
function openPopup(theURL,winName,features, myWidth, myHeight, isCenter) { //v3.0
	if((openPopup.newWindow!=null)&&(!openPopup.newWindow.closed)){
		//alert('closing...'+openPopup.newWindow.closed);
		//openPopup.newWindow.close();
		openPopup.newWindow.focus();
		openPopup.newWindow.location=theURL;
	}else{
	 	if(window.screen)if(isCenter)if(isCenter=="true"){
	    var myLeft = (screen.width-myWidth)/2;
	    var myTop = (screen.height-myHeight)/2;
	    features+=(features!='')?',':'';
	    features+=',left='+myLeft+',top='+myTop;
	   }
	 	openPopup.newWindow=window.open(theURL,'',features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
		openPopup.newWindow.opener=window;
		//alert(features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight)
	}
}	//	end function openPoUp
//*********************************************************************

//*********************************************************************
// *** showLayer
//
function showLayer(oDiv, bShow, width, height, hCenter, vCenter, left, top){
	if(bShow){
		var l, t;
		l = (hCenter == true ? (screen.width - width) / 2 : left);
		t = (vCenter == true ? (screen.height - height) / 2 : top);
		
		if(width!=null)	oDiv.style.width = width;
		if(height!=null) oDiv.style.height = height;
		if(l!=null) oDiv.style.left = l 
		if(t!=null) oDiv.style.top = t;
		
		oDiv.style.visibility = 'visible';
	}else{
		oDiv.style.visibility = 'hidden';
	}
}// end showLayer
//*********************************************************************

//*********************************************************************
//***	checkRegular
// utilizzata per verificare il match con una regular expression
function checkRegular(regS,value){
	var re=new RegExp(regS);
	return re.test(value)
}	// end function checkRegular
//*********************************************************************


//*********************************************************************
//*** isEmail
// true - email formalmente valida
// false - email non valida
function isEmail(value){
	if(isEmpty(value))return false;
	
	value = value.replace(/\s/g,'');
	return checkRegular('^(.+)@(.+)[\.]([a-zA-Z]{2,4})$',value);
}	// end function isEmail
//*********************************************************************

//*********************************************************************
//*** isEmpty
// true - valore vuoto o di soli spazi
// false 
function isEmpty(value){
	var s = value.replace(/\s*/,'');
	return (s=='');
}	// end function isEmpty
//*********************************************************************

//*********************************************************************
//*** isInteger
// true - la stringa è un intero
// false 
function isInteger(value){
		return !(isNaN(parseInt(value, 10)));
}	// end function isInteger
//*********************************************************************



//function isNumeric(value) {
	//var RegExp = /^(-)?(\d*)(\.?)(\d*)$/
	// var RegExp = "/^(-)?(\d*)(\.?)(\d*)$/"
	//var result = value.match(RegExp);
	//return result;
	//return checkRegular('^[+]?\d*$',value);
	//return checkRegular('^[-]{0,1}[0-9]+({0,1}[0-9]+){0,1}$',value);
//}

function isNumeric(sText){
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
	
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	
	return IsNumber;
}
   

//*********************************************************************
//*** isFloat
// true - valore è un numero decimale
// false 
function isFloat(value){
	return !(isNaN(parseFloat(value, 10)));
}	// end function isFloat
//*********************************************************************

//*********************************************************************
//*** getInteger
// true - valore è un numero decimale
// false 
function getInteger(value){
	var i = parseInt(value, 10);
	if(isNaN(i))return 0;
	else return i;
}	// end function getInteger
//*********************************************************************

//*********************************************************************
//*** getFloat
// true - valore è un numero decimale
// false 
function getFloat(value){
	var f = parseFloat(value);
	if(isNaN(f))return 0.0;
	else return f;
}	// end function isFloat
//*********************************************************************

//*********************************************************************
//*** chkSelectedSelect (IN: oggetto select, riferimento per non selezionata)
// true - select selezionata
// false - select non selezionata
function chkSelectedSelect(oSlc,sRef){
	if(oSlc!=null){
		var cSel = oSlc.options[oSlc.selectedIndex].value;
		return cSel!=sRef;
	}else{
		return false;
	}
}	// end function isEmail
//*********************************************************************

//

//detect dell'evento enter
// utile per submit non desiderati
// aggiungere nella pagina
//document.onkeydown = myFunc;
// function myFunc(e){
//		if (checkEnter(e))	{
		//do it
//		}
// }

function checkEnter(e) {

	var nav4 = window.Event ? true : false;
	var bVal = false;
	if (nav4){ // Navigator 4.0x
		var whichCode = e.which;
	}
	else // Internet Explorer 4.0x
		var whichCode = event.keyCode;
	if 	(whichCode == '13')
		bVal = true
	return bVal
}


//controlla se la data passata è valida
function isValidDate(sDta){
	var sRet = true;
	var ss;
	if(sDta!=null && sDta!=''){
		// indexof
		if (sDta.indexOf('/') > 0) {
			ss = sDta.split('/');
		}
		else {
			ss = sDta.split('-');
		}
				
		if(ss.length==3 && isInteger(ss[0]) && isInteger(ss[1]) && isInteger(ss[2])){
				var d = parseInt(ss[0],10);
				var m = parseInt(ss[1],10);
				var y = parseInt(ss[2],10);

				if (ss[2].length==3) {
					sRet = false;
				}
				else{
					var dta = new Date(y, m-1, d);
					if (isNaN(dta)) {
						sRet = false;
					}
					else {
					if (d != dta.getDate() || m != dta.getMonth()+1 || y != dta.getFullYear()){
						sRet = false;
					}	
					}
				}
		}else{
			sRet = false;
		}
	}else{
		sRet = false;
	}
	return sRet;
}


function isDecimal(value){
 return checkRegular('^[-]{0,1}[0-9]+([.,]{0,1}[0-9]+){0,1}$',value);
}







// INIZIO
//
// VERIFICA DEL CARATTERE DI CONTROLLO DEL CODICE FISCALE 
//	(ultimo carattere del codice fiscale)
//

function chkCarattereDiControllo(codiceFiscale) {
	var sRet = true;
	var v15, v16_in, v16_out, i, sommaPos;
	var arr15 = new Array(15);
	
	codiceFiscale = codiceFiscale.toUpperCase();
	v15 = codiceFiscale.substring(0,15);
	v16_in = codiceFiscale.substring(15,16)
	sommaPos = 0;
	
	// creo array dei 15 caratteri del codice fiscale
	for (i = 0; i < 16; i++) { 
		arr15[i] = v15.substring(i,i+1)
	}
	
	// si sommano i valori pari e dispari dei caratteri che compongono il codice fiscale
	for (i = 0; i < 16; i++) { 
		if (i & 1) { 
			sommaPos += getCodicePosPari(arr15[i]); 
		} 
		else { 
			sommaPos += getCodicePosDispari(arr15[i]); 
		} 
	} 
	
	// si divide il risultato della somma per 26
	// si ricava il resto della divisione
	// si ottiene il carattere di controllo
	v16_out = getCarattereDiControllo(sommaPos %= 26); 
	
	if (v16_in != v16_out) {
		sRet = false;
	}
	
	return sRet;
}

// Tabella per i caratteri in posizione pari.
function getCodicePosPari(iChar) { 
    switch(iChar) { 
        case 'A': return 0; case '0': return 0; 
        case 'B': return 1; case '1': return 1; 
        case 'C': return 2; case '2': return 2; 
        case 'D': return 3; case '3': return 3; 
        case 'E': return 4; case '4': return 4; 
        case 'F': return 5; case '5': return 5; 
        case 'G': return 6; case '6': return 6; 
        case 'H': return 7; case '7': return 7; 
        case 'I': return 8; case '8': return 8; 
        case 'J': return 9; case '9': return 9; 
        case 'K': return 10; 
        case 'L': return 11; 
        case 'M': return 12; 
        case 'N': return 13; 
        case 'O': return 14; 
        case 'P': return 15; 
        case 'Q': return 16; 
        case 'R': return 17; 
        case 'S': return 18; 
        case 'T': return 19; 
        case 'U': return 20; 
        case 'V': return 21; 
        case 'W': return 22; 
        case 'X': return 23; 
        case 'Y': return 24; 
        case 'Z': return 25; 
    } 
    return false; 
} 

// Tabella per i caratteri in posizione dispari
function getCodicePosDispari(iChar) { 
    switch(iChar) { 
        case 'A': return 1; case '0': return 1; 
        case 'B': return 0; case '1': return 0; 
        case 'C': return 5; case '2': return 5; 
        case 'D': return 7; case '3': return 7; 
        case 'E': return 9; case '4': return 9; 
        case 'F': return 13; case '5': return 13; 
        case 'G': return 15; case '6': return 15; 
        case 'H': return 17; case '7': return 17; 
        case 'I': return 19; case '8': return 19; 
        case 'J': return 21; case '9': return 21; 
        case 'K': return 2; 
        case 'L': return 4; 
        case 'M': return 18; 
        case 'N': return 20; 
        case 'O': return 11; 
        case 'P': return 3; 
        case 'Q': return 6; 
        case 'R': return 8; 
        case 'S': return 12; 
        case 'T': return 14; 
        case 'U': return 16; 
        case 'V': return 10; 
        case 'W': return 22; 
        case 'X': return 25; 
        case 'Y': return 24; 
        case 'Z': return 23; 
    } 
    return false; 
} 

// Tabella per i caratteri di controllo
function getCarattereDiControllo(iSomma) { 
    switch(iSomma) { 
        case 0: return 'A'; 
        case 1: return 'B'; 
        case 2: return 'C'; 
        case 3: return 'D'; 
        case 4: return 'E'; 
        case 5: return 'F'; 
        case 6: return 'G'; 
        case 7: return 'H'; 
        case 8: return 'I'; 
        case 9: return 'J'; 
        case 10: return 'K'; 
        case 11: return 'L'; 
        case 12: return 'M'; 
        case 13: return 'N'; 
        case 14: return 'O'; 
        case 15: return 'P'; 
        case 16: return 'Q'; 
        case 17: return 'R'; 
        case 18: return 'S'; 
        case 19: return 'T'; 
        case 20: return 'U'; 
        case 21: return 'V'; 
        case 22: return 'W'; 
        case 23: return 'X'; 
        case 24: return 'Y'; 
        case 25: return 'Z'; 
    } 
    return false; 
}

//
// VERIFICA DEL CARATTERE DI CONTROLLO DEL CODICE FISCALE 
//	(ultimo carattere del codice fiscale)
//
// FINE



function setSelectValue(oSlc, val){
	if(oSlc!=null)

	for(var i=0; i<oSlc.options.length; i++)
		if(oSlc.options[i].value==(val+'')){
			oSlc.options[i].selected = true;
			break;
		}
}

function setRadioValue(oRdo, val){
	if(oRdo!=null)
	for(var i=0; i < oRdo.length; i++)
		if(oRdo[i].value==(val+'')){
			oRdo[i].checked = true;
			break;
		}
}

function getSelectValue(slc){
	return slc.options[slc.selectedIndex].value
}


function getQueryVariable(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
  
  // alert('Query Variable ' + variable + ' not found');
}


function ctrlMaxLength(campo,maxLen) {
	if (campo.value.length > maxLen ) {
		campo.value = campo.value.substring(0, maxLen);
	}
}


function setCheckboxValue(oRdo, listVal){
	var arVal
	
	if(oRdo!=null && isArray(oRdo)){
		arVal = listVal.split(',');
		for(var i=0; i < oRdo.length; i++){
			for (var j=0; j<arVal.length;j++){
				if(oRdo[i].value==(arVal[j]+'')){
					oRdo[i].checked = true;
					break;
				}
			}	
		}	
	}	
	
	if(oRdo!=null && !isArray(oRdo)){
		arVal = listVal.split(',');
		for (var j=0; j<arVal.length;j++){
			if(oRdo.value==(arVal[j]+'')){
				oRdo.checked = true;
				break;
			}
		}	
	}	
}


function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}


function ctrlRadioCheched(oRdo) {
	var flagOK = new Boolean(false);
	
	if(oRdo!=null && isArray(oRdo)) {
		for(var i=0; i < oRdo.length; i++) {
			if(oRdo[i].checked == true) {
				flagOK = true;
				break;
			}
		}	
	}	
	
	if(oRdo!=null && !isArray(oRdo)){
		if(oRdo.checked == true) {
			flagOK = true;
		}
	}
	
	return flagOK
}


function getValueCheched(oRdo) {
	var sValue = '';
	
	if(oRdo!=null && isArray(oRdo)) {
		for(var i=0; i < oRdo.length; i++) {
			if(oRdo[i].checked == true) {
				sValue = oRdo[i].value;
				break;
			}
		}	
	}	
	
	if(oRdo!=null && !isArray(oRdo)){
		if(oRdo.checked == true) {
			sValue = oRdo.value;
		}
	}
	
	return sValue
}

