//Name of Combos...
var aComboNames = new Array();
aComboNames[0] = "cmbMinDay";
aComboNames[1] = "cmbMinMonth";
aComboNames[2] = "cmbMinYear";
aComboNames[3] = "cmbMaxDay";
aComboNames[4] = "cmbMaxMonth";
aComboNames[5] = "cmbMaxYear";

var aTagDates = new Array();
aTagDates[0] = "semana";
aTagDates[1] = "mes";
aTagDates[2] = "trimestre";
aTagDates[3] = "ano";
aTagDates[4] = "todo";
aTagDates[5] = "range";

var CLASS_OPTION_CHECKED = "opcionmarcada";
var CLASS_OPTION_UNCHECKED = "opcion";

var sRadioButtonName = "rbDate";

function rollDate(type,iValue){
	var dMonth = new Date();
	if (type=='week') dMonth.setDate(dMonth.getDate() - parseInt(iValue));
	if (type=='month') dMonth.setMonth(dMonth.getMonth() - parseInt(iValue));
	if (type=='year'){
		var tmpYear=dMonth.getYear();
		if (parseInt(tmpYear,10)<1000) tmpYear = parseInt(tmpYear,10) + 1900;
		dMonth.setYear(tmpYear - parseInt(iValue));
	}
	return dMonth;
}



function setComboValues(type,amount){
	//COMBOS DE DESDE...
	var cboDay = getObject(aComboNames[0]);
	var cboMonth = getObject(aComboNames[1]);
	var cboYear = getObject(aComboNames[2]);
	if (parseInt(amount)!=0){
		dDate = rollDate(type,amount);
	}else{
		dDate = new Date(2000, 4, 17);
	}
	selectDate(cboDay, cboMonth, cboYear, dDate);
	//COMBOS DE HASTA...
	var dDate = new Date();
	cboDay = getObject(aComboNames[3]);
	cboMonth = getObject(aComboNames[4]);
	cboYear = getObject(aComboNames[5]);
	selectDate(cboDay, cboMonth, cboYear, dDate);
}

function selectDate(cboDay, cboMonth, cboYear, dDate){
	if (cboDay)	cboDay.options[dDate.getDate()-1].selected = true;
	if (cboMonth) cboMonth.options[dDate.getMonth()].selected = true;
	if (cboYear){
		for (var i=0;i<cboYear.options.length;i++){
			var ano = dDate.getYear();
			if (parseInt(ano,10)<1000) ano = parseInt(ano,10) + 1900;
			if (cboYear.options[i].value == ano){
				cboYear.options[i].selected = true;
			}
		}
	}
}

function checkRadioButton(wich){
	var rbs = document.getElementsByName(sRadioButtonName);
	for (var i=0;i<rbs.length;i++){
		if (rbs[i].value==wich)	rbs[i].checked=true;
		else rbs[i].checked=false;
	}
}

function checkAndSelectDate(type,amount,div){
	//Deactivate all tags...
	changeStateTag(CLASS_OPTION_UNCHECKED);
	//...and select the correct tag...
	var obj = getObject(div);
	if (obj){
		changeClassName(obj, CLASS_OPTION_CHECKED);
		checkRadioButton(div);
	}
	setComboValues(type,amount);
}

function changeStateTag(state){
	for (var i=0;i<aTagDates.length;i++){
		var obj = getObject(aTagDates[i]);
		if (obj){
			if (state) changeClassName(obj, state);
			else changeState(obj, CLASS_OPTION_CHECKED, CLASS_OPTION_UNCHECKED);
		}
	}
}

function clearCombos(){
	for (var i=0;i<aComboNames.length;i++){
		var objCombo = getObject(aComboNames[i]);
		if (objCombo) objCombo.options[0].selected = true;
	}
}

function unselectedOption(){
	cambiarEstadoEtiquetas(CLASS_OPTION_UNCHECKED);
	radios = document.getElementsByTagName("input");
	for (var i=0;i<radios.length;i++){
		if ((radios[i]) && (radios[i].name == sRadioButtonName)){
			radios[i].checked = false;
		}
	}
}

