// JavaScript Document
netrade.helpers.date = {
	
	// Verfica se l'anno passato è bisestile 
	isLeapyear : function( year ) {
		
		year = year || 0;
		year = parseInt(year);	
		leapyear = null;
		if ( (year%4)==0 ) {
			if ( (year%100)==0 ) {
				if ( (year%400)==0 ) {
					leapyear = false;
				} else {
					leapyear = true;
				}
			} else {
				leapyear = true;
			}
		} else {
			leapyear = false;
		}
		return leapyear;
		
	},

	// Restituisce il numero di giorni per ogni mese di uno specifico anno
	daysInMonth : function( month, year ) {
		
		var arrDaysInMonth = [
			/*GENNAIO*/		31,
			/*FEBBRAIO*/	netrade.helpers.date.isLeapyear(year) ? 29 : 28,
			/*MARZO*/		31,
			/*APRILE*/		30,
			/*MAGGIO*/		31,
			/*GIUGNO*/		30,
			/*LUGLIO*/		31,
			/*AGOSTO*/		31,
			/*SETTEMBRE*/	30,
			/*OTTOBRE*/		31,
			/*NOVEMBRE*/	30,
			/*DICEMBRE*/	31
		];
		
		return arrDaysInMonth[month];
		
	},

	// Converte una stringa data in un oggetto data
	// dd/mm/yyyy
	strToDate : function( str_date ) {
		
		str_date = str_date || '';
		var partOfDate = str_date.split("/");
		var d = partOfDate[0];
		var m = partOfDate[1] - 1;
		var y = partOfDate[2];
		var objDate = new Date(y, m, d);
		return objDate ;
		
	},

	// Converte una stringa data in formato ISO (yyyy-mm-dd)
	// in un oggetto date di javascript
	strIsoToDate : function(str_date) {
		str_date = str_date || '';
		var partOfDate = str_date.split("-");
		var d = partOfDate[2];
		var m = partOfDate[1] - 1;
		var y = partOfDate[0];
		var objDate = new Date(y, m, d);
		return objDate;
	},

	// Converte una stringa data in un oggetto data
	// dd/mm/yyyy hh:mm:ss
	strToDateTime : function ( str_date_time ) {
		
		str_date_time = str_date_time || '';
		var partOfDateTime = str_date_time.split(" ");
		var partOfDate = partOfDateTime[0].split("/");
		var partOfTime = partOfDateTime[1].split(":");	
		var d = partOfDate[0];
		var m = partOfDate[1] - 1;
		var y = partOfDate[2];
		var hh = partOfTime[0];
		var mm = partOfTime[1];
		var ss = partOfTime[2];	
		var objDate = new Date(y,m,d,hh,mm,ss);
		return objDate ;
		
	},
	
	// Visualizzazione standard della data partendo da un oggetto data
	// dd/mm/yyyy
	dateToStr : function ( obj_date ) {
		
		var d = obj_date.getDate().toString();
		d = (d.length==1) ? "0"+d : d;
		var m = (obj_date.getMonth()+1).toString();
		m = (m.length==1) ? "0"+m : m;
		var y = obj_date.getFullYear().toString();
		var str_date = d +'/'+ m +'/'+ y;
		return str_date;
		
	},
	
	convertFromIso : function( str_date ) {	
		if ( str_date==null || str_date== "0000-00-00") {
			return '';
		} else {
			return netrade.helpers.date.dateToStr( netrade.helpers.date.strIsoToDate( str_date ) );		
		} 
	},
	
	convertToIso : function( str_date ) {			
		if ( str_date==null ) {	
			return '';
		} else {
			return netrade.helpers.date.dateToIsoStr( netrade.helpers.date.strToDate( str_date ) );		
		}
	},

	// Visualizzazione di un oggetto date di javascript
	// nel formato ISO (yyyy-mm-dd)
	dateToIsoStr : function(obj_date) {
		var d = obj_date.getDate().toString();
		d = (d.length==1) ? "0"+d : d;
		var m = (obj_date.getMonth()+1).toString();
		m = (m.length==1) ? "0"+m : m;
		var y = obj_date.getFullYear().toString();
		var str_date = y + '-' + m +'-'+ d;
		return str_date;
	},
	
	dateBetween : function ( date, date_start, date_end ) {
		
		if ( date >= date_start && date <= date_end ) {
			return true;	
		} else {
			return false;
		}
		
	},
	
	daysDiff : function( startDate, endDate ) {
		
		diff = (startDate - endDate) / (1000 * 3600 * 24);
		return (-1)*diff;
		
	},
	
	dayName : function( date, ln ) {
		
		ln = ln || 'it';
		var daysNames = {
			it: ["Domenica","Luned&igrave;","Marted&igrave;","Mercoled&igrave;","Gioved&igrave;","Venerd&igrave;","Sabato"]
		};		
		var daysOfWeek=date.getDay();
		var name = eval('daysNames.'+ln+'[daysOfWeek];	')
		return name;
		
	}

};

