function checkJS()
{
	gebi("jsval").value = "1";
}


/* Form Validation */

function checkFields(required,types)
{
		var passedok = true;
		for(var i=0;i<types.length;i++)
		{
			if(types[i] == "req")
			{
				if(!chkReq(required[i]))
				{
					passedok = false;

					if(gebi(required[i]).type == "checkbox")
					{
						var oParent = nn6 ? gebi(required[i]).parentNode : gebi(required[i]).parentElement;
						addCSS(oParent,"invalid_cbox");
					}else{
						addCSS(gebi(required[i]),"invalid_field");
					}

				}

			}else if(types[i] == "date") {

				if(!chkDate(required[i]))
				{
					passedok = false;

					addCSS(gebi("_"+required[i]+"__day"),"invalid_field");
					addCSS(gebi("_"+required[i]+"__month"),"invalid_field");
					addCSS(gebi("_"+required[i]+"__year"),"invalid_field");
				}

			}else if(types[i] == "email" || types[i] == "remail") {

				if(gebi(required[i]).value.length > 0 || types[i] == "remail")
				{
					if(!chkEmail(required[i]))
					{
						passedok = false;
						addCSS(gebi(required[i]),"invalid_field");
					}
				}

			}else if(types[i] == "num" || types[i] == "rnum") {

				if(gebi(required[i]).value.length > 0 || types[i] == "rnum")
				{
					if(!chkNum(required[i]))
					{
						passedok = false;
						addCSS(gebi(required[i]),"invalid_field");
					}
				}

			}else if(types[i] == "perc" || types[i] == "rperc") {

				if(gebi(required[i]).value.length > 0 || types[i] == "rperc")
				{
					if(!chkPerc(required[i]))
					{
						passedok = false;
						addCSS(gebi(required[i]),"invalid_field");
					}
				}

			}

		}

		return passedok;
}

/* Form Validation */

function addValidationEvents()
{

	var inputs = document.getElementsByTagName("input");

	for (var i=0;i<inputs.length;i++)
	{
		if (inputs[i].className.indexOf("numericval") > -1)
		{
			var ob = inputs[i];
			if (ob.attachEvent)
			{
				ob.attachEvent("onkeydown", function (event)
				{
					return blockNonNumbers(event.srcElement, event, false, false);
				});
				ob.attachEvent("onkeyup", function (event)
				{
					return extractNumber(event.srcElement,0,false);
				});
				ob.attachEvent("onblur", function (event)
				{
					return extractNumber(event.srcElement,0,false);
				});

			}else if (ob.addEventListener){

				ob.addEventListener("keypress", function (event)
				{
					if(!blockNonNumbers(this, event, false, false)) event.preventDefault();
				},false);
				ob.addEventListener("keyup", function (event)
				{
					extractNumber(this,0,false);
				},false);
				ob.addEventListener("blur", function (event)
				{
					extractNumber(this,0,false);
				},false);

			}
		}

		if (inputs[i].className.indexOf("decimalval") > -1)
		{
			var ob = inputs[i];
			if (ob.attachEvent)
			{
				ob.attachEvent("onkeydown", function (event)
				{
					return blockNonNumbers(event.srcElement, event, true, false);
				});
				ob.attachEvent("onkeyup", function (event)
				{
					return extractNumber(event.srcElement,2,false);
				});
				ob.attachEvent("onblur", function (event)
				{
					return extractNumber(event.srcElement,2,false);
				});

			}else if (ob.addEventListener){

				ob.addEventListener("keypress", function (event)
				{
					if(!blockNonNumbers(this, event, true, false)) event.preventDefault();
				},false);
				ob.addEventListener("keyup", function (event)
				{
					if(!extractNumber(this,2,false)) event.preventDefault();
				},false);
				ob.addEventListener("blur", function (event)
				{
					if(!extractNumber(this,2,false)) event.preventDefault();
				},false);

			}
		}

	}
}

function chkReq(f)
{
	// check if cbox
	if(gebi(f).type == "checkbox")
	{
		if(gebi(f).checked) return true;
		return false;
	}else{
		if(gebi(f).value.length > 0) return true;
		return false;
	}
}

/* Form Validation */

function chkEmail(f)
{
	f = gebi(f).value;
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	if (filter.test(f)) return true;
	return false;
}

/* Form Validation */

function chkDate(f)
{
	var	vdate = true;
	if(gebi("_"+f+"__day").value.length == 0) vdate = false;
	if(gebi("_"+f+"__month").value.length == 0) vdate = false;
	if(gebi("_"+f+"__year").value.length == 0) vdate = false;
	if(vdate) vdate = checkDate(gebi("_"+f+"__day").value,gebi("_"+f+"__month").value,gebi("_"+f+"__year").value);
	return vdate;
}

/* Form Validation */

function stripZero(str)
{
	if(str.substring(0,1) == "0") str = str.substring(1);
	str = str - 0;
	return str;
}

/* Form Validation */

function checkDate(d,m,y)
{
	d = stripZero(d);
	m = stripZero(m);
	// months 0 - 11 in js
	m--;
	y = stripZero(y);
	var myDate = new Date();
	myDate.setDate(d);
	myDate.setMonth(m);
	myDate.setYear(y);
 	return ((d==myDate.getDate()) && (m==myDate.getMonth()) && (y==myDate.getFullYear()));
}

/* Form Validation */

function checkOb(fieldset)
{
	var inputs = fieldset.getElementsByTagName("input");
	var selects = fieldset.getElementsByTagName("select");

	var checkit = false;

	for(var i=0;i<inputs.length;i++)
	{
		if(inputs[i].id != '')
		{
			if(inputs[i].type != "hidden" && inputs[i].id.substring(0,1) != "_")
			{
				if(inputs[i].value.length > 0) checkit = true;
			}
		}
	}

	for(var i=0;i<selects.length;i++)
	{
		if(selects[i].id != '')
		{
				if(selects[i].value.length > 0) checkit = true;
		}
	}

	return checkit;

}

//function inArray(val,arr)
//{
//	for(var i=0;i<arr.length;i++)
//	{
//		alert(arr[i] + " : " + val)
//		if(arr[i] == val) return true;
//	}
//	return false;
//}

/* General */


/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

/* Form Validation */

// public domain number functions - http://www.mredkj.com/tutorials/validate2.html

function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;

	//alert(obj.tagName);

	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}

	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}

	obj.value = temp;

}

/* Form Validation */

function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;

	if(window.event) {
		// IE
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
		//IE CR catch
		if(key == 190) key = 46;
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}

	if (isNaN(key)) return true;

	keychar = String.fromCharCode(key);

	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;

	return isFirstN || isFirstD || reg.test(keychar);
}