jQuery.fn.timer=function(func){
	
	if(func=="start"){
		var start_mls = parseInt(new Date().getTime());
		$(this).attr("role",start_mls);
	}else if(func=="stop"){
		
		var start_mls = $(this).attr("role");
		var stop_mls = parseInt(new Date().getTime());
		
		var s=(stop_mls - start_mls)/1000;
		s=s.toFixed(3);
		$(this).val( s+" sec");
	}
	
}
/**
 * Classe Timer
 * @param func
 * @return
 */
function Timer(func){
	this.start_mls;
	this.start=function(){
		this.start_mls = parseInt(new Date().getTime());
	};

	this.stop=function(){
		var stop_mls = parseInt(new Date().getTime());
		
		var s=(stop_mls - this.start_mls)/1000;
		s=s.toFixed(3);
		return s;
	};
	
}

/**
 * Mostra un loading fino a quando la funzione fn_while non ritorna true;
 */
jQuery.fn.loading=function(msg,fn_while){
	var loading = $(this);
	if(fn_while()){
		
		var dots = loading.html();
		dots = dots.replace(msg,'');
		
		if(dots=='')dots='.';
		else if(dots=='.')dots='..';
		else if(dots=='..')dots='...';
		else if(dots=='...')dots='';
		
		loading.html(msg+dots);
    	
    	setTimeout(function(){ 
        	loading.loading(msg,fn_while);
        }, 500);
        
	}else loading.html('');
}


function formatSeconds(sec){
	
	var result = "";
	
	var h = Math.floor(sec/3600);
	
	if(h > 0)result+=h+"h: ";
	
	sec = sec%3600;
	
	var m = Math.floor(sec/60);
	if(m > 0)result+=m+"m, ";
	
	sec = Math.floor(sec%60);
	
	result+=sec+"s";
	
	return result;
	
	
}

/**
 * Funzione di utilit� che restituisce l'ora 
 * nel momento in cui viene chiamata,valida per l'inserimento su MySQL
 * @param separator Il separatore che verr� utilizzata per separare l'ora,minuti e secondi
 * @return La stringa con il formato dell'ora.
 */
function time(separator){

	if(separator == null)
		separator = ":";
	
	var today=new Date();
	var h=today.getHours();
	var m=today.getMinutes();
	var s=today.getSeconds();
	// add a zero in front of numbers<10
	m=checkTime(m);
	s=checkTime(s);

	return h + separator + m + separator +s;
	
}

/**
 * Funzione di utilit� che restituisce la data nel formato richiesto attraverso
 * la variabile format
 * @param format Il formato in cui si vuole la stringa ( current : 'standard' | 'mysql' )
 * @param separator Il separatore che verr� utilizzata per separare l'anno,mesi e giorni
 * @return La stringa con il formato della data.
 */
function date(format,separator)
{
	if(format == null)
		format = "standard";
	if(separator == null)
		separator = "-";
	
	var data = new Date();
	switch(format)
	{
		//Formato GG-MM-AAAA a seconda del separatore
		case "standard" :
			return data.getDate() + separator + (data.getMonth() +1) + separator + data.getFullYear();
			break;
		//Formato AAAA-MM-GG  a seconda del separatore
		case "mysql":
			return data.getFullYear() + separator + (data.getMonth() +1) + separator + data.getDate();
			break;
	};
}


//di appoggio x time
function checkTime(i){
	if (i<10){
	  i="0" + i;
	 }
	return i;
}

function toDay(){
	var today = new Date();
	var day = today.getDate();
	if(day < 10)day = "0"+day;
	
	var month = today.getMonth()+1;
	if(month < 10)month = "0"+month;
	
	var year = today.getFullYear();

	return day + "/" + month + "/" + year;
}


function giorni_differenza(data1,data2){
	
	var anno1 = parseInt(data1.substr(6),10);
	var mese1 = parseInt(data1.substr(3, 2),10);
	var giorno1 = parseInt(data1.substr(0, 2),10);
     
	var anno2 = parseInt(data2.substr(6),10);
	var mese2 = parseInt(data2.substr(3, 2),10);
	var giorno2 = parseInt(data2.substr(0, 2),10);

	var dataok1=new Date(anno1, mese1-1, giorno1);
	var dataok2=new Date(anno2, mese2-1, giorno2);
		
	var differenza = dataok2-dataok1;    
	
	if(differenza > 0){
		return Math.floor(differenza/86400000);
	}else if(differenza < 0){
		return Math.ceil(differenza/86400000)-1;
	}
	return 0;
}

function giorni_rimasti(data){
	
	return giorni_differenza( toDay(),data);
}



function getDay(date){
	
	var weekday=new Array(7);
	weekday[0]="Sun";
	weekday[1]="Mon";
	weekday[2]="Tue";
	weekday[3]="Wed";
	weekday[4]="Thu";
	weekday[5]="Fri";
	weekday[6]="Sat";

	return weekday[date.getDay()];
}


function italianDate(date){
	
	var giorno = String(date.getDate());
	if(giorno.length<2)giorno = '0'+giorno;
	var mese =String(date.getMonth()+1);
	if(mese.length<2)mese = '0'+mese;
	var anno =date.getFullYear();
	
	return giorno + '/' + mese + '/' + anno;
}



function giorni_lavorativi(data1,data2){
	
	var giorni_festivi= new Array("01-01","06-01","05-04","25-04","01-05","02-06","15-08","01-11","01-11","08-12","25-12","26-12");
	
	var anno1 = parseInt(data1.substr(6),10);
	var mese1 = parseInt(data1.substr(3, 2),10);
	var giorno1 = parseInt(data1.substr(0, 2),10);
     
	var anno2 = parseInt(data2.substr(6),10);
	var mese2 = parseInt(data2.substr(3, 2),10);
	var giorno2 = parseInt(data2.substr(0, 2),10);

	var from = new Date(anno1, mese1-1, giorno1);
	var to	 = new Date(anno2, mese2-1, giorno2);
	
	var giorni = -1;
	
	while( from <= to ){
	
		if( getDay( from ) != "Sat" &&  getDay( from ) != "Sun"  ){
			
			var day = from.getDate();
			if(day < 10)day = "0"+day;
			
			var month = from.getMonth()+1;
			if(month < 10)month = "0"+month;
			if(search( giorni_festivi, day+"-"+month ) == -1)giorni++;
		}
		from.setDate(from.getDate()+1);
		
	
	}
	
	return giorni;
	
}




function giorni_lavorativi_rimasti(data){
	return giorni_lavorativi(toDay(),data);
}

