﻿
var arrConstraint        = new Array();
var arrColumn            = new Array();

function validate()
{
	for(var i=0;i<arrColumn.length;i++)
	{
		if(!arrColumn[i].validate())
		{
			return false;
		}
	}

	for(var i=0;i<arrConstraint.length;i++)
	{
		if(!arrConstraint[i].check())
		{
			return false;
		}
	}
	return true;
}

function Constraint(sName,sColumn,sType,sPattern,oElement)
{
	this.name    = sName;
	this.column  = sColumn;
	this.type    = sType;
	this.pattern = sPattern;
	this.element = oElement;
	
	this.check = function Constraint_check()
	{
		if(!this.element)
		{
			return true;
		}

				if(!this.element.value)
				{
					this.element.style.backgroundColor='#FF7777';
					this.element.focus();
					return false;
				}

		switch (this.type)
		{
			case 'notnull':
				if(this.element.value.length==0)
				{
					this.element.style.backgroundColor='#FF7777';
					this.element.focus();
					return false;
				}
			break;

			case 'contains':
				var objRegExp = new RegExp(this.pattern,'gi');
				var arrMatch  = objRegExp.exec(this.element.value);
				if(!arrMatch)
				{
					this.element.style.backgroundColor='#FF7777';
					this.element.focus();
					return false;
				}
			break;
		}
		return true;
	}
}


function Column(sName,sLabel,sDatatype,oElement)
{
	this.name     = sName;
	this.label    = sLabel;
	this.datatype = sDatatype;
	this.element  = oElement;

	this.validate = function Column_validate()
	{
		if(!this.element || !this.element.style)
		{
			return true;
		}

		switch (this.datatype.substring(0,4))
		{
			case 'numb':
				if(!this.element.value)
				{
					this.element.style.backgroundColor='#FF7777';
					this.element.focus();
					return false;
				}
				if(isNaN(this.element.value))
				{
					this.element.style.backgroundColor='#FF7777';
					this.element.focus();
					return false;
				}
				break;
		}
		return true;
	}
}

function uncheckAll(oForm)
{
	if(oForm)
	{
		if(oForm.elements)
		{
			if(oForm.elements.length)
			{
				for(var i=0;i<oForm.elements.length;i++)
				{
					if(oForm.elements[i].type.toLowerCase()=='checkbox')
					{
						oForm.elements[i].checked=false;
					}
				}
			}
		}
	}
}

function checkAll(oForm)
{
	if(oForm)
	{
		if(oForm.elements)
		{
			if(oForm.elements.length)
			{
				for(var i=0;i<oForm.elements.length;i++)
				{
					if(oForm.elements[i].type.toLowerCase()=='checkbox')
					{
						oForm.elements[i].checked=true;
					}
				}
			}
		}
	}
}


function dateHelper(sDateString)
{
	this.year       = 0
	this.month      = 1
	this.date       = 1
	this.hours      = 1
	this.minutes    = 0
	this.seconds    = 0
	this.ampm       = 'AM'

	this.setYear    = function set_Year(vData)
	{
		if(!vData){return false;}
		if(isNaN(vData)){return false}
		this.year = vData;return true;
	}

	this.setMonth    = function set_Month(vData)
	{
		if(!vData){return false;}
		if(isNaN(vData)){return false;}
		if(vData>0&&vData<13){this.month = vData;return true;}
	}

	this.setDate    = function set_Date(vData)
	{
		if(!vData){return false;}
		if(isNaN(vData)){return false;}
		if(vData>0&&vData<32){this.date = vData;return true;}
	}

	this.setHours    = function set_Hours(vData)
	{
		if(!vData){return false;}
		if(isNaN(vData)){return false;}
		if(vData>0&&vData<13){this.hours = vData;return true;}
	}

	this.setMinutes    = function set_Minutes(vData)
	{
		if(!vData){return false;}
		if(isNaN(vData)){return false;}
		if(vData>-1&&vData<60){this.minutes = vData;return true;}
	}

	this.setSeconds    = function set_Seconds(vData)
	{
		if(!vData){return false;}
		if(isNaN(vData)){return false;}
		if(vData>-1&&vData<60){this.seconds = vData;return true;}
	}

	this.setAmpm    = function set_Ampm(vData)
	{
		if(!vData){return false;}
		if(vData!='AM'&&vData!='PM'){return false;}
		this.ampm = vData;
	}

	this.getValue = function get_Value()
	{
		var strRet = this.month
		       + '/'
                       + this.date
                       + '/'
                       + this.year
                       + ' ' 
                       + this.hours
		       + ':'
                       + this.minutes
                       + ':'
                       + this.seconds
                       + ' '
                       + this.ampm;
		return strRet;
	}

	this.setValue = function set_Value(vData)
	{
		var regExp = /[: \/]/gi;

		vData = vData.replace(regExp,'|');
		var arrValue = vData.split('|');
		for(var i=0;i<arrValue.length;i++)
		{
			if(i==0){this.setMonth(arrValue[i]);}
			if(i==1){this.setDate(arrValue[i]);}
			if(i==2){this.setYear(arrValue[i]);}
			if(i==3){this.setHours(arrValue[i]);}
			if(i==4){this.setMinutes(arrValue[i]);}
			if(i==5){this.setSeconds(arrValue[i]);}
			if(i==6){this.setAmpm(arrValue[i]);}
		}
	}
}
