// JavaScript Document
//var dev_prefix = "/demo";
//var dev_prefix = "/mecal";
var dev_prefix = "";
function getXHR()
{
  // xmlHttp will store the reference to the XMLHttpRequest object
  var http;
  // try to instantiate the native XMLHttpRequest object
  try
  {
    // create an XMLHttpRequest object
    http = new XMLHttpRequest();
  }
  catch(e)
  {
    // assume IE6 or older
    try
    {
      http = new ActiveXObject("Microsoft.XMLHttp");
    }
    catch(e) { }
  }
  // return the created object or display an error message
  if (!http)
    alert("Error creating the XMLHttpRequest object.");
  else 
    return http;
}	
/*-----------------------------------------*/
function show(div,change_img_id,img_show,img_hide){
	actStyle = document.getElementById(div).style.display;
	document.getElementById(div).style.display = (actStyle == "none") ? "block" : "none";
	if (typeof change_img_id != "undefined") {
		document.getElementById(change_img_id).innerHTML =  (actStyle == 'none')?img_show:img_hide;
	}
	
}

/*###########################################*/
function CheckDupEmail(val,where_cond,tabella){
	id_msg = 'messaggioEmail';
	if(!val) {
		document.getElementById(id_msg).innerHTML =  msg_ok;
		return;
	}
	if (typeof (tabella) == 'undefined' ) {
		tabella = '';
	}
	if (typeof (where_cond) == 'undefined' ) {
		where_cond = '';
	}
//alert(where_cond);
	
	url = "//"+location.hostname+dev_prefix+"/includes/checkUser.php?field=email&value=" + encodeURIComponent(val)+"&where="+where_cond+"&t="+tabella;

	msg_ko = "e-mail in uso";
	msg_ok = "";
	msg_empty = "campo email obbligatorio";
	
	execXMLHttpRequestSync("get",url,id_msg,msg_ok,msg_ko,msg_empty);
}

/*###########################################*/
function CheckDupLogin(val,where_cond){
//alert("CheckDupLogin");
	id_msg = 'messaggioLogin';
	if(!val) {
		document.getElementById(id_msg).innerHTML =  '';
		return;
	}
	if (typeof (where_cond) == 'undefined' ) {
		where_cond = '';
	}
//alert(where_cond);

	
	url = "//"+location.hostname+dev_prefix+"/includes/checkUser.php?field=login&value=" + encodeURIComponent(val)+"&where="+where_cond;
//	url = "//"+location.hostname+"/mecal/includes/checkUser.php?field=login&value=" + encodeURIComponent(val)+"&where="+where_cond;
	msg_ko = "username in uso";
	msg_ok = "";
	msg_empty = "campo username obbligatorio";
	
	execXMLHttpRequestSync("get",url,id_msg,msg_ok,msg_ko,msg_empty);
}
			

//##############################################################################
function CheckResponse(response,id_msg,msg_ok,msg_ko,msg_empty) {
//alert("CheckResponse: "+response+"|"+id_msg+","+msg_ok+","+msg_ko+","+msg_empty);
	document.getElementById("invio").disabled = false;
	document.getElementById(id_msg).innerHTML = '';
	switch (response){
			case "OK":
				document.getElementById(id_msg).innerHTML =  msg_ok;
			break;
			case "KO":

			
				document.getElementById(id_msg).innerHTML =  "<span style='display: inline; color: #CC3333; border: 1px solid #CC3333;'>"+msg_ko+"</span>";
				document.getElementById("invio").disabled =  'disabled';
//				document.getElementById(id_msg).innerHTML =  msg_ko;
			break;
			case "NO VALUE":
				document.getElementById(id_msg).innerHTML =  "<span style='display: inline; color: #CC3333; border: 1px solid #CC3333;'>"+msg_ok+"</span>";
//				document.getElementById(id_msg).innerHTML =  msg_empty;
			break;
			default:
				document.getElementById(id_msg).innerHTML =  "CHECK FALLITO";
			break;
			
	}
}
//##############################################################################
function execXMLHttpRequestSync(method,ur,id_msg,msg_ok,msg_ko,msg_empty) {
//alert("execXMLHttpRequestSync");
	var http = new XMLHttpRequest();
	http.open(method,url,true);	
	http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	http.send(null);
	http.onreadystatechange = function() {
		if (http.readyState == 4){
			CheckResponse(http.responseText,id_msg,msg_ok,msg_ko,msg_empty);
		}
	}
}
		
