/**
* Operaciones con fechas
*
* Funciones para la gestión de fechas
* @package SISTEMA
* @subpackage FORMULARIOS
* @author Manuel Segura
* @version 1.0
* @copyright OVALUS
*/

function fDate_check(oField)
{
		var aDate =  this.extract(oField);
		if (aDate && this.isValid(parseInt(aDate[1],10), parseInt(aDate[2],10), parseInt(aDate[3],10))) return true;

		else return false;
};

function  fDate_IsValid(iDay, iMonth, iYear)
{
	if ((iDay<1)||(iDay>31)) return false;
	if ((iMonth<1)||(iMonth>12)) return false;
	switch(iMonth)
	{
		case 2:			return ((((iYear%4==0)&&(iYear%100 != 0)) || (iYear%400==0))?(iDay>29?false:true):(iDay>28?false:true));
		case 4,6,9,11: 	if (iDay>30) return false;
	};
	return true;
};

function fDate_Extract(oField)
{
	var aMatch		= null;
	var oToday 		= new Date();
	var sYear  		= new String(oToday.getFullYear());
	var oRegExpD 	= new RegExp("^(0?[0-9]|[12][0-9]|3[0-9])[\\-/\\.]{0,1}(0?[0-9]|1[12])[\\-/\\.]{0,1}((19|20)[0-9]{2}|[0-9]{2})$","g");
	var oRegExp	 	= new RegExp("[\\-/\\.]+","g");

	var aMatch = oRegExpD.exec(oField.value);

	if (!aMatch) return NULL;
	else
	{
		aMatch[1] = (aMatch[1].length==1?"0"+aMatch[1]:aMatch[1]);
		aMatch[2] = (aMatch[2].length==1?"0"+aMatch[2]:aMatch[2]);
		aMatch[3] = (aMatch[3].length==2?sYear.substring(0,2)+aMatch[3]:aMatch[3]);

		oField.value = aMatch[1] + "/" + aMatch[2] + "/" + aMatch[3];
		return aMatch;
	};
};

function fDate_Create(oField)
{
	var aDate = this.extract(oField);
	return 	new Date(parseInt(aDate[3],10), parseInt(aDate[2].replace(/^0/,""),10)-1, parseInt(aDate[1].replace(/^0/,""),10));
};

function fDate_Init(oField, sMsg)
{
	var oToday = new Date();
	oField.value= (oToday.getDate()<10?"0":"") + oToday.getDate() + "/" + (oToday.getMonth()<11?"0":"") + (oToday.getMonth()+1) + "/" + oToday.getFullYear();
	alert(sMsg);
};

function fDate_Clear(oDate)
{
	oDate.setHours(0);
	oDate.setMinutes(0);
	oDate.setSeconds(0);
	oDate.setMilliseconds(0);
};

function fDate_Upgrade()
{
	return true;
};

Date.check		= fDate_check;
Date.isValid	= fDate_IsValid;
Date.extract 	= fDate_Extract;
Date.create 	= fDate_Create;
Date.init 		= fDate_Init;
Date.clear 		= fDate_Clear;
Date.upgrade	= fDate_Upgrade;
