var bDOM = (document.getElementById) ? true : false;
var bNS4 = (document.layers) ? true : false;
var bIE = (document.all) ? true : false;
var bIE4 = bIE && !bDOM;
var bIE5 = (navigator.appVersion.indexOf("MSIE 5.") != -1);
var bNS6 = bDOM && !bIE;
var bMac = (navigator.appVersion.indexOf("Mac") != -1);
var bOpera = (navigator.userAgent.indexOf("Opera")!=-1);
var bKonqueror = (navigator.userAgent.indexOf("Konqueror")!=-1);
var bCanPrint = (window.print) ? 1 : 0;

function mouseOnRow(td){
	td.oldclass=td.className;
	td.className=td.className+'_hotrow';
}

function mouseOffRow(td){
	td.className=td.oldclass;
}


function containsElement(arr, ele){
	var found = false, index = 0;
	while(!found && index < arr.length){
		if(arr[index] == ele)
			found = true;
		else
			index++;
	}
	return found;
}
function getIndex(input){
	var index = -1, i = 0, found = false;
	while (i < input.form.length && index == -1){
		if (input.form[i] == input)index = i;
		else i++;
	}
	return index;
}
function autoTab(input, e){
	var keyCode = (bNS4) ? e.which : e.keyCode;
	var filter = (bNS4) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(input.value.length >= input.maxLength && !containsElement(filter,keyCode)){
		input.value = input.value.slice(0, input.maxLength);
		input.form[(getIndex(input)+1) % input.form.length].focus();
	}
return true;
}

function validateField(field,message,regexp){
	var bEmpty=false;
	var strAction='enter';
	var field_value='';
	var xField=(field.length>0 && !field.type)?field[0]:field;
	var selectedIndex=-1;

	switch(xField.type){
		case 'textarea':
		case 'hidden':
		case 'password':
		case 'file':
		case 'text':{
			field_value=field.value;
			bEmpty=(field_value.length<1);
			break;
		}
		case 'select-one':{
			if(field.selectedIndex>=0) field_value=field.options[field.selectedIndex].value;
			bEmpty=(field.selectedIndex<0 || field_value.length<1);
			strAction='select';
			break;
		}
		case 'checkbox':{
			strAction='select';
			bEmpty=!xField.checked;
			break;
		}
		case 'radio':{
			strAction='select';
			bEmpty=true;
			if(xField!=field){
				for(var intIdx=0;intIdx<field.length;intIdx++){
					if(field[intIdx].checked){
						bEmpty=false;
						selectedIndex=intIdx;
						break;
					}
				}
			}
			else
				bEmpty=xField.checked;
			break;
		}
		default:{
			bEmpty=true;
			alert('form element \''+xField.name+'\' ['+xField.type+'] is not supported by checkEmpty() function');
			break;
		}
	}

	if(regexp && !bEmpty){
		bEmpty=!regexp.test(field_value);
	}

	if(bEmpty){
		if(message) alert(message);
		else alert('Please '+strAction+' a value for field \''+xField.name+'\'');
		if(xField.type!='hidden') xField.focus();
	}

	return (xField.type=='radio')?selectedIndex:!bEmpty;
}

//Remove spaces from start and end of a string
function trim(value) {
   var temp = value;
   var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
   if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
   var obj = / +/g;
   temp = temp.replace(obj, " ");
   if (temp == " ") { temp = ""; }
   return temp;
}

function ValidateNumeric(control){
	control.value=trim(control.value);
	if(!IsNumeric(control.value)){
		alert('Please enter numeric values only');
		control.focus();}}

function removeChar(Target){
	var re=/[^0-9]/g;
	Target=Target.replace(re,'');
	return Target;}

function removeNonNum(Target){
	var re=/[^0-9|\^.|\^-]/g;
	Target=Target.replace(re,'');
	return Target;}

function removeDigit(Target){
	var re=/[0-9]/g;
	Target=Target.replace(re,'');
	return Target;}

function IsEmail(strEmail)
{
	var status = false;
	var strEmailAddress = new String(strEmail);
	var strEmailPattern = "(/^([a-z0-9_\.\-])+\@(([a-z0-9_\.\-])+\.)+([a-z0-9]{2,4})+$/i)";
	//var strEmailPattern = /^[A-Za-z0-9][\w-.]+[A-Za-z0-9]@[A-Za-z0-9]([\w-.]+[A-Za-z0-9]\.)+([A-Za-z]){2,4}$/i;

	if (strEmailAddress.search(strEmailPattern)==0)
	{
		status = true;
	}
	return status;
}

function IsCreditCard(strCC){
	strCC=removeChar(strCC);
	if(strCC.length<15) return false;
	if(strCC.length > 19) return false;

    sum = 0; mul = 1; l = strCC.length;
	for (i = 0; i < l; i++){
		digit = strCC.substring(l-i-1,l-i);
		tproduct = parseInt(digit ,10)*mul;
		if (tproduct >= 10) sum += (tproduct % 10) + 1;
		else sum += tproduct;
		if (mul == 1) mul++;
		else mul--;
	}
	if ((sum % 10) != 0) return false;

 	return true;
}


function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

