function isDate(str){str = str||""; return str.search(/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/)!=-1}
function showMessageInLightBox(text){
	// questa funzione serve per tutte le volte che voglio sovrascrivere la gif loading.. con un messaggio
	// dopo che ho finito l'operazione in corso
	var bLoading = $('#facebox .loading').length == 1;
	text = text||"";
	if(text.length){
		if( bLoading ){
			$.facebox.reveal(text);
		}else
			$.facebox(text);
	}else if(bLoading)
		$.facebox.close();
}

// Response per chiamata xmlHTTP
function requestCallBack(sData,sStatus){
	var responseText; // vedere come gestire il messaggio di errore
	switch(sStatus){
		case "success":
			var oResponse = $( document.createElement("div") ).append(sData);
			oResponse.children().each( function(){
				if(this.id){
					var o = $("#"+this.id);
					if(o){
						o.empty();
						var sHtml = $(this).html();
						if(sHtml)
							o.html(sHtml);
					}
					/*
					if(o)
						o.replaceWith( $(this) );
					*/
					// faccio il replace degli oggetti corrispondenti in pagina
				}
			});
			var oResponseText = oResponse.children("#responseText")[0];
			if(oResponseText)
				responseText = oResponseText.innerHTML;
		break;
		case "error":
			responseText = "CLIENT ERROR: "+sData.responseText;
		break;
	}
	return responseText;
}

function ajaxCall(qs,data){	
	data = data||"";
	$.ajax({
		async: true,
		error: function(XMLHttpRequest, textStatus) {
					showMessageInLightBox( requestCallBack(XMLHttpRequest, textStatus) );
				},//func(XMLHttpRequest, textStatus);
		success: function(data, textStatus) {
					showMessageInLightBox( requestCallBack(data, textStatus) );
				},//func(data, textStatus),
		data: data,
		type: "POST",
		url: "ajaxRequests.asp"+qs,
		scriptCharset:"iso-8859-1"
	});
}

// Post di un form in Ajax
function sendData(frm,bLightBox){
	if( frm ){
		//var data = $(frm).serialize();
		// ^^^ ho tolto l'accesso al name perche' potrebbero esserci in pagina + form con lo stesso nome
		var data = [];
		for(var i=0,v,n;i<frm.elements.length;i++){
			if( !frm.elements[i].name ) continue;
			v = null;
			n = null;
			switch(frm.elements[i].type){
				case "select-one":
					n = frm.elements[i].name;
					v = frm.elements[i].options[frm.elements[i].selectedIndex].value;
				break;
				case "radio":
				case "checkbox":
					if(frm.elements[i].checked){
						n = frm.elements[i].name;
						v = frm.elements[i].value;
					}
				break;
				default:
					n = frm.elements[i].name;
					v = escape(frm.elements[i].value);
				break;
			}
			if(n){
				data.push(n + "=" + v );
			}
		}
		data = data.join("&");
		bLightBox = bLightBox==false?false:true;
		var qs = frm.action.split("?");
		if(qs.length>1) qs = "?"+qs[1];
		else qs = "";
		if(bLightBox)
			$.facebox(function(){ ajaxCall(qs,data); });
		else
			ajaxCall(qs,data);
	}else if(frm)
		frm.submit();
	return false;
}

function sendGetData(qs,bLightBox){
	qs = (qs||"").split("?");
	bLightBox = bLightBox==false?false:true;
	if(qs.length>1) qs = "?"+qs[1];
	else qs = "";
	if(qs){
		if(bLightBox)
			$.facebox(function(){ ajaxCall(qs); });
		else
			ajaxCall(qs);
	}
	return false;
}

var resultFadeOut = null;
var fadeOutTimer = 0;

function setRisultatiHide(){
	clearInterval(resultFadeOut);
	$("#ricercheRisultati").fadeOut("slow");
	resultFadeOut = null;
	fadeOutTimer = 0;
}
function setRisultatiShow(positionElementID){
	if( !resultFadeOut ){
		$("#ricercheRisultati").fadeIn("slow")
							   .bind("mouseover", function(){fadeOutTimer=0;} )
							   .bind("mouseout", function(){fadeOutTimer=-1;} );
		
		// nascondo le select per via di IE
		var frm = document.getElementById(positionElementID).form;
		$(frm).children("fieldset").each( function(){$(this).hide();}) 
		resultFadeOut = setInterval( "setRisultatiShow('"+positionElementID+"');",1 );
	}
	else if(fadeOutTimer==-1 || fadeOutTimer>500){
		setRisultatiHide();
	}else{
		var obj = $("#"+positionElementID);
		var left = $(obj).offset( ).left + 2;
		var top = $(obj).offset( ).top + $(obj).outerHeight();
		$("#ricercheRisultati").css("top",top).css("left",left);
		fadeOutTimer++;
	}
}

function startQuickSearch(){
	if( this.value && this.value.length>2 ){
		// dati per la ricerca
		// viene fatta la chiamata e automaticamente viene sostituito il DIV coi risultati in pagina
		var frm = this.form;
		var qs = "?"+$(frm).serialize();
		sendGetData(qs,false);
		
		// inizia il posizionamento
		fadeOutTimer = 0;
		setRisultatiShow(this.id);
		
		// mantieni in posizionamento
		$(this).bind("mouseover", function(){fadeOutTimer=0;} )
	}else
		fadeOutTimer = -1;
}

function switchTab(id,parentID){
	var o = document.getElementById(parentID);
	if(o){
		$(o).children().each( function(){
									if( id!=parentID )
										$(this).hide();
									else
										$(this).show("slow");
							})
		$("#"+id).show("slow");
	}
}

function setVoteValue(el){
	$(el).removeClass("starOFF").addClass("starON");
	$(el).prevAll().removeClass("starOFF").addClass("starON");
	$(el).nextAll().removeClass("starON").addClass("starOFF");
	el.form["value"].value = el.name;
	el.blur();
}


// YOUTUBE 
function showVideo(ID){
	$.facebox('<div id="readyYtApiPlayer">Loading...</div>');
	
	var params = { allowScriptAccess: "always" };
	var atts = { id: "readyYtPlayerEMB_"+ID };
	swfobject.embedSWF("http://www.youtube.com/v/"+ID+"&enablejsapi=1&playerapiid="+ID, 
						"readyYtApiPlayer", "480", "295", "8", null, null, params, atts);
	
	$(document).bind('close.facebox', function(){
		var player = document.getElementById("readyYtPlayerEMB_"+ID);
		if(player){
			player.stopVideo();
			player.clearVideo();
		}
	})
	
	return false;
}

function onYouTubePlayerReady(pID) { 
 	var player = document.getElementById("readyYtPlayerEMB_"+pID);
	if(player)
		player.playVideo();
}

