//FUNZIONI PER LA COSTRUZIONE DELLE STRINGHE DI RICERCA

 function help_citt(id){
	origine=this.document.getElementById(id).type;
	attuale=this.document.getElementById(id).value;
	old=this.document.getElementById("old_"+id).value;
	if(attuale!=old) this.document.getElementById("modificato").value='true';
	if((attuale==old || attuale=="")&&(origine=='text'))
		return;
	//Annulla il flag modificato per non far comparire il confirm di modifica
	invia('azione='+id+"_"+origine.substr(0,4)+"|modificato=false");
}

function buildQuery(formName)
{
	var v_qstr="";
	var fields=new Array();
	var l_count=0;
	// PER LA COSTRUZIONE DELLA QUERY CONSIDERA SOLO I CAMPI DEL FORM 'CONTENUTO'
	var qry_flds = this.document.getElementById("content");
	if(qry_flds.getElementsByTagName)
		{
		// --------------------------------------------------------------- //
		fields=qry_flds.getElementsByTagName("input");
		for (l_count=0; l_count<fields.length; l_count++)
			{
			field_name=fields[l_count].id;
			field_value=trim(fields[l_count].value);
			field_type=fields[l_count].getAttribute("type");
			field_tipo=fields[l_count].getAttribute("tipo");
			switch(field_type){
				case "text":
					if (field_value.length>0){
						if (field_tipo!="date" && field_tipo!="numero")
							field_tipo="testo";
						sCond=buildCondition(field_name,field_value,field_tipo);
						if (sCond!="")
							v_qstr+=' AND '+sCond;
						else
							return false;
						}
					break;
				case "radio":
					if (fields[l_count].checked && fields[l_count].value != ""){	
						v_qstr+=' AND '+field_name+'="'+field_value+'"';}
					break;
				case "checkbox":
					if (fields[l_count].checked)
						v_qstr+=' AND '+field_name+'=1';
					break;
				default:
					//alert("Errore di inserimento sui campi.");
					//return false;
					break;
				}
			}
		// --------------------------------------------------------------- //
		fields=qry_flds.getElementsByTagName("select");
		for (l_count=0; l_count<fields.length; l_count++)
			{
				field_name=fields[l_count].id;
				field_value="";
				field_tipo="numero";
				for(i=0; i<fields[l_count].options.length;i++){
					if(fields[l_count].options[i].selected)
					field_value+=fields[l_count].options[i].value+"|";
				} 
				field_value=field_value.slice(0, -1);
				if (field_value!=""){
					sCond=buildCondition(field_name,field_value,field_tipo);
						if (sCond!=""){
							v_qstr+=' AND '+sCond;
						}
				}
			}
		// --------------------------------------------------------------- //
		
		var fields=qry_flds.getElementsByTagName("textarea");
		for (i=0; i<fields.length; i++)
			{
				
			field_name=fields[i].id;
			field_value=trim(this.document.getElementById(field_name).value);
			field_tipo="testo";
			if (field_value.length>0){				
					sCond=buildCondition(field_name,field_value,field_tipo);
					if (sCond!="")
							v_qstr+=' AND '+sCond;
					else
						return false;
				}
			}
	}
	//toglie la prima AND
	v_qstr=v_qstr.substr(5);
	this.document.getElementById("qstr").value=v_qstr;
	//alert(v_qstr);
	return true;
}

function buildCondition(field_name,field_value,field_tipo)
{
	var s_get_query="";
	var v_oper="";
	v_vals=new Array();
	field_value=trim(field_value);
	// Estrae <>=
	for (i=0; i<field_value.length; i++)
		{
		if (field_value.substring(i,i+1)==">" || 
		 	 field_value.substring(i,i+1)=="<" || 
		 	 field_value.substring(i,i+1)=="=")
		v_oper=v_oper+field_value.substring(i,i+1);
		}
	v_vals[0]=field_value.replace(v_oper,"");
	// Estrae :|%?*
	if (v_oper==""){
			if (field_value.indexOf(":")!=-1){
				v_oper="BETWEEN";
				v_vals=field_value.split(":",2);
				}
			else if (field_value.indexOf("|")!=-1){
				v_oper="IN";
				v_vals=field_value.split("|");
				}
			else if (field_value.indexOf("%")!=-1 && field_tipo =="testo"){
				v_oper="LIKE";
				}
			else if (field_value.indexOf("?")!=-1 && field_tipo =="testo"){
				v_oper="LIKE";
				}
			else if (field_value.indexOf("*")!=-1){
				v_oper="LIKE";
				v_vals[0]=replace_all(field_value, "*", "%");
				}
			else {
				v_oper="=";
				v_vals[0]=field_value;				
				}
		}
	// -------------------------------------------------------- //
	field_tipo=field_tipo.toLowerCase();
	//UTILIZZA @@ ANZICHE' I DOPPI APICI PERCHE' QUESTI ULTIMI CREANO PROBLEMI CON IL CODICE HTML
	for (i=0; i<v_vals.length; i++){
		switch (field_tipo.toLowerCase()){
			case "date":
				if (is_date(v_vals[i])!=""){
					v_vals[i]=is_date(v_vals[i]);
					v_vals[i]='@@'+to_ymd(v_vals[i])+'@@';
					}
				else {
					alert("Errore! Immettere la/le data/e nel formato (gg/mm/aaaa)");
					return "";
					}
				break;
			case "numero":
				v_vals[i]=trim(v_vals[i]);
				break;
			case "testo":
					v_vals[i]='@@'+trim(v_vals[i])+'@@';
				break;
			default:
				return "";
				break;
			} //End switch
		} // End for
	// -------------------------------------------------------- //
	
	switch (v_oper){
		case "<":
		case "<=":
		case "=<":
			s_get_query="(IsNull("+(field_name)+") OR "+
							field_name+" "+v_oper+" "+trim(v_vals[0])+")";
			break;
		case ">":
		case ">=":
		case "=>":
			s_get_query=field_name+" "+v_oper+" "+trim(v_vals[0]);
			break;
		case "IN":
			s_get_query=trim(field_name)+" IN (";
			for (i=0; i<(v_vals.length); i++){
				s_tmp=trim(v_vals[i]);
				if (s_tmp!="''")
					s_get_query+=s_tmp+",";
				}
			s_get_query+=")";
			//ELIMINA LA VIRGOLA DOPO L'ULTIMO VALORE
			s_get_query=s_get_query.replace("/,)/g",")");
			break;
		case "BETWEEN":
      	s_get_query=trim(field_name)+" BETWEEN "+
							trim(v_vals[0])+" AND "+trim(v_vals[1]);
			break;
		default:
			s_get_query=trim(field_name)+" "+trim(v_oper)+" "+trim(v_vals[0]);
		}
	// -------------------------------------------------------- //
	return s_get_query;
	} // End function