//####################################################################
function check_pass_complexity(pass)
{
	var lowercaseletter = /[a-z]/.test(pass);
	var uppercaseletter = /[A-Z]/.test(pass);
	var digit 			= /\d/.test(pass);
	
	var low_security    = lowercaseletter || uppercaseletter || digit;
	var med_security    = (lowercaseletter && uppercaseletter) || (lowercaseletter && digit) || (digit && uppercaseletter);
	var high_security   = lowercaseletter && uppercaseletter && digit;
	var higher_security = high_security && pass.length >= 6;
	
	if ( low_security )
		document.getElementById('SECURITY').style.backgroundColor = 'red';
	if ( med_security )
		document.getElementById('SECURITY').style.backgroundColor = 'yellow';
	if ( high_security )
		document.getElementById('SECURITY').style.backgroundColor = 'green';
}

//####################################################################
function caricaSelect(_item_id,_tabella,_where_cond,_has_label, _lingua,_lista_item_dep, _lista_dep_has_label){	
//alert("item_id: " + _item_id + "\n tabella:" + _tabella +  "\nwhere cond: " + _where_cond +", lingua: "+_lingua  );		
	emptySelect(_item_id);


	var oXHR = new XMLHttpRequest();
	oXHR.open("get","//"+location.hostname+dev_prefix+"/includes/loadSelect.php?tabella=" + _tabella + "&where_cond=" +_where_cond+"&id_lingua="+_lingua ,true);
//	oXHR.open("get","//"+location.hostname+"/mecal/includes/loadSelect.php?tabella=" + _tabella + "&where_cond=" +_where_cond+"&id_lingua="+_lingua ,true);
	oXHR.setRequestHeader("Content-type","application/x-www-form-urlencoded");

	oXHR.send(null);
	oXHR.onreadystatechange = function(){
		if (oXHR.readyState == 4){					
			var dati_restituiti =  oXHR.responseText;			
//alert("dati_restituiti:" + dati_restituiti  );		
			if (dati_restituiti == '' || !dati_restituiti.indexOf('#') ) {
				// non ci sono dati nascondo i campi
				if (typeof (_lista_item_dep) != 'undefined' ) {
					resetInputSelect(_lista_item_dep, _lista_dep_has_label);
				} else {
					hideShowLayer(_item_id,'');
					if(_has_label) hideShowLayer('label_'+_item_id,'');
				}
				return ;
			}

			dati_restituiti = "#|"+dati_restituiti;
			var arrayDati = dati_restituiti.split("|");
			
			
			hideShowLayer(_item_id,'show');
			if(_has_label) hideShowLayer('label_'+_item_id,'show');
			
			var selectBox = document.getElementById(_item_id);
//alert(arrayDati);
			
			for (i=0;i<arrayDati.length;i++){	
				var datiArray = arrayDati[i].split("#");
				try {
					var id = datiArray[0];
					var valore = datiArray[1];				
					 // doesn't work in Firefox
					selectBox.add(new Option(valore,id ));
				} catch(ex) {
					//codice FireFox compatibile
					var elOptNew = document.createElement('option');
					elOptNew.value = datiArray[0];
					elOptNew.text = datiArray[1];
					selectBox.options.add(elOptNew);
				}
			}
			// è cambiato, nasconde i campi successivi
//alert(_lista_item_dep);
			if ( typeof (_lista_item_dep) != 'undefined') {
				indice = _lista_item_dep.indexOf('|');
				if( indice >= 0) {
//alert('indice:'+indice);
			
					_lista_item_dep = _lista_item_dep.substr(indice+1);
					_lista_dep_has_label = _lista_dep_has_label.substr(_lista_dep_has_label.indexOf('|')+1);
					resetInputSelect(_lista_item_dep, _lista_dep_has_label);
				}
			}
		}
	}
}
/*###########################################################*/
function emptySelect(_item_id){
//alert(_item_id);
	var selectBox = document.getElementById(_item_id);		
	while(selectBox.length != 0 ){
		selectBox.remove(0);	
	}
}
/*###########################################################*/
function hideShowLayer(layerID, stato){
//alert(layerID+','+ stato);
	dis_attuale = document.getElementById(layerID).style.display;
	
	if(stato == '' ) {
		vis = 'none';
	} else {
		vis = '';
	}
	document.getElementById(layerID).style.display  = vis;	
	return dis_attuale;
}

//#########################
// function check
// esegue un controllo sulla proprietà disabled di un dato elemento e
// e ne switcha il valore in true o false in dipendenza dei valori di p e d
function check(e,stato_p,d){

	stato_d = document.getElementById(d).checked;
	var is_disabled = !(stato_p && stato_d);
//alert ("valori: "+ stato_p + "|" + stato_d +"|"+ is_disabled);
	document.getElementById(e).disabled = is_disabled;
}
//##############################################
// function reset form
//
function resetForm(formName) {
	for (i=0; i<document.formName.elements.length; i++) {
		document.formName.elements[i].value="";
	}
}
//##############################################
// function nascondi altre form
// formName = formName$sez
// maxsez = massimo numero sezioni
// startel = primo livello da nascondere
//
function hideItems(formName,sez,max_sez,startel) {
//alert(formName+'|'+sez+'|'+max_sez+'|'+startel);
	for(j=1;j<=max_sez;j++) {
		if(sez) {
			_formName = formName+j;
			_startel = (startel+j);
		} else {
		       	_formName = formName;
		       	_startel = startel;
		}
		hide=false;
		myform = document.getElementsByName(_formName);
//alert(myform[0].name);
//for (myKey in myform[0]){
//	alert ("myObj["+myKey +"] = "+myform[0][myKey]);
//}

		for (i=1; i< (myform[0]['elements']).length; i++) {
			if(j!=sez)  myform[0]['elements'][i].value="";
			if( (myform[0]['elements'])[i].name == (startel+j)) hide=true;
			if(hide) myform[0]['elements'][i].style.display='none';
		}
	} 
}

function preparaCaricaSelect( campo,  _item_id,_tabella,_where_cond,_has_label, _lingua){	
//alert("preparaCaricaSelect(" +  campo + ","+  _item_id+","+_tabella+","+_where_cond+","+_has_label+","+ _lingua+")");
	_where_cond += " AND "+ campo +" = '"+document.getElementById(campo).value+"'";
	caricaSelect(_item_id,_tabella,_where_cond,_has_label, _lingua);
}

//##############################################
function resetInputSelect(lista_item_id,lista_has_label){
//alert("resetInputSelect(" + lista_item_id+","+lista_has_label+")");

	var arrayDati = lista_item_id.split("|");
	var arrayHasLabel = lista_has_label.split("|");
	for (i=0;i<arrayDati.length;i++){	
		_has_label = arrayHasLabel[i];
		_item_id = arrayDati[i];	 
		//svuota il campo
		emptySelect(_item_id);
		//nasconde il campo
		hideShowLayer(_item_id,'');
		//nasconde l'eventuale etichetta
		if(_has_label) hideShowLayer('label_'+_item_id,'');

	}
}


function set_depending_select(_value, _item_id,_tabella,_where_cond,_has_label, _lista_item_dep, _lista_dep_has_label, _lingua){	
	if(_value) caricaSelect(_item_id,_tabella,_where_cond,_has_label, _lingua, _lista_item_dep, _lista_dep_has_label);
      	else resetInputSelect(_lista_item_dep, _lista_dep_has_label);
}