function isDate(DateToCheck){
	if(DateToCheck==""){
		return true;
	}
	var m_strDate = FormatDate(DateToCheck);
	if(m_strDate==""){
		return false;
	}
	var m_arrDate = m_strDate.split("/");
	var m_DAY = m_arrDate[0];
	var m_MONTH = m_arrDate[1];
	var m_YEAR = m_arrDate[2];
	if(m_YEAR.length > 4){
		return false;
	}
	m_strDate = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
	var testDate=new Date(m_strDate);
	if(testDate.getMonth()+1==m_MONTH){
		return true;
	}else{
		return false;
	}
}

function FormatDate(DateToFormat,FormatAs){
	if(DateToFormat==""){
		return"";
	}
	if(!FormatAs){
		FormatAs="dd/mm/yyyy";
	}

	var strReturnDate;
	FormatAs = FormatAs.toLowerCase();
	DateToFormat = DateToFormat.toLowerCase();
	var arrDate
	var strMONTH;
	var Separator;

	while(DateToFormat.indexOf("st")>-1){
		DateToFormat = DateToFormat.replace("st","");
	}

	while(DateToFormat.indexOf("nd")>-1){
		DateToFormat = DateToFormat.replace("nd","");
	}

	while(DateToFormat.indexOf("rd")>-1){
		DateToFormat = DateToFormat.replace("rd","");
	}

	while(DateToFormat.indexOf("th")>-1){
		DateToFormat = DateToFormat.replace("th","");
	}

	if(DateToFormat.indexOf("-")>-1){
		Separator = "-";
	}

	if(DateToFormat.indexOf("/")>-1){
		Separator = "/";
	}

	arrDate = DateToFormat.split(Separator);
	DateToFormat = "";
	for(var iSD = 0;iSD < arrDate.length;iSD++){
		if(arrDate[iSD]!=""){
			DateToFormat += arrDate[iSD] + Separator;
		}
	}
	DateToFormat = DateToFormat.substring(0,DateToFormat.length-1);
	arrDate = DateToFormat.split(Separator);

	if(arrDate.length < 3){
		return "";
	}

	var DAY = arrDate[0];
	var MONTH = arrDate[1];
	var YEAR = arrDate[2];

	if(parseFloat(arrDate[1]) > 12){
		DAY = arrDate[1];
		MONTH = arrDate[0];
	}

	if(parseFloat(DAY) && DAY.toString().length==4){
		YEAR = arrDate[0];
		DAY = arrDate[2];
		MONTH = arrDate[1];
	}


	for(var iSD = 0;iSD < arrMonths.length;iSD++){
		var ShortMonth = arrMonths[iSD].substring(0,3).toLowerCase();
		var MonthPosition = DateToFormat.indexOf(ShortMonth);
		if(MonthPosition > -1){
			MONTH = iSD + 1;
			if(MonthPosition == 0){
				DAY = arrDate[1];
				YEAR = arrDate[2];
			}
		break;
		}
	}

	var strTemp = YEAR.toString();
	if(strTemp.length==2){
		if(parseFloat(YEAR)>40){
			YEAR = "19" + YEAR;
		}else{
			YEAR = "20" + YEAR;
		}
	}

	if(parseInt(MONTH)< 10 && MONTH.toString().length < 2){
		MONTH = "0" + MONTH;
	}
	if(parseInt(DAY)< 10 && DAY.toString().length < 2){
		DAY = "0" + DAY;
	}
	switch (FormatAs){
		case "dd/mm/yyyy":
			return DAY + "/" + MONTH + "/" + YEAR;
		case "mm/dd/yyyy":
			return MONTH + "/" + DAY + "/" + YEAR;
		case "dd/mmm/yyyy":
			return DAY + " " + arrMonths[MONTH -1].substring(0,3) + " " + YEAR;
		case "dd-mm-yyyy":
			return DAY + "-" + MONTH + "-" + YEAR;
		case "mm-dd-yyyy":
			return MONTH + "-" + DAY + "-" + YEAR;
		case "yyyy-mm-dd":
			return YEAR + "-" + MONTH + "-" + DAY;
		case "mmm/dd/yyyy":
			return arrMonths[MONTH -1].substring(0,3) + " " + DAY + " " + YEAR;
		case "dd/mmmm/yyyy":
			return DAY + " " + arrMonths[MONTH -1] + " " + YEAR;
		case "mmmm/dd/yyyy":
			return arrMonths[MONTH -1] + " " + DAY + " " + YEAR;
	}
	return DAY + "/" + strMONTH + "/" + YEAR;
}
