﻿// Standard - Static Library Functions
function CBL_isValidDate(Y, M, D, h, m, s)
{
	Y=parseFloat(Y);M=parseFloat(M);D=parseFloat(D);h=parseFloat(h);m=parseFloat(m);s=parseFloat(s);
	if(isNaN(Y)||isNaN(M)||isNaN(D)||isNaN(h)||isNaN(m)||isNaN(s))return false;
	// maximum number of days in months
	var mDays = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31);
	if(M<1||D<1||h<0||m<0||s<0||M>12||D>31||h>23||m>59||s>59)return false;
	var isLongYear=(Y%4==0)&&((Y%100!=0)||(Y%400==0));
	if(D>mDays[M])return false;
	if(M==2&&!isLongYear&&D>28) return false;
	return true;
}
function CBL_DayMonthYearToDate(Y, M, D)
{
	Y=parseFloat(Y);M=parseFloat(M);D=parseFloat(D);
	if(!CBL_isValidDate(Y, M, D, 0, 0, 0)) return null;
	tempDate = new Date();
	tempDate.setFullYear(Y, M-1, D);
	tempDate.setHours(0, 0, 0, 0);
	return tempDate;
}
function CBL_FormatAmount(floatValue)
{
	var floatString = new String(CBL_FormatAs2Digit(floatValue));
	var indexOfPoint = floatString.indexOf(".");
	var normalPart = new String(floatString.substring(0, indexOfPoint));
	var floatPart = new String(floatString.substr(indexOfPoint+1, 2));
	if(normalPart.length < 4)
	{
		return floatString;
	}
	else
	{
		var retVal = new String("");
		for(var i = normalPart.length-3; i >= 0; i-=3)
		{
			retVal = "," + normalPart.substr(i, 3) + retVal;
		}
		retVal = normalPart.substr(0, i+3) + retVal;
		if(retVal.substr(0,1) == ",") retVal = retVal.substr(1, retVal.length - 1);
		return retVal + "." + floatPart;
	}
	
}
function CBL_FormatAs2Digit(floatValue)
{
	floatValue *= 100; floatValue = Math.round(floatValue);	floatValue /= 100;
	if(parseInt(floatValue)==floatValue) return floatValue + ".00"; else return floatValue;
}
function CBL_FormatAs4Digit(floatValue)
{
	floatValue *= 10000; floatValue = Math.round(floatValue);	floatValue /= 10000;
	if(parseInt(floatValue)==floatValue) return floatValue + ".0000"; else return floatValue;
}
function G(id)
{
	return document.getElementById(id);
}

// The CBL_DateHandler Class
function CBL_DateHandler(dateObject)
{
	this.dayValue = 0;
	this.monthValue = 0;
	this.yearValue = 0;
	this.DateObject = dateObject;
	this.Days = CBL_DateHandler_Days;
	this.IsValid = CBL_DateHandler_IsValid;
	this.GetUserInput = CBL_DateHandler_GetUserInput;
}
function CBL_DateHandler_Days()
{
	this.GetUserInput();
	var calcDate = CBL_DayMonthYearToDate(this.yearValue, this.monthValue, this.dayValue);
	if(calcDate == null) return -1;
	return Math.round(calcDate.valueOf() / 86400000);
}
function CBL_DateHandler_IsValid()
{
	this.GetUserInput();
	return CBL_isValidDate(this.yearValue, this.monthValue, this.dayValue, 0, 0, 0);
}
function CBL_DateHandler_GetUserInput()
{
	this.dayValue=0;this.monthValue=0;this.yearValue=0;
	var dateString = new String(this.DateObject.value);
	if(dateString.match("\\d\\d.\\d\\d.\\d\\d\\d\\d"))
	{
		this.dayValue = dateString.substr(0, 2);
		this.monthValue = dateString.substr(3, 2);
		this.yearValue = dateString.substr(6, 4);
	}
}
function CBL_ClearOptions(selectObject)
{	
	selectObject.options.length = 0;
}
function CBL_AddOption(selectObject, value, text)
{
	var opt = document.createElement("OPTION");
	opt.value = value;
	opt.innerHTML = text;
	selectObject.appendChild(opt);
	opt = null;
}