﻿var requiredFields = new Array();
var formFields = new Array();
var _formName = ""; 
var _languageFormID;
var _fineInseriemento = false;


function analizza(dataResponse)
	{
		if (dataResponse.status.value == 0){
			analizzaErrori(dataResponse);
			_languageFormID = dataResponse.content.language.value;
			if (_fineInseriemento == true){
				document.getElementById("errorString").innerHTML = "";
				document.getElementById("strutturaForm").innerHTML = showMessages(_languageFormID, "send");
			} else {
			
				_formName = dataResponse.content.form.name;
				
				scriviTag("title",dataResponse.content.title.value);
				
				//genero la select con il tipo di richiesta
				objField = dataResponse.content.box;
				
				var _label = objField.element.title.value;
				scriviTag("box_menu_app_label", _label);
				try{
					_tag = '<select name="' + objField.key + '" id="' + objField.key + '" style="color:#666666;">';
					_tag += '<option value="">' + showMessages(_languageFormID, "seleziona") + '</option>';
					tmpOption = objField.element.subelements.subelement;
					for (b=0; b < tmpOption.length;b++){
						var _value = tmpOption[b].aux_s02.value;
						var _label = tmpOption[b].aux_s03.value;
						_tag += '<option value="' + _value + '">' + _label + '</option>';
					}	
					_tag += '</select>';
					scriviTag("box_menu_app_tag", _tag);
				}			
				catch(er){}
				//popolo la form con i dati
				objField = dataResponse.content.form.fields.field;
				for (a=0; a < objField.length;a++){
						tmpObj = objField[a];
						if (checkField(tmpObj.name + "_tag")){
								//input type=text
								
								switch(tmpObj.field_type.value){
									
									case "0":	//input type="text"
										var _label = tmpObj.label.value;
										if (tmpObj.required.value == 1){
										    _label += " *";
										}
										scriviTag(tmpObj.name + "_label", _label);
										var _reg_exp = "";
										var _value = "";
										if (tmpObj.value.value != undefined) _value = tmpObj.value.value;
										try{reg_exp = tmpObj.reg_exp.value} catch(er){reg_exp = "";}
										var _maxLenght = '';
										if (tmpObj.max_length.value != "0"){
											_maxLenght = ' maxlength="' + tmpObj.max_length.value + '" ';
										}
										var _tag = '<input type="text" id="' + tmpObj.name + '" name="' + tmpObj.name + '" value="' + _value + '" ' +  _maxLenght + '>';
										scriviTag(tmpObj.name + "_tag", _tag);
										break;
									
									case "1": //text area						
										var _label = tmpObj.label.value;
										if (tmpObj.required.value == 1){
										    _label += " *";
										}
										scriviTag(tmpObj.name + "_label", _label);
										
										var _value = "";
										if (tmpObj.value.value != undefined) _value = tmpObj.value.value;
										var _tag = '<textarea id="' + tmpObj.name + '" name="' + tmpObj.name + '" >' + _value + '</textarea>';
										scriviTag(tmpObj.name + "_tag", _tag);
										break;
										
									case "2": //select;
										var _label = tmpObj.label.value;
										if (tmpObj.required.value == 1){
										    _label += " *";
										}
										scriviTag(tmpObj.name + "_label", _label);
										var _service  = "";
										if (tmpObj.name == 'OBS-MarcaAutoCod') {
											_service = ' onChange="modifica()"';
										}
										_tag = '<select name="' + tmpObj.name + '" id="' + tmpObj.name + '" ' + _service + ' style="color:#666666">';
										tmpOption = tmpObj.lov.element;
										for (b=0; b < tmpOption.length;b++){
											var _value = tmpOption[b].value.value;
											var _label = tmpOption[b].label.value;
											if (_value == undefined){
												_value = "";
											}
											var _checked = '';
											if (tmpOption[b].selected == 'yes'){
													_checked = 'selected="selected"';
											}
											_tag += '<option value="' + _value + '" ' +_checked + ' >' + _label + '</option>';
										}	
										_tag += '</select>';
										scriviTag(tmpObj.name + "_tag", _tag);
										break;
										
									case "3": //check;
										var _label = tmpObj.label.value;
										if (tmpObj.required.value == 1){
										    _label += " *";
										}
										scriviTag(tmpObj.name + "_label", _label);
										var _tag = "";
										_value = ""
										
										var _lovEl = tmpObj.lov.element;
										if (!(_lovEl instanceof Array)){
											_lovEl = [_lovEl];
										}
										var _typeOfCheck = new Object;
										_typeOfCheck.type = "singolo";
										_typeOfCheck.separator = tmpObj.separator.value;
										try{
											var _testCheck = _lovEl[0].position;
											_typeOfCheck.type = "multiplo";
										} 
										catch(er){}
										
										var pre_check=true;
										
										if(_typeOfCheck.type == "multiplo"){
											_typeOfCheck.length = _lovEl.length;
											for (b=0; b < _lovEl.length;b++){
												var _value = _lovEl[b].value.value;
												var _label = _lovEl[b].label.value;
												var _checked = '';
												
												if (_lovEl[b].selected == 'yes'){
														_checked = 'checked="checked"';
												}
												_tag += '<input type="checkbox" onclick="changeModel(\'' + _value + '\');" name="' + tmpObj.name + '-' + b + '" value="' + _value + '" ' + _checked + '" id="' + tmpObj.name + '-' + b + '" /> ' + _label;
											}	
										} else {
										
											_value = tmpObj.value.value;
										
											if (tmpObj.name == "OBS-TELContact" || tmpObj.name == "OBS-MAILContact" || tmpObj.name == "OBS-EmailContact" || tmpObj.name == "OBS-SMSContact"){
												_tag += '<input type="checkbox" name="' + tmpObj.name + '" id="' + tmpObj.name + '" value="' + _value +'" checked="'+pre_check+ '" />';
											}
											else{
											_tag += '<input type="checkbox" name="' + tmpObj.name + '" id="' + tmpObj.name + '" value="' + _value + '" />';
											}
										}
										scriviTag(tmpObj.name + "_tag", _tag);
										break;			
										
									case "4": //radio;
										var _label = tmpObj.label.value;
										if (tmpObj.required.value == 1){
										    _label += " *";
										}
										scriviTag(tmpObj.name + "_label", _label);
										var _tag = "";
										tmpOption = tmpObj.lov.element;
										for (b=0; b < tmpOption.length;b++){
											var _value = tmpOption[b].value.value;
											var _label = tmpOption[b].label.value;
											var _checked = '';
											if (tmpOption[b].selected == 'yes'){
													_checked = 'checked="checked"';
											}
											_tag += '<input type="radio" name="' + tmpObj.name + '" value="' + _value + '" ' + _checked + ' /> ' + _label;
										}	
										
										scriviTag(tmpObj.name + "_tag", _tag);
										break;		
										
									case "5": //label
										if (tmpObj.name == "LBL-CTFC-TEXT"){
											var _value = "";
											if (tmpObj.label.value != undefined) _value = tmpObj.label.value;
											var _tag = '<textarea readonly="readonly">' + _value + '</textarea>';
											scriviTag(tmpObj.name + "_tag", _tag);
										} else if (tmpObj.name == "ButtonSend"){
											var _value = "";
											if (tmpObj.label.value != undefined) _value = tmpObj.label.value;
											var _tag = '<input type="submit" value="' + _value + '" />';
											scriviTag(tmpObj.name + "_tag", _tag);
										} else {
											scriviTag(tmpObj.name + "_tag", tmpObj.label.value);	
										}
										break;
										
									case "6": //hidden					
										var _value = "";
										if (tmpObj.value.value != undefined) _value = tmpObj.value.value;
										var _tag = '<input type="hidden" id="' + tmpObj.name + '" name="' + tmpObj.name + '" value="' + _value + '" />';
										scriviTag(tmpObj.name + "_tag", _tag);
										break;
										
									case "7":	//input type="password"
										var _label = tmpObj.label.value;
										if (tmpObj.required.value == 1){
										    _label += " *";
										}
										scriviTag(tmpObj.name + "_label", _label);
										var _reg_exp = "";
										var _value = "";
										if (tmpObj.value.value != undefined) _value = tmpObj.value.value;
										try{reg_exp = tmpObj.reg_exp.value} catch(er){reg_exp = "";}
										var _maxLenght = '';
										if (tmpObj.max_length.value != "0"){
											_maxLenght = ' maxlength="' + tmpObj.max_length.value + '" ';
										}
										var _tag = '<input type="password" id="' + tmpObj.name + '" name="' + tmpObj.name + '" value="' + _value + '" ' +  _maxLenght + '>';
										scriviTag(tmpObj.name + "_tag", _tag);
										break;
										
								}
								
								// QUI L'AGGIUNTA ALL'OGGETTO REQUIRED
								if (tmpObj.required.value == 1) {
									addRequired(tmpObj.name, tmpObj.required.value, tmpObj.reg_exp.value, tmpObj.field_type.value, _typeOfCheck);							
								}
								addFormFields(tmpObj.name, tmpObj.field_type.value, _typeOfCheck);
						}
					}
			}
		}
		if (document.getElementById("ukTestDrive") != null) {
			document.getElementById("ukTestDrive").style.visibility = 'visible';
		}
		if (document.getElementById("loading") != null) {
			document.getElementById("loading").style.visibility = 'hidden';
		}
	}
	
	
	function scriviTag(idTag, tagValue){
		if (document.getElementById(idTag) != undefined)
			document.getElementById(idTag).innerHTML = tagValue;
	}
	
	function checkField(idTag){
		if (document.getElementById(idTag) != undefined)
			return true;
		else
			return false;
	}
	
	
	//creo la lista di tutti gli oggetti della form
	function addFormFields(objName, objType, checkboxType) {
		formFields[objName] = {name:objName, type:objType, checkboxType:checkboxType};
	}
		
	
	// CREO UN OGGETTO CON I CAMPI OBBLIGATORI E LE LORO PROPRIETA'
	function addRequired(objName, objRequired, objRegEx, objType, checkboxType) {
		requiredFields[objName] = {name:objName, required:objRequired, regex: objRegEx, type:objType, checkboxType:checkboxType};
	}
	
	// VALIDO IL FORM AL SUBMIT
	function validateForm() {
		var retValues = new Array();
		var i = 0;
		var retVal = true;
		for (tmpObj in this.requiredFields) {				
			switch (this.requiredFields[tmpObj].type) {
				case "0": //text
				case "1": //textArea
				case "6": //hidden
				case "7": //password
					retValues[i] = validateSimple(this.requiredFields[tmpObj]);
				break;
				case "2": //select
					retValues[i] = validateSelect(this.requiredFields[tmpObj]);
				break;
				case "4": //radio
					retValues[i] = validateRadio(this.requiredFields[tmpObj]);
				break;
				case "3": //checkbox
					retValues[i] = validateCheckbox(this.requiredFields[tmpObj]);
				break;
			}

			document.getElementById(this.requiredFields[tmpObj].name + "_label").className = "label";
			if (!retValues[i]) {
				document.getElementById(this.requiredFields[tmpObj].name + "_label").className = document.getElementById(this.requiredFields[tmpObj].name + "_label").className + " error";
			}
		
			i++;
		}
		
		for (a=0; a < retValues.length;a++){
			if (!retValues[a]) {
				retVal = false;
			}
		}		
		
		
		if (!retVal) {
			try{
				document.getElementById("errorString").innerHTML = "<p>" + showMessages(_languageFormID, "errore") + "</p>";
				document.getElementById("errorString").className = "error";
			}
			catch(er){}
		} else {
			try{
				document.getElementById("errorString").innerHTML = "";
				document.getElementById("errorString").className = "";
			}
			catch(er){}
			getPageFromUrl();
			generaRispostaXML(1);
		}			
		return false;
	}
	
	// VALIDAZIONE SEMPLICE: CONTROLLO TEXT E TEXTAREA
	function validateSimple (obj) {
		if (document.getElementById(obj.name).value == '') {
			return false;
		} else {
			if (obj.regex == undefined) {
				return true;	
			} else {
				return validateRegex(obj, document.getElementById(obj.name).value);
			}	
				
		}
	}
	
	// VALIDAZIONE SEMPLICE: CONTROLLO CHECKBOX
	function validateCheckbox (obj) {
		if (obj.checkboxType.type == "singolo"){
		
			if (document.getElementById(obj.name).checked == true) {
				return true;
			} else {
				return false;	
			}
		} else {
			for (contCheck = 0; contCheck < obj.checkboxType.length; contCheck++){
				if ((document.getElementById(obj.name + "-" +contCheck ).checked) != false) {
					return true;
				}
			}
			return false;
		}
	}
	
	function changeModel(model) {
		var b = false;
		var unCheckAll = false;
		var nrModelli = 4;
		for (var i=0; i<nrModelli; i++) {
			if (document.getElementById("OBS-SelectModelNoMito-"+i).checked) {
				         b = true;
				 
				break;
			}
		 
		}
		if (!b) {
			for (var k=0; k<nrModelli; k++) {
				document.getElementById("OBS-SelectModelNoMito-" + k).disabled = false;
			}
		}
		 
		
		/*if (model == "Range") {
			for (var i=0; i<7; i++) {
				if (document.getElementById("OBS-SelectModelNoMito-7").checked == true) {
					document.getElementById("OBS-SelectModelNoMito-" + i).checked = false;
					document.getElementById("OBS-SelectModelNoMito-" + i).disabled = true;
				}
				else {
					document.getElementById("OBS-SelectModelNoMito-" + i).disabled= false;
				}
			}
		}*/
		//else {
			//document.getElementById("OBS-SelectModelNoMito-7").checked = false;
			//document.getElementById("OBS-SelectModelNoMito-7").disabled = b;
			var bo = new Array();
			for (var i=0; i<nrModelli; i++) {
				if (document.getElementById("OBS-SelectModelNoMito-"+i).checked) {
					bo.push(document.getElementById("OBS-SelectModelNoMito-"+i));
					if (bo.length == 1) {
						//disabilito non chekkati e blocco il for
						for (var k=0; k<nrModelli; k++) {
							if (!document.getElementById("OBS-SelectModelNoMito-"+k).checked) {
								document.getElementById("OBS-SelectModelNoMito-"+k).disabled = true;
							}
						}
						return;
					}
					else {
						for (var k=0; k<nrModelli; k++) {
							if (document.getElementById("OBS-SelectModelNoMito-"+k).disabled) {
								document.getElementById("OBS-SelectModelNoMito-"+k).disabled = false;
							}
						}
					}
				}
			}
		//}
		
		for (var i=0; i<nrModelli; i++) {
		
			if (document.getElementById("OBS-SelectModelNoMito-"+i).checked) {
				    unCheckAll = true;      
				 
			}
		 
		}
		if(!unCheckAll){
			for (var k=0; k<nrModelli; k++) {
		 
					document.getElementById("OBS-SelectModelNoMito-"+k).disabled = false;
				 
			}
		}
		
	}
	
	// VALIDAZIONE ELEMENTI CON INDICE SELECT
	function validateSelect(obj) {
			var _obj = document.getElementById(this.formFields[tmpObj].name);
			var _selectedIndex = _obj.selectedIndex;
				if (_selectedIndex == -1){
					_obj = "";	
				} else {
					_obj = _obj[_selectedIndex].value
				}
					
			if (_obj == "") {
				return false;
			} else {
				return true;
			}
	}
	
	// VALIDAZIONE ELEMENTI CON INDICE SELECT E RADIO
	function validateRadio (obj) {
		
		var _obj = document.contattaci[obj.name];
		var _radioValue = "";

		for (var i=0; i < _obj.length; i++){
		   if (_obj[i].checked)
		      {
		      _radioValue = _obj[i].value;
		      }
		}
		if (_radioValue == "") {
			return false;
		} else {
			return true;
		}
		
	}
	
	// VALIDAZIONE REGEX
	function validateRegex (obj, valore) {
		var regexp = new RegExp(obj.regex);
		return regexp.test(valore);
	}
	
	function modifica(){
		generaRispostaXML(0);
	}
	
	function analizzaErrori(dataResponse){
		try{
			var _error = false;
			var _errorMsg = "";
			var _errorObj = dataResponse.content.form.errors.error;
			if (!(_errorObj instanceof Array) ){
				_errorObj = [_errorObj];
			}
			for (var errCont=0; errCont < _errorObj.length; errCont++){
				if (_errorObj[errCont].code.value == "TD00"){
					_fineInseriemento = true;
				} else {
					_error = true;
					_errorMsg += _errorObj[errCont].label.value + "<br/>";
				}				
			}
			if (_error == true){
				document.getElementById("errorString").innerHTML = "<p>" + _errorMsg + "</p>";
				document.getElementById("errorString").className = "error";
			}
		}
		catch(er){}
		
	}	

	function escapeAmpersand(value) {
		var ret = value.replace(/&/g,"\&amp;");
		return ret;
	}
	
	function generaRispostaXML(actionParam){
		var returnXML = '<FORM NAME="' + _formName + '">';
	  returnXML += '<ACTION>' + actionParam + '</ACTION>';
	 
	  returnXML += '<FIELDS>';
	    //ciclo su tutti i tag form
		
		var zipcode 		= escapeAmpersand(document.getElementById("PostBrochure_Address_PostCodeSearchTextBox").value);
		var address1 		= escapeAmpersand(document.getElementById("PostBrochure_Address_Address1TextBox").value);
		var address2 		= escapeAmpersand(document.getElementById("PostBrochure_Address_Address2TextBox").value);
		var address3 		= escapeAmpersand(document.getElementById("PostBrochure_Address_Address3TextBox").value);
		var obscity 		= escapeAmpersand(document.getElementById("PostBrochure_Address_Address4TextBox").value);
		
		if (zipcode != '') {
			returnXML += '<FIELD NAME="OBS-Cap">';
			returnXML += '<VALUE>' + zipcode + '</VALUE>';
			returnXML += '</FIELD>';
		}
		if (address1 != '') {
			returnXML += '<FIELD NAME="OBS-Address1">';
			returnXML += '<VALUE>' + address1 + '</VALUE>';
			returnXML += '</FIELD>';
		}
		if (address2 != '') {
			returnXML += '<FIELD NAME="OBS-Address2">';
			returnXML += '<VALUE>' + address2 + '</VALUE>';
			returnXML += '</FIELD>';
		}
		if (address3 != '') {
			returnXML += '<FIELD NAME="OBS-Address3">';
			returnXML += '<VALUE>' + address3 + '</VALUE>';
			returnXML += '</FIELD>';
		}
		if (obscity != '') {
			returnXML += '<FIELD NAME="OBS-Citta">';
			returnXML += '<VALUE>' + obscity + '</VALUE>';
			returnXML += '</FIELD>';
		}
		
	    for (tmpObj in this.formFields) {
	    	switch(this.formFields[tmpObj].type){
	    		case "0": //text
	    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
					returnXML += '<VALUE>' + escapeAmpersand(document.getElementById(this.formFields[tmpObj].name).value) + '</VALUE>';
		    		returnXML += '</FIELD>';
	    			break;
	    		case "1": //text area
	    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
					returnXML += '<VALUE>' + escapeAmpersand(document.getElementById(this.formFields[tmpObj].name).value) + '</VALUE>';
		    		returnXML += '</FIELD>';
	    			break;	
	    		case "2": //select;
	    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
	    			var _obj = document.getElementById(this.formFields[tmpObj].name);
	    			var _selectedIndex = _obj.selectedIndex;
	    			if (_selectedIndex == -1){
	    				_obj = 0;	
	    			} else {
	    				_obj = escapeAmpersand(_obj[_selectedIndex].value)
	    			}
		      	returnXML += '<VALUE>' + _obj + '</VALUE>';
		    		returnXML += '</FIELD>';
	    			break;
	    		case "3": //checkbox
		    		if (this.formFields[tmpObj].checkboxType.type == "singolo"){	
		    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
			      	if (document.getElementById(this.formFields[tmpObj].name).checked == true){
			      		returnXML += '<VALUE>' + escapeAmpersand(document.getElementById(this.formFields[tmpObj].name).value) + '</VALUE>';
			      	} else {
			      		returnXML += '<VALUE></VALUE>';
			      	}     
			    		returnXML += '</FIELD>';
			    	} else {
			    		returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
			    		returnXML += '<VALUE>'
			    		var prima = true;
			      	for (contCheck = 0; contCheck < this.formFields[tmpObj].checkboxType.length; contCheck++){
			      		if (document.getElementById(this.formFields[tmpObj].name + "-" +contCheck ).checked == true){
			      			if (prima == false){
			      				returnXML += this.formFields[tmpObj].checkboxType.separator;
			      			}
			      			returnXML += escapeAmpersand(document.getElementById(this.formFields[tmpObj].name + "-" +contCheck ).value);
									prima = false;
			      		}
			      	}		
			      	returnXML += '</VALUE>'	     
			    		returnXML += '</FIELD>';
			    	}
	    			break;
	    		case "4": //radio;
	    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
	    			var _nome = this.formFields[tmpObj].name;
		      	var _obj = document.contattaci[_nome];
		      	
	    			var _radioValue = "";
	    			
	    			for (var i=0; i < _obj.length; i++){
						   if (_obj[i].checked)
						      {
						      _radioValue = _obj[i].value;
						      }
						}

		      	returnXML += '<VALUE>' + escapeAmpersand(_radioValue) + '</VALUE>';
		    		returnXML += '</FIELD>';
	    			break;
	    		case "6": //hidden
	    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
		      	returnXML += '<VALUE>' + escapeAmpersand(document.getElementById(this.formFields[tmpObj].name).value) + '</VALUE>';
		    		returnXML += '</FIELD>';
	    			break;
	    		case "7": //password
	    			returnXML += '<FIELD NAME="' + this.formFields[tmpObj].name +'">';
		      	returnXML += '<VALUE>' + escapeAmpersand(document.getElementById(this.formFields[tmpObj].name).value) + '</VALUE>';
		    		returnXML += '</FIELD>';
	    			break;
	    	}	
	    	
	    }
	    
	  returnXML += '</FIELDS>';
		returnXML += '</FORM>';
	
	//alert(returnXML);
	xml_data_load ("analizza", "content","http://"+getDomain()+"/cgi-bin/pbrand.dll/ALFAROMEO_UK/contact/testdrive.jsp",returnXML);
	}
	window.onload = function() { xml_data_load ("analizza", "content","http://"+getDomain()+"/cgi-bin/pbrand.dll/ALFAROMEO_UK/contact/testdrive.jsp",null);	}
	//xml_data_load ("analizza", "content","http://89.96.207.24/cgi-bin/pbrand.dll/ALFAROMEO_UK/contact/testdrive.jsp",returnXML);

