/* ----------------------------------------------------------------------------------- */
// AJAX
function GetXmlHttpObject() {
	var xmlHttp=null;
	try {
  		// Firefox, Opera 8.0+, Safari
  		xmlHttp=new XMLHttpRequest();
  	} catch (e) {
  		// Internet Explorer
  		try {
    		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    	} catch (e) {
    		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    	}
  	}
	return xmlHttp;
}
/* ----------------------------------------------------------------------------------- */
// popUp
function popUp(url, w, h) {
   l = Math.floor((screen.width-w)/2);
   t = Math.floor((screen.height-h)/2);
   window.open(url,"","width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
}

/* ----------------------------------------------------------------------------------- */
// funzioni aggiuntyive per le stringhe
function Trim() {
	return this.replace(/\s+$|^\s+/g,"");
}

function LTrim() {
	return this.replace(/^\s+/,"");
}

function RTrim() {
	return this.replace(/\s+$/,"");
}

function deWord() {
	return this.replace(/<[\+]?(div|span|font)[ ]?[^<>]*>/,"");
}

String.prototype.deWord=deWord;   
String.prototype.Trim=Trim;   
String.prototype.RTrim=RTrim;   
String.prototype.LTrim=LTrim;   
/* ----------------------------------------------------------------------------------- */
// Funzioni per textarea
function insertInto(idTextArea, text) {
	textArea = document.getElementById(idTextArea);
    //IE support
    if (document.selection) {
        textArea.focus();
        sel = document.selection.createRange();
        sel.text = text;
        textArea.insert.focus();
    }
    //MOZILLA/NETSCAPE support
    else if (textArea.selectionStart || textArea.selectionStart == "0") {
        var startPos = textArea.selectionStart;
        var endPos = textArea.selectionEnd;
        var chaineSql = textArea.value;

        textArea.value = chaineSql.substring(0, startPos) + text + chaineSql.substring(endPos, chaineSql.length);
    } else {
        textArea.value += text;
    }	
}

function limit(id, limit) {
	textElement = document.getElementById(id);
	spanElement = document.getElementById("n_"+id);
	limit = parseInt(limit);
	if(limit < textElement.value.length) textElement.value = textElement.value.substring(0, limit);
	spanElement.innerHTML = limit - textElement.value.length;
}
/* ----------------------------------------------------------------------------------- */
// Funzioni extra per tiniMCE
function insertContImgInMce(id, pos) {
	tinyMCE.execCommand('mceInsertContent', false, '{FUNZ:contImg(id='+id+', align='+pos+')}')
}
/* ----------------------------------------------------------------------------------- */
// gestione XML
function getXMLFile(data) {
	return dojo.dom.createDocumentFromText(data);
}

function getXMLNode(node, name) {
	//alert(name+" = "+node.getElementsByTagName(name).length);
	return node.getElementsByTagName(name)[0];
}

function getXMLNodeValue(node, name) {
	//alert(name+" = "+node.getElementsByTagName(name).length);
	return node.getElementsByTagName(name)[0].childNodes[0].nodeValue;
}

function getXMLIndexNode(node, index) {
	return node.childNodes[index];
}

function countXMLNode(node) {
	//alert(node.childNodes.length);
	return node.childNodes.length;
}
//--------------------------------------

var cellnumber = new RegExp("^3[0-9]{2}[ \\-]?[0-9]{6,7}$");
var alphanume = new RegExp("^[A-Za-z0-9]*$");
var alphanumesp = new RegExp("^[A-Za-z0-9 ]*$");
var calendario = new RegExp("^[0-9]{2}[\\/\\-][0-9]{2}[\\/\\-][0-9]{4}$");
var intero = new RegExp("^[\\-]?[0-9]*$");
var interoPositivo = new RegExp("^[0-9]*$");
var reale = new RegExp("^[\\-]?[0-9]*[\\.]?[0-9]{0,4}$");
var realePositivo = new RegExp("^[0-9]*[\\.]?[0-9]{0,4}$");
var textEmail = new RegExp("^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$");
var partialEmail = new RegExp("^([a-zA-Z0-9._%-]+@{0,1}|@)([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}|[a-zA-Z0-9-]*)$");  
var euroRex = new RegExp("^[0-9]+\\.[0-9]{2}$");
var regular = new RegExp("^[^<{%\\'@$}>]*$");
var regular_minus = new RegExp("^[^<{\\'@$}>]*$");
var rexCC = new RegExp("[0-9\\-\\.\\+\\/]/g");
var rexCF = new RegExp("^[A-Za-z]{6}\\d{2}[A-Za-z]\\d{2}[A-Za-z]\\d{3}[A-Za-z]$");
var rexPI = new RegExp("^[0-9]{11}$");
var rexUrl = new RegExp("^http[s]?:\\/\\/[A-Za-z0-9\\-\\_\\.]+(\\:[0-9]{2,5})?[\\/]{1}([A-Za-z0-9\\-\\_\\.\\,\\%]+[\\/]?)*(\\?([A-Za-z0-9\\_\\-]+\\=[A-Za-z0-9\\%\\;\\,\\:\\.\\_\\-\\+\\=\\?\\!]*[\\&]?)*)*$");
var rexNoJS = new RegExp("<[/]?[ ]*(s|S)(c|C)(r|R)(i|I)(p|P)(t|T)");
var rexUrl = new RegExp("^http:\/\/");

function isEmpty(value) {
	return (value == null || value.Trim() == "");
}

function isCC(value) {
	return value.replace(rexCC, "") != "";
}

function needCC(value) {
	return value.replace(rexCC, "") != "" && !isEmpty(value);
}

function isUrl(value) {
	return rexUrl.test(value) || isEmpty(value);
}

function needUrl(value) {
	return rexUrl.test(value);
}

function isCF(value) {
	return rexCF.test(value) || isEmpty(value);
}

function needCF(value) {
	return rexCF.test(value);
}

function isPI(value) {
	return rexPI.test(value) || isEmpty(value);
}

function needPI(value) {
	return rexPI.test(value);
}

function isCalendario(value) {
	return calendario.test(value) || isEmpty(value);
}

function needCalendario(value) {
	return calendario.test(value);
}

function isEuro(value) {
	return euroRex.test(value) || isEmpty(value);
}

function needEuro(value) {
	return euroRex.test(value);
}

function isUrl(value) {
	return rexUrl.test(value) || isEmpty(value);
}

function needUrl(value) {
	return rexUrl.test(value);
}

function isRegular(value) {
	return regular.test(value);
}

function needRegular(value) {
	return (!isEmpty(value) && regular.test(value));
}

function isRegular_minus(value) {
	return regular_minus.test(value);
}

function needRegular_minus(value) {
	return (!isEmpty(value) && regular_minus.test(value));
}

function isAlphaNum(value) {
	return alphanume.test(value);
}

function needAlphaNum(value) {
	return (!isEmpty(value) && alphanume.test(value));
}

function isCellNum(value) {
	return cellnumber.test(value) || isEmpty(value);
}

function needCellNum(value) {
	return cellnumber.test(value);
}

function isAlphaNumSp(value) {
	return alphanumesp.test(value);
}

function needAlphaNumSp(value) {
	return (!isEmpty(value) && alphanumesp.test(value));
}

function isInteger(value) {
	return intero.test(value);
}

function needInteger(value) {
	return (intero.test(value) && !isEmpty(value));
}

function isIntegerPlus(value) {
	return interoPositivo.test(value);
}

function needIntegerPlus(value) {
	return (interoPositivo.test(value) && !isEmpty(value));
}

function isReal(value) {
	return reale.test(value);
}

function needReal(value) {
	return (reale.test(value) && !isEmpty(value));
}

function isRealPlus(value) {
	return realePositivo.test(value);
}

function needRealPlus(value) {
	return (realePositivo.test(value) && !isEmpty(value));
}

function isPercentuale(value) {
	numero = parseFloat(value);
	return (numero >= 0 && numero <= 100);
}

function isZero(value) {
	return parseFloat(value) == "0";
}

function isPartialEmail(value) {
	return (partialEmail.test(value) || isEmpty(value));
}

function needPartialEmail(value) {
	return partialEmail.test(value);
}

function isEmail(value) {
	return (textEmail.test(value) || isEmpty(value));
}

function needEmail(value) {
	return textEmail.test(value);
}

function containJS(value) {
	return rexNoJS.test(value);
}



function CheckItemName(field, LabelField){
    if(!needRegular(field.value)) {
        if(isEmpty(field.value)) {     
            alert("valorizzare il campo " + LabelField);
        } else {
            alert("Il campo " + LabelField + " contiene caratteri non accettati");
        }
        return false;
    } else { 
        return true;
    }
}

function CheckRegular(field, LabelField){
    if(!needRegular(field.value)) {
        if(isEmpty(field.value)) {     
            alert("valorizzare il campo " + LabelField);
        } else {
            alert("Il campo " + LabelField + " contiene caratteri non accettati");
            field.value="";
            field.focus();
       }
        return false;
    } else { 
        return true;
    }
}

function CheckIsRegular(field, LabelField){
    if(!isRegular(field.value)) {         
        alert("Il campo " + LabelField + " contiene caratteri non conformi al tipo di dato richiesto");
        field.value="";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsRegular_minus(field, LabelField){
    if(!isRegular_minus(field.value)) {         
        alert("Il campo " + LabelField + " contiene caratteri non conformi al tipo di dato richiesto");
        field.value="";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckField(field, LabelField){
    if(!needAlphaNum(field.value)) {         
        if(isEmpty(field.value)) {     
            alert("valorizzare il campo " + LabelField);
        } else {
            alert("Il campo " + LabelField + " puo' contenere solo caratteri alfanumerici");
        }
        field.value="";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsField(field, LabelField){
    if(!isAlphaNum(field.value)) {         
        alert("il campo " + LabelField + " puo' contenere solo caratteri alfanumerici");
        field.value="";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckFieldSp(field, LabelField){
    if(!needAlphaNumSp(field.value)) {         
        if(isEmpty(field.value)) {     
            alert("valorizzare il campo " + LabelField);
        } else {
            alert("Il campo " + LabelField + " puo' contenere solo caratteri alfanumerici e lo spazio");
            field.value="";
            field.focus();
        }
        return false;
    } else { 
        return true;
    }
}

function CheckIsFieldSp(field, LabelField){
    if(!isAlphaNumSp(field.value)) {         
        alert("il campo " + LabelField + " puo' contenere solo caratteri alfanumerici e lo spazio");
        field.value="";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckNumber(field, LabelField) {
    if (!needIntegerPlus(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve contenere solo caratteri numerici");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsNumber(field, LabelField) {
    if (!isIntegerPlus(field.value)) {
        alert("il campo " + LabelField + " deve contenere solo caratteri numerici");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckEuroPrice(field, LabelField) {    
    if (!needEuro(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve avere questo formato: d...d.dd; [d]:= cifra decimale");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsEuroPrice(field, LabelField) {    
    if (!isEuro(field.value)) {
        alert("il campo " + LabelField + " deve avere questo formato: d...d.dd; [d]:= cifra decimale");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckCalendario(field, LabelField) {    
    if (!needCalendario(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve avere questo formato: gg-mm-aaaa");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsCalendario(field, LabelField) {    
    if (!isCalendario(field.value)) {
        alert("il campo " + LabelField + " deve avere questo formato: gg-mm-aaaa");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckEmail(field, LabelField) { 
    if (!needEmail(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve essere un indirizzo email valido");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsEmail(field, LabelField) {    
    if (!isEmail(field.value)) {
        alert("il campo " + LabelField + " non e' un indirizzo email valido");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckPartialEmail(field, LabelField) { 
    if (!needPartialEmail(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve contenere una stringa riconosciuta come facente parte di un indirizzo email");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsPartialEmail(field, LabelField) {    
    if (!isPartialEmail(field.value)) {
        alert("il campo " + LabelField + " non contiene una stringa riconosciuta come facente parte di un indirizzo email");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckCellNum(field, LabelField) { 
    if (!needCellNum(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve essere un numero di cellulare valido");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsCellNum(field, LabelField) {    
    if (!isCellNum(field.value)) {
        alert("il campo " + LabelField + " non e' un numero di cellulare valido");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckCC(field, LabelField) { 
    if (!needCC(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il numero inserito in " + LabelField + " non è riconosciuto come un numero di una carta di credito");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsCC(field, LabelField) {    
    if (!isCC(field.value)) {
        alert("il numero inserito in " + LabelField + " non è riconosciuto come un numero di una carta di credito");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckCF(field, LabelField) { 
    if (!needCF(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve contenere un codice fiscale");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsCF(field, LabelField) {    
    if (!isCF(field.value)) {
        alert("il campo " + LabelField + " non contiene un codice fiscale corretto");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckCfOrPI(field, LabelField) { 
    if (!needPI(field.value) && !needCF(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve contenere un codice fiscale o una partita iva");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsCfOrPI(field, LabelField) {    
    if (!isPI(field.value) && !isCF(field.value)) {
        alert("il campo " + LabelField + " non contiene ne' un codice fisane ne' una partita iva");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsCF(field, LabelField) {    
    if (!isCF(field.value)) {
        alert("il campo " + LabelField + " non contiene un codice fiscale corretto");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckPI(field, LabelField) { 
    if (!needPI(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve contenere una partita iva");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckUrl(field, LabelField) { 
    if (!needUrl(field.value)) {
        if(isEmpty(field.value)) {
            alert("valorizzare il campo " + LabelField);        
        } else {
            alert("il campo " + LabelField + " deve contenere un url valido di tipo http:// o https://\nEsempi:\nhttp://www.tim.it/\nhttps://www.tim.it:8081/test/begin.do?carta=vitamina\nhttp://www.tim.it/card/0,,604%5E140859,00?cerca=promozione&tipo=autoricarica");
        }
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}

function CheckIsUrl(field, LabelField) {    
    if (!isUrl(field.value)) {
        alert("il campo " + LabelField + " non contiene  un url valido di tipo http:// o https://\nEsempi:\nhttp://www.tim.it/\nhttps://www.tim.it:8081/test/begin.do?carta=vitamina\nhttp://www.tim.it/card/0,,604%5E140859,00?cerca=promozione&tipo=autoricarica");
        field.value = "";
        field.focus();
        return false;
    } else { 
        return true;
    }
}


function xor(a, b) {
    return !((a && b) || (!a && !b));
}

function normalizzaEuroValue(campo) {
    if(!isEmpty(campo.value)) {
        cifre = campo.value.split(".");
        if(cifre.length == 1) {
            campo.value += ".00";
        } else {
            if(cifre[1].length == 0) campo.value += "00";
            if(cifre[1].length == 1) campo.value = cifre[0]+"."+cifre[1]+"0";
            if(cifre[1].length > 2) campo.value = cifre[0]+"."+cifre[1].substr(0,2);
        }
    }
}

function invertData(dataIn) {
    dataInSplit = dataIn.split("/");
    return dataInSplit[2]+dataInSplit[1]+dataInSplit[0];
}

function scambia(a, b) {
    temp = a.value;
    a.value = b.value;
    b.value = temp;
}

function clean(a) {
	a.value="";
}
   
