
// Date format -> dd-mm-YYYY

function objDate(date) { this.date = date; }

objDate.prototype = {	

	getDate		: function()
	{
		var d = new Date()
		return d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear();
	},
	setDate		: function(date)
	{
		this.date = date || '';
	},
		
	ifBisiesto	: function(year)
	{
		if (year % 4 == 0 && year % 100 != 0) return true;
		else if (year % 100 == 0 && year % 400 == 0) return true
		else return false;
	},	

	isValidDate	: function(date)
	{
		var parts   = date ? date.split('/') : this.date.split('/');
		var febrero =  28;

		day   = parts[0];
		if (isNaN(day)) return false;
		day = parseInt(day);
		if (day > 31) return false;

		month = parts[1];
		if (isNaN(month)) return false;
		month = parseInt(month);
		if (month > 12) return false;

		year  = parts[2];
		if (isNaN(year)) return false;
		year = parseInt(year);

		if( this.ifBisiesto(year) ) febrero=29;

		if ( month == 02 && day > febrero ) return false;

		if ( ( month == 4 || month == 6 || month==9 || month==11) && ( day > 30 ) ) return false;

		return true; 
	},

	difYears	: function(date1,date2) 
	{    
		// Parseamos las fechas (dd-mm-YYYY)
		
		d1 = date1.split('/')[0];
		m1 = date1.split('/')[1];
		y1 = date1.split('/')[2];

		d2 = date2.split('/')[0];
		m2 = date2.split('/')[1];
		y2 = date2.split('/')[2];

		//Obtiene objetos Date  
		var miFecha1 = new Date( y1, m1, d1 );
		var miFecha2 = new Date( y2, m2, d2 );

		//Resta fechas y redondea  
		var difYears = y2-y1;
		var diferencia = miFecha2.getTime() - miFecha1.getTime();
		var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));  
		

		var anyos = 0;
		for(i=0;i<difYears;i++)
		{
			if ((y1+1) % 4 == 0) dias-=366;
			else dias-=365;
			
			/* temporalmente, hay una correcion de 4 dias */
			if (i == difYears - 1 && dias > 0 && dias - 4 == 0) break;
			
			if (dias <= 0) break;
			anyos++;
		}
		
		return anyos;
	},

	difDays	: function(date1,date2) 
	{    
		// Parseamos las fechas (dd-mm-YYYY)
		d1 = date1.split('/')[0];
		m1 = date1.split('/')[1];
		y1 = date1.split('/')[2];

		d2 = date2.split('/')[0];
		m2 = date2.split('/')[1];
		y2 = date2.split('/')[2];
		 
		//Obtiene objetos Date  
		var miFecha1 = new Date( y1, m1, d1 );
		var miFecha2 = new Date( y2, m2, d2 );  

		//Resta fechas y redondea  
		var difYears = y2-y1;    
		var diferencia = miFecha2.getTime() - miFecha1.getTime();
		var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));  
		
		return dias;
	},

	// Date format in --> dd/mm/YYYY	
	isMajor		: function(date1,date2)
	{
		var d1 = new Date(this.getAmericanFormat(date1));
		var d2 = new Date(this.getAmericanFormat(date2));
		return ( d1 > d2 );
	},
	
	// Date format in --> dd/mm/YYYY
	isMinor		: function(date1,date2)
	{
		var d1 = new Date(this.getAmericanFormat(date1));
		var d2 = new Date(this.getAmericanFormat(date2));
		return ( d1 < d2 );
	},

	// Date format in --> dd/mm/YYYY
	isEqual		: function(date1,date2)
	{
		var d1 = new Date(this.getAmericanFormat(date1));
		var d2 = new Date(this.getAmericanFormat(date2));
		return ( d1.toString() == d2.toString() );
	},

	getAmericanFormat	: function(date)
	{
		return date.split('/')[1] + '/' + date.split('/')[0] + '/' + date.split('/')[2];
	}
}