// JavaScript Document

function confirmURL(Msg,Url){
		if(Msg!=''){
			var agree=confirm(Msg);
			if (agree){
				location.href = Url;
				return true ;
			}else{
				return false ;
			}
		}else{
			location.href = Url;
			return true ;
		}
}

function confirmRegister(frmName,operName,Msg,Action){

	    var fieldid = "";
		var elem = document.getElementById(frmName).elements;

		error=0;
		for(var i = 0; i < elem.length; i++)
		{
				
				 
				if(elem[i].name=='accettazione' && elem[i].checked==false){
						fieldid = elem[i].id;
						var splitname = elem[i].name.split("_");
						var alertString = splitname[0]
						error = Array(102,alertString,fieldid);
						break;
				}
		}
		
		if(!error){
			confirmSubmit(frmName,operName,Msg,Action);
		}else{
			errorcode	= error[0];
			field		= error[1];
			idfieldobj	= error[2];
			makeError(errorcode,field,idfieldobj,frmName);
		}
		
		
		
}

function confirmSubmit(frmName,operName,Msg,Action){

			error 	= ChkValues(frmName);

			errorcode	= error[0];
			field		= error[1];
			idfieldobj	= error[2];

			if(error==0){
				
					if(operName!=''){
						document.forms[frmName].elements['oper'].value=operName; 
					}	
					
					if(Action!=null){
						document.forms[frmName].action=Action; 
					}
								
					if(Msg!=''){
						var agree=confirm(Msg);
						if (agree){
							document.forms[frmName].submit();
							return true ;
						}else{
							return false ;
						}
					}else{
							document.forms[frmName].submit();
							return true ;
					}
	
					return true ;
					
			}else{

				makeError(errorcode,field,idfieldobj,frmName);
				return false ;
			}
			
			
}


function confirmSubmitId(frmName,operName,Msg,Action,Id)
{
	document.forms[frmName].elements['recordId'].value=Id; 
	confirmSubmit(frmName,operName,Msg,Action);
}


function ChkField(elem){


				fieldid = elem.id;
		
				var splitname = elem.name.split("_");

				var alertString = splitname[0]
				
				
				switch (elem.type){
						//case "file":
								
						case "file":
							if(elem.value!=""){
								error=checkeFile(elem.value);
							}else{
								error=102;
							}
								
						break;
								
						case "checkbox":
							for (var sn = 0; sn < splitname.length; sn++) {
								if (splitname[sn]=="obl" && elem.checked == false){
									error=102;
								}
							}					
						break;
		
						case "text":
						case "password":
						case "select-one":
						case "textarea":
						
								
															
								  for (var sn = 0; sn < splitname.length; sn++) {
									
										if(elem.value!=""){
											
																							
												switch (splitname[sn]) {
													// Verifico formato numerico
													case "num":
														error=checknumber(elem.value);
														break;
													// Verifico formato intero
													case "int":
														error=checkintnumber(elem.value);
														break;
													// Verifico formato data
													case "date":
														error=checkDate(elem.value);
													break;
													// Verifico formato testo
													case "txt":
														error=checktxt(elem.value);
														break;
													// Verifico formato CAP
													case "cap":
														error=checkCAP(elem.value);												
														break;
													// Verifico formato codice fiscale
													case "cfis":
														error=checkCodFis(elem.value);												
														break;
													// Verifico formato partita iva
													case "cpiva":
														error = checkPiva(elem.value);
														break;
													// Verifico formato cap
													case "abi":
														error=checkABI(elem.value);												
														break;
													case "cknome":
														error=checkNome(elem.value);												
														break;
													// Verifico formato login
													case "log":
														error=checklog(elem.value);												
														break;
													// Verifico formato password
													case "pas":
														error=checkPassword(elem.value);											
														break;
													case "rpas":
														var newelemobj = document.getElementById('rpassword_obl_pas');
														error=checkRPassword(elem.value,newelemobj.value);														
														break;
														
													// Verifico formato mail
													case "mail":
														error=checkEmail(elem.value);
														break;
						
													// Verifico formato generico
													case "gen":
														//error=checkgen(elem.value);
														break;
														
															
												}  
												
										}else{
												
													if(splitname[sn]=="obl"){
														error=102;
													}								
													
											
										}
								
								   }

						}
						return error;
}


function ChkValues(frmName)
{
	    var fieldid = "";
		var elem = document.getElementById(frmName).elements;

		error=0;
		
		for(var i = 0; i < elem.length; i++)
		{
				// non verifico i campi disabled
				if(!elem[i].disabled){
				
					fieldid = elem[i].id;
			
					var splitname = elem[i].name.split("_");
	
					var alertString = splitname[0]
			
					error = ChkField(elem[i]);
					
					if(error!=0){
						error = Array(error,alertString,fieldid);
						break;
					}	
					
				}
				
		}		
		
		return error;
	

}


function checkDate(value)
{
	return 0;
}

// Verifico che il valore sia un Nome
function checkNome(value){

	error=0;

	var IsFound = /^([a-zA-Z\xE0\xE8\xE9\xF9\xF2\xEC\x27]\s?)+$/.test(value);
	if(!IsFound){
		error= 130;
	};

	return error
}

// Verifico che il valore sia un numero CAP
function checkCAP(value){

	error=0;

	var IsFound = /^\d{5}$/.test(value);
	if(!IsFound){
		error= 128;
	};

	return error
}

// Verifico che il valore sia un numero CAP
function checkABI(value){

	error=0;

	var IsFound = /^\d{5}$/.test(value);
	if(!IsFound){
		error= 128;
	};

	return error
}

// Verifico che il valore sia un codice fiscale
function checkCodFis(value){

	error=0;

	var IsFound = /^[a-zA-Z]{6}\d\d[a-zA-Z]\d\d[a-zA-Z]\d\d\d[a-zA-Z]/.test(value);
	if(!IsFound){
		error= 129;
	};

	return error;
}

// Verifico il formaot partitaiva
function checkPiva(value){

	error = 0;

	if( value.length != 11 )
		error = 133;
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( value.charAt(i) ) == -1 )
			error = 133;
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += value.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( value.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != value.charCodeAt(10) - '0'.charCodeAt(0) )
		error = 133;


	return error;


}


// Verifico che il valore sia un numero float
function checknumber(value){

	if(isNaN(value)){
		error= 103;
	}else{
		error= 0;
	}
	
	return error;
}

// Verifico che il valore sia un numero intero
function checkintnumber(value){

	error=0;
	if(!checknumber(value)){

		var IsFound = /^-?\d+$/.test(value);
		if(!IsFound){
			error= 104;
		};

	}else{
		error=103;	
	}
	
	return error;

}

// Verifico le generalita
function checkgen(value){
		return 200;
}


// Verifico le generalità del login e password
function checklog(value){
		var error = 0;
		var illegalChars = /[\W_]/; // allow only letters and numbers
		
		if (illegalChars.test(value)) {
			  error = 108;
		}else if (!((value.search(/(a-z)+/)) && (value.search(/(A-Z)+/)) && (value.search(/(0-9)+/)))) {
			   error = 109;
		}  
		return error;

}

function checkPassword (value) {
var error = 0;
	error=0;
	var IsFound = /^[a-zA-Z0-9\_\*\-\+\!\?\,\:\;\.\xE0\xE8\xE9\xF9\xF2\xEC\x27]{6,12}/.test(value);
	if(!IsFound || !checknumber(value)){
		error= 111;
	};

return error;    
}   

function checkRPassword (value,value2) {
	
	var error = 0;

    if (value!= value2) { error = 114; }
	
return error;    
}  


function checkEmail (value) {
var error=0;

    var emailFilter=/^.+@.+\..{2,3}$/;
    if (!(emailFilter.test(value))) { 
       error = 112;
    }
    else {
//test email for illegal characters
       var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/
         if (value.match(illegalChars)) {
          error = 113;
       }
    }
return error;    
}


// Verifico il campo file
function checkeFile(value){
		
		var splitname 	= value.split('\\');
		var name 		= splitname.pop();
		
		name			= name.replace(/\./g,'');
		name			= name.replace(/\_/g,'');

		var error = 0;
		
			var illegalChars = /[\W_]/; // allow only letters and numbers
			
			if (name.length > 30) {
				error = 106;	
			}else if (illegalChars.test(name)) { 
				error = 106;	
			}else if (!((name.search(/(a-z)+/)) && (name.search(/(A-Z)+/)) && (name.search(/(0-9)+/)))) {
			   	error = 106;
			}  
			

		return error;    

}

function makeError(value,field,idfieldobj,frmName){

	if(!document.getElementById('errorBox')){
		var infodiv = document.createElement('div');
		infodiv.setAttribute('id','errorBox');
		document.body.appendChild(infodiv);
	}

	var url = RootPath + "www/ajaxindex.php?pag=../engine/ajaxphp/error.php";
	
	$.ajax({
			   type: "post",url: url,
			   data: "er="+value+"&fld="+field+"&lang="+WebLang+"&form="+frmName,
			   success: function(msg){
			     $('#errorBox').text(msg);
			     $("#"+idfieldobj).tooltip({api:true,widget: "click, mouseleave", tooltip:"mouseover" ,effect: "fade",tip: '#errorBox'}).show();
 				 $("#"+idfieldobj).css("border","solid 1px #ff0000");
			   }
			 });

}

function checkPageTarget(frmName,field2,refId, hiddenField, pageMax){	


			error 	= ChkValues(frmName);

			errorcode	= error[0];
			field		= error[1];
			idfieldobj	= error[2];

			if(error==0){
		
					var currValue=document.getElementById(refId).value;	

					if (currValue <= 0 || currValue > pageMax) {
						makeError(125,field2,field2,frmName);
						document.getElementById(refId).value="";
						return false;
					} else{
						document.getElementById(refId).value=currValue-1;
						return true;
					}
					
			}else{
				makeError(errorcode,field,idfieldobj,frmName);
				return false;
				
			}
}

