
// JavaScript Document
var functionFormErrorAr = [];

function formAcceptPrivacy(obj, objChange){
		
		var objChanged = document.getElementById(objChange)
		
		if(obj.checked){
			objChanged.disabled = ''
			objChanged.setAttribute('enabled','enabled')
			objChanged.style.cursor = 'pointer'	
		}else{
			objChanged.disabled = 'disabled'
			objChanged.setAttribute('disabled','disabled')
			objChanged.style.cursor = 'none'	
		}
}

var formInviata = null;
function formCheck(pag,obj,cont,contMat){
	
	var ctrlObj = [];
	var ctrlObjtemp = [];
	var ctrlObjPreTemp = [];
	
	var checkError = false;
	
	var ctrlInput = obj.getElementsByTagName("input");
	var ctrlTArea = obj.getElementsByTagName("textarea");
	var ctrlSelect = obj.getElementsByTagName("select");
		
	var switchVarValue
	for(i=0; i<ctrlInput.length; i++){
		x=ctrlInput[i];
		x = x.previousSibling;
		if(x){
			while (x?x.nodeType!=1:false){ x=x.previousSibling;}
			x?ctrlObjPreTitle = x.title:ctrlObjPreTitle ="";
		}else{
			ctrlObjPreTitle =""
		};
		ctrlObjPreTemp = String(ctrlObjPreTitle).split('_');
		ctrlObjtemp = [ctrlInput[i],ctrlObjPreTemp];
		ctrlObj.push(ctrlObjtemp);
		ctrlObjPreTemp = [];
		ctrlObjtemp = [];
	}
	
	
	for(i=0; i<ctrlTArea.length; i++){
		
		x=ctrlTArea[i];
		x = x.previousSibling;
		if(x){
			while (x?x.nodeType!=1:false){ x=x.previousSibling;}
			x?ctrlObjPreTitle = x.title:ctrlObjPreTitle ="";
		}else{
			ctrlObjPreTitle =""
		};		
		ctrlObjPreTemp =  String(ctrlObjPreTitle).split('_');
		ctrlObjtemp = [ctrlTArea[i],ctrlObjPreTemp];
		ctrlObj.push(ctrlObjtemp);
		ctrlObjPreTemp = [];
		ctrlObjtemp = [];
	}
	
	for(i=0; i<ctrlSelect.length; i++){
		
		x=ctrlSelect[i];
		x = x.previousSibling;
		if(x){
			while (x?x.nodeType!=1:false){ x=x.previousSibling;}
			x?ctrlObjPreTitle = x.title:ctrlObjPreTitle ="";
		}else{
			ctrlObjPreTitle =""
		};
		ctrlObjPreTemp = String(ctrlObjPreTitle).split('_');
		ctrlObjtemp = [ctrlSelect[i],ctrlObjPreTemp];
		ctrlObj.push(ctrlObjtemp);
		ctrlObjPreTemp = [];
		ctrlObjtemp = [];
	}
	
	for(x=0; x<ctrlObj.length; x++){
		if(ctrlObj[x][1].length>=1 && ctrlObj[x][1][0]){
			if(functionFormErrorAr['errornull']){
				new functionFormErrorAr['errornull'](ctrlObj[x][0]);			
			}
			for(z=0; z<ctrlObj[x][1].length; z++){
				
				switchVar = ctrlObj[x][1][z]
				
				if(switchVar.indexOf('|')>-1){
					switchVarValue = switchVar.split('|')[1];
					switchVar = switchVar.split('|')[0];
				}			
				
				switch (switchVar){
					case 'vuoto': 
						if(!(CheckVuoto(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['vuoto']){
								new functionFormErrorAr['vuoto'](ctrlObj[x][0],true);
							}
						};
					break
					
					case 'num': 
						if(!(CheckNum(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['num']){
								new functionFormErrorAr['num'](ctrlObj[x][0]);
							}
						};
					break
					
					case 'alph': 
						if(!(CheckAlph(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['alph']){
								new functionFormErrorAr['alph'](ctrlObj[x][0]);
							}
						};
					break
					
					case 'alphnum': 
						if(!(CheckAlphnum(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['alphnum']){
								new functionFormErrorAr['alphnum'](ctrlObj[x][0]);
							}
						};
						
					break
					
					case 'mag':
						if(!(CheckMag(ctrlObj[x][0],switchVarValue))){
							checkError = true;
							if(functionFormErrorAr['mag']){
								new functionFormErrorAr['mag'](ctrlObj[x][0],switchVarValue);
							}
						};
					break 
					
					case 'data': 
						if(!(CheckData(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['data']){
								new functionFormErrorAr['data'](ctrlObj[x][0]);
							}
						};
						
					break
					
					case 'dataTD':
						if(!(CheckDataToDay(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['dataTD']){
								new functionFormErrorAr['dataTD'](ctrlObj[x][0]);
							}
						};
					break
					
					case 'dataA':
						CheckDataA(ctrlObj[x][0]);
						CheckDataAMemoObj = ctrlObj[x][0];
					break
					
					case 'dataB':
						if(!(CheckDataB(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['dataB']){
								new functionFormErrorAr['dataB'](ctrlObj[x][0],CheckDataAMemoObj);
							}
						};
					break
					
					case 'mail': 
						if(!(CheckMail(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['mail']){
								new functionFormErrorAr['mail'](ctrlObj[x][0]);
							}
						};
					break
					
					case 'ugualA': 
						CheckUgualA(ctrlObj[x][0]);
						CheckUgualAMemoObj = ctrlObj[x][0];
					break
					
					case 'ugualB': 
						if(!(CheckUgualB(ctrlObj[x][0]))){
							checkError = true;
							if(functionFormErrorAr['ugualB']){
								new functionFormErrorAr['ugualB'](ctrlObj[x][0],CheckUgualAMemoObj);
							}
						};												
					break
					
					default:
						
				}				
				
			}
		}
	}
	if(checkError){
		if(functionFormErrorAr['check']){
			new functionFormErrorAr['check'](obj);
		}
	}else{
		// DICHIARAZIONE DELLA FUNZIONE DOPO IL COMPLETAMENTO DELL'INVIO
		
		formInviata = function(value){
			formUpdateStatus("",cont);
			if(functionFormErrorAr['invio']){
				new functionFormErrorAr['invio'](obj,value);
			}
			// QUANDO HA TERMINATO DI INVIARE
			
		}
		
		// ATTIVAZIONE LOADER PER INVIO
		formUpdateStatus(contMat,cont);
		
		// INVIO DEI DATI TRAMITE AJAX
		ajaxCall(Domain+pag,formQueryGenerate(obj),formInviata)
	}	
}

function formUpdateStatus(str,obj){
	document.getElementById(obj).innerHTML = str;
}


function formQueryGenerate(obj){
	
	var form = document.forms[obj.name];

	var qstr = "";

	function GetElemValue(name, value) {
		qstr += (qstr.length > 0 ? "&" : "")

        + escape(name).replace(/\+/g, "%2B") + "="

        + escape(value ? value : "").replace(/\+/g, "%2B");

		//+ escape(value ? value : "").replace(/\n/g, "%0D");

    }

	
	
	var elemArray = form.elements;
	
    for (var i = 0; i < elemArray.length; i++) {

        var element = elemArray[i];
		var elemType = element.type?element.type.toUpperCase():'';

        var elemName = element.name;

        if (elemName) {

            if (elemType == "TEXT"

                    || elemType == "TEXTAREA"

                    || elemType == "PASSWORD"

					|| elemType == "BUTTON"

					|| elemType == "RESET"

					|| elemType == "SUBMIT"

					|| elemType == "FILE"

					|| elemType == "IMAGE"

                    || elemType == "HIDDEN")

                GetElemValue(elemName, htmlGetXhtml(xhtmlTrim(element.value)));

            else if (elemType == "CHECKBOX" && element.checked)

                GetElemValue(elemName, htmlGetXhtml(xhtmlTrim(element.value)) ? htmlGetXhtml(xhtmlTrim(element.value)) : "On");

            else if (elemType == "RADIO" && element.checked)

                GetElemValue(elemName, htmlGetXhtml(xhtmlTrim(element.value)));

            else if (elemType.indexOf("SELECT") != -1)

                for (var j = 0; j < element.options.length; j++) {

                    var option = element.options[j];

                    if (option.selected)

                        GetElemValue(elemName, htmlGetXhtml(xhtmlTrim(option.value)) ? htmlGetXhtml(xhtmlTrim(option.value)) : option.text);

                }

        }
    }
	return qstr;

}
