var _delay;

function dataorarioesteso() {
	var dData = new Date();
	var retValue = "";

    var d = dData.getDate();
    var m = dData.getMonth() + 1;
    var y = dData.getFullYear();
    var h = dData.getHours();
    var mm = dData.getMinutes();
    var ss = dData.getSeconds();
    var ms = dData.getMilliseconds();


    retValue = "" + y + (m<=9 ? "0" + m : m) + (d <= 9 ? "0" + d : d);
    retValue += "" + (h<=9 ? "0" + h : h) + (mm<=9 ? "0" + mm : mm);
    retValue += "" + (ss<=9 ? "0" + ss : ss) + (ms<=9 ? "0" + ms : ms);

	return retValue;
}

_delay = (function(){
	var timer = 0;
	return function(callback, ms){
		clearTimeout (timer);
		timer = setTimeout(callback, ms);
	};
})();

function validateEmail(email) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

function getParameterByName(address, name) {
    var queryStringArray = address.split("?");
    var queryStringParamArray = queryStringArray[1].split("&");
    var nameValue = "";
    for (var i=0;i<queryStringParamArray.length; i++) {
        queryStringNameValueArray = queryStringParamArray[i].split("=");
        if (name==queryStringNameValueArray[0] ){
            nameValue = queryStringNameValueArray[1];
        }
    }
    return nameValue;
}

function getQuerystringFromHash() {
	var address=window.location.hash;
	var querystring="";
    var queryStringArray = address.split("?");
    if (queryStringArray.length>0) {
		querystring=queryStringArray[1];
	}
    return querystring;
}

function querystring_toArray(querystring,divisore) {
	if (querystring!=null) {
		return querystring.split(divisore);
	} else {
		return {};
	}
}

function callURL(objURL) {
	$.ajax({
		url: objURL.pUrl,
		type: objURL.pType,
		async: objURL.pAsync,
		data: objURL.pValues,
		success: function(data, status, xhr) {
			console.log(data);
			var objJSON = JSONDecode(data);
			if (objJSON!=null) {
				if (objJSON.call_err==false) {
					if (objURL.pSuccess!="") {
						eval(objURL.pSuccess+"(objURL, objJSON, status, xhr)");
					}
				} else {
					alert("Errore: "+objJSON.call_err_description);
				}
			} else {
				//gestione errore
			}
		},
		error: function(xhr, status, error) {
			if (objURL.pError!="") {
				eval(objURL.pError+"(objURL, xhr, status, error)");
			}
		}
	});
}

function JSONDecode(response) {
    var objReturn = null;
    try{
        var objReturn=JSON.parse(response);
    }catch(e){
		alert(response);
		/*MsgBox("error","Errore JSON:" + e);
		MsgBox("warning", response);*/
    }
    return objReturn;
}

function enterNumber(e){
	if (!/^[0-9]+$/.test(e.value)) 	{
		alert("Please enter onyl number.");
		e.value = e.value.substring(0,e.value.length-1);
	}
}

function getValueCheckBoxes(formName,checkBoxName){
	var result, vals = [];
	if (document.forms[formName][checkBoxName]) {
		var checkBoxName = document.forms[formName][checkBoxName];
		for(var i=0,elm;elm = checkBoxName[i];i++) {
			if(elm.checked) {
				vals.push(encodeURIComponent(elm.value));
			}
		}
		result = vals.join(', ');
	}

	return result;
}

function resetHasError() {
	$("div").removeClass("has-error");
}

function checkCampo(campo) {
	var retValue = true;

	if ($("#"+campo).val()=="") {
		MsgBox("error","Completare i campi obbligatori");
		hasError(campo);
		retValue = false;
	}
	return retValue;
}

function hasError(campo) {
	$("#"+campo).parent().addClass("has-error");
}

function checkNumeric(campo,obbligatorio) {
	var retValue = true;

	if (!IsNumeric($("#"+campo).val())) {
		MsgBox("error","Attenzione: campo numerico");
		hasError(campo);
		retValue=false;
	} else {
		if (obbligatorio) {
			retValue = checkCampo(campo);
		}
	}
	return retValue;
}

function IsNumeric(val) {
    return Number(val)==val;
}

function objToString(obj) {
    var str = "";
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            str += p + "::" + obj[p] + "\n";
        }
    }
    return str;
}

function zeroblank(value) {
	if (value!=null && value==0) {
		return "";
	} else {
		return value;
	}
}

function FormToJSon(frmForm) {
	var objJSON = {};
	$.each(frmForm,
		function(i, v) {
		objJSON[v.name] = sanitizeJSON(v.value);
	});

	return objJSON;
}
function sanitizeJSON(unsanitized){
    return unsanitized.replace(/&/g, 'ç_');
}

function controllaPIVA(pi) {
	if (pi=="") return false;

	if (pi.length!=11) return false;

	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) )==-1)
			return false;
	}

	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - "0".charCodeAt(0);

	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - "0".charCodeAt(0) );
		if( c > 9 ) c = c - 9;
		s += c;
	}

	if(( 10 - s%10 )%10 != pi.charCodeAt(10) - "0".charCodeAt(0) ) return false;

	return true;
}

function controllaCF(cf) {
	var validi, i, s, set1, set2, setpari, setdisp;

	if (cf=='') return false;
	cf = cf.toUpperCase();
	if( cf.length != 16 ) return false;
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 ) return false;
	}

	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";

	s = 0;
	for (i = 1; i <= 13; i += 2 )
		s += setpari.indexOf(set2.charAt( set1.indexOf( cf.charAt(i) )));

	for (i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));

	if (s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ) return false;

	return true;
}

function isDateValid(pdata) {
var retValue=false;

	if (Object.prototype.toString.call(pdata) === "[object Date]" ) {
		if ( isNaN(pdata.getTime() ) ) {  // d.valueOf() could also work
			// date is not valid
		} else {
			retValue=true;
		}
	}else {
		// not a date
	}

	return retValue;
}
function strtojson(val) {
    return val.replace(/'/g, "\'")
              .replace(/"/g, '\"')
              .replace(/&/g, "(ecommerciale)");
}

function scriviCookie(nomeCookie,valoreCookie,durataCookie) {
  var scadenza = new Date();
  var adesso = new Date();
  scadenza.setTime(adesso.getTime() + (parseInt(durataCookie) * 60000));
  document.cookie = nomeCookie + '=' + escape(valoreCookie) + '; expires=' + scadenza.toGMTString() + '; path=/';
}

function leggiCookie(nomeCookie) {
  if (document.cookie.length > 0) {
    var inizio = document.cookie.indexOf(nomeCookie + "=");
    if (inizio != -1) {
      inizio = inizio + nomeCookie.length + 1;
      var fine = document.cookie.indexOf(";",inizio);
      if (fine == -1) fine = document.cookie.length;
      return unescape(document.cookie.substring(inizio,fine));
    }else{
       return "";
    }
  }
  return "";
}

function date_yyyymmdd(cdata) {
    var y = cdata.getFullYear();
    var m = cdata.getMonth() + 1;
    var d = cdata.getDate();
    var mm = m < 10 ? '0' + m : m;
    var dd = d < 10 ? '0' + d : d;
    return '' + y + mm + dd;
}