function checknumber(object_value)
    {

    if (object_value.length == 0)
        return false;
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;


	check_char = start_format.indexOf(object_value.charAt(0))

	if (check_char == 1)
	    decimal = true;
	else if (check_char < 1)
		return false;
        

	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)	
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;

		}
	        else if (trailing_blank)
			return false;
		else
			digits = true;
	}	

    return true
}


function CheckFormItems(theForm)
{
	var ok = true;

	pwd1Defined = false;
	pwd2Defined = false;
	pwd1="";
	pwd2="";

	
	for (var i = 0; i < theForm.elements.length; i++) 
	{
			var e = theForm.elements[i];
			
			//START of password check
			if(e.name == "Password")
			{
				pwd1 = e.value;
				pwd1Defined = true;
			}

			if(e.name == "Password2")
			{
				pwd2 = e.value;
				pwd2Defined = true;
			}
			
			if(pwd1 != pwd2 && pwd1Defined && pwd2Defined)
			{
				alert("Check the passwords!");
				e.focus();
				return false;
			}

			//END of password check			


			if (!(e.name.indexOf('def_')>= 0))
			
			{

				if ( !(typeof(eval('theForm.elements["dfs_' + e.name + '"]')) == "undefined") )			
					{
					defselval = eval('theForm.elements["dfs_' + e.name + '"].value');
					selvalues = defselval.split('_');
					selrequired = selvalues[0];
					selalert = selvalues[1];
					if (selrequired == 'req')
						{
						sreq = true;
						}
					else
						sreq = false;
						
					if (sreq && e.value == 'null')
						{
						alert(selalert);
						return false;
						}
					
					}

			
				if ( !(typeof(eval('theForm.elements["def_' + e.name + '"]')) == "undefined") )
					{
					defval = eval('theForm.elements["def_' + e.name + '"].value');
					
					values = defval.split('_');
					datatype = values[0];
					required = values[1];
					alertmessage = values[2];
					alertmessage2 = values[3];
				
					if (required == 'req')
						req = true;
					else
						req = false;
					
					if (datatype == 'int' || datatype == 'float')
						{
						needN = true;
						}
					else
						needN = false;
						
						
					if (req && e.value == '')
						{
						alert(alertmessage);
						e.focus();
						return(false);
						}
						
					if (!checknumber(e.value) && needN)
						{
						alert(alertmessage2);
						e.focus();
						return(false);
						}

					}
			}
	}

	return (true);

}


// opens calendar
function OpenCalendar(formfield,language,type,date,mapdir) {

	url = mapdir + '/js/calendar.cfm?language=' + language + '&type=' + type + '&formfield=' + formfield + '&date=' + escape(date);
	win = window.open(url,'calendar','height=184,width=200');
	win.focus();

}

function TestWindow(mapdir,TestID,QuestionsNumber,ResultDir)
{

url = mapdir + '/modules/test/objects/DoTest.cfm?TestID=' + TestID + '&QuestionsNumber=' + QuestionsNumber + "&OpenerPath=" + ResultDir;
wintest = window.open(url,'calendar','height=320, width=510, top=200, left=250, scrollbars=no');
wintest.focus();
		
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function stripCharsInBag(s, bag) {
	var i;
    var returnString = "";

    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
		if (i==2) {this[i] = 29;}
   } 
   return this;
}

function isDate(dtStr) {

	var daysInMonth = DaysArray(12);

	var dtCh = '/';
	var pos1 = dtStr.indexOf('/');
	var pos2 = dtStr.indexOf('/', pos1+1);

	if (pos1==-1 || pos2==-1) {
		dtCh = '-';
		pos1 = dtStr.indexOf('-');
		pos2 = dtStr.indexOf('-', pos1 + 1);
	}

	var strYear = dtStr.substring(0, pos1);
	var strMonth = dtStr.substring(pos1 + 1, pos2);
	var strDay = dtStr.substring(pos2 + 1);
	
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1){
		return false;
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false;
	}
	if (strYear.length != 4 || year==0 || year<1900 || year>2100){
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false;
	}

	return true;
}


