/* Functions */

function sdfetch_object(idname)
{
		if(navigator.userAgent.indexOf("Firefox") != -1){		//only do this if firefox
			return document.all[idname];
		}

		if (document.getElementById)
        {
                return document.getElementById(idname);
        }
        else if (document.all)
        {
                return document.all[idname];
        }
        else if (document.layers)
        {
                return document.layers[idname];
        }
        else
        {
                return null;
        }
}

function toggleDiv(id) 
{ 
	var objStyle = sdfetch_object(id);
	
	if (objStyle.style.display=="block")
	{
		objStyle.style.display = "none";
	} else {
		objStyle.style.display = "block";
	}
} 


function makeRequestSend( my_httpRequest, url, parameters, alertFunction ) {
	if(	my_httpRequest != null ){
		delete( my_httpRequest );
	}

	if (window.XMLHttpRequest) { 			// Mozilla, Safari, ...
		my_httpRequest = new XMLHttpRequest();

		if (my_httpRequest.overrideMimeType) {
			my_httpRequest.overrideMimeType('text/xml');
		}

	}  else if (window.ActiveXObject) { 		// IE
		try {
			my_httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				my_httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}

	if (!my_httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	var date = new Date();
	if( parameters == null ){
		url_with_time = url + "?time=" + date.getTime();
	} else { 
		url_with_time = url + parameters + "&time=" + date.getTime();
	}

	my_httpRequest.onreadystatechange = function() { alertFunction(my_httpRequest); };

//THIS IS THE GET METHOD
	my_httpRequest.open('GET', url_with_time, true);
	my_httpRequest.send(null);
	
// THIS IS THE POST METHOD	
//	my_httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//	my_httpRequest.setRequestHeader("Content-length", parameters.length);
//	my_httpRequest.setRequestHeader("Connection", "close");
//	my_httpRequest.open('OST', url_with_time, true);
//	my_httpRequest.send(parameters);


}


function setCookie(c_name,value,expiredays){
	var exdate = new Date();
	exdate.setDate( exdate.getDate()+expiredays );
	document.cookie = c_name + "="  +escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString());
}


function getCookie(c_name){
	if (document.cookie.length > 0){
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1){ 
			c_start = c_start + c_name.length + 1 ;
			c_end = document.cookie.indexOf(";",c_start);
			if (c_end == -1)
				c_end = document.cookie.length;
			return unescape(document.cookie.substring( c_start,c_end ));
		} 
	}
	return "";
}


function fixDate (date) {
    var base = new Date(0);
    var skew = base.getTime();
    if (skew > 0)
        date.setTime(date.getTime() - skew);
}


function deleteCookie (name) {
    if (getCookie(name))
        setCookie(name, '', 0 );
}


function isTime(txtfld)
{
 var RE10 = /([1-9]|1[0-2]):[0-5]\d$/;
 var RE11 = /([1-9]|1[0-2]):[0-5]\d\spm/;
 var RE12 = /([1-9]|1[0-2]):[0-5]\d\sam/;
 var RE13 = /([1-9]|1[0-2]):[0-5]\dpm/;
 var RE14 = /([1-9]|1[0-2]):[0-5]\dam/;
 var RE15 = /([1-9]|1[0-2]):[0-5]\d\sPM/;
 var RE16 = /([1-9]|1[0-2]):[0-5]\d\sAM/;
 var RE17 = /([1-9]|1[0-2]):[0-5]\dPM/;
 var RE18 = /([1-9]|1[0-2]):[0-5]\dAM/;
 var str=txtfld;

 for (var i = 10; i <= 18; i++) {
  var index=str.search(eval("RE" + i));
  if (index != -1){ // string found
   return true;
  }
   }
 
 alert("Time is not in proper format.  Proper format is 'hh:mm am/pm').");
 
 return(false);
}


var reAlphanumeric = /^[a-zA-Z0-9]+$/
function isAlphanumeric (s)
{
	var i;

    if (isEmpty(s)) 
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    else {
       return reAlphanumeric.test(s)
    }
}


function isChecked(object) {
	if (object.checked) {
		return true;
	}
	else {
		return false;
	}
}


// checks to see if the string is a digit (accepts decimals)
function isNumber( str ){
	foundDot = false;
	for( var i=0; i < str.length; i++ ){
		var ch = str.substring(i, i + 1);
		if( ch < "0" || "9" < ch ){
			if( ch == "." ){
				if( foundDot ){
					return false;
				} else {
					foundDot = true;
				}
			} else {
				return false;
			}
		}
	}
	return true;
}


function isNumber2(txtfld, maxdigits, msg)
{
	var str=txtfld.value;
	for (var i = 0; i < str.length; i++) {
		var ch = str.substring(i, i + 1);
		if (ch < "0" || "9" < ch){
//			alert("\nThe " + msg + " field only accepts digits.\n\r Please re-enter " + msg + ".");
			txtfld.select();
			txtfld.focus();
			return(false);
      }
   }
   if(str.length>maxdigits){
//		alert("\nThe " + msg + " field shall have " + maxdigits + " digits only.\n\n Please re-enter " + msg + ".");
		txtfld.select();
		txtfld.focus();
		return(false);
   }
	return(true);
}


function detectBrowser() {
	var browser = navigator.appName;
	var version = parseInt(navigator.appVersion);
	return navigator.appName;
}


function isEmpty(txtFld,msg) {
	var str = txtFld.value;
	if (str == "" || str == "0" || str == " " || str == null) {
		if (msg != "") {	
			alert("\nPlease fill in " + msg + ".\n\nIt is required.")
			txtFld.focus();
		}
		return(true);
	}
	return(false);	
}	


function isEmpty2(txtFld,msg) {
	var str = txtFld.value;
	if (str == "" || str == " " || str == null) {
		if (msg != "") {	
			alert("\nPlease fill in " + msg + ".\n\nIt is required.")
			txtFld.focus();
		}
		return(true);
	}
	return(false);	
}	


function inRange(txtFld,f,t,msg) {
	var str = txtFld.value;
	if (isEmpty(txtFld, "")) return true;

	if ((str < f) || (str > t)) {
		if (msg != "") {	
			alert("\n" + msg + " is Invalid.\n\nPlease correct.")
			txtFld.focus();
			txtFld.select();
		}
		return(false);
	}
	return(true);	
}	
 
 
function isEmail(txtFld,msg) {
   var str   = txtFld.value;
	if (txtFld.value == "") {
		return(true);
	}

   if (txtFld.value.indexOf ('@',0) == -1 || 
       txtFld.value.indexOf ('.',0) == -1)
      {
      alert("\nThe " + msg + " address entered is not in a proper format. Please re-enter or leave blank." )
      txtFld.select();
      txtFld.focus();
      return(false);
      }
   else
      {
		for (var i = 0; i < str.length; i++) 
		{
			var ch = str.substring(i, i + 1);
			if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch) && (ch < "0" || "9" < ch)) && ch != '@' && ch !='.' && ch !='-' && ch!='_') 
				{
				alert("\nPlease use only letters, numbers and @.-_ for " + msg + ".");
				txtFld.select();
				txtFld.focus();
				return(false);
				}
		}	    
		if ( txtFld.value.length < 7 || 
			 txtFld.value.indexOf ('@',0) >= (txtFld.value.indexOf ('.',0) - 1) )
		   {
		   alert("\nThe " + msg + " address entered is not in a proper format. Please re-enter or leave blank." )
		   txtFld.select();
		   txtFld.focus();
		   return(false);
		   }
		return(true);
      }
}


function isDecimal(txtFld,msg)  {
   var str = clean(txtFld.value);
   if (str == "") {
         alert("\nThe " + msg + " field is blank.\n\nPlease enter a decimal number.");
         txtFld.focus();
         return false;
   }
   for (var i = 0; i < str.length; i++) 
      {
      var ch = str.substring(i, i + 1);
      if ((ch < "0" || "9" < ch) && ch != '.') 
         {
         alert("\nThe " + msg + " field accepts only numbers and a decimal point. \n\nPlease re-enter a decimal number.");
         txtFld.select();
         txtFld.focus();
         return false;
         }
      }
   return true;
}


function isPercent(txtFld,msg)  {
   var str = clean(txtFld.value);
   if (str == "") {
         alert("\nThe " + msg + " field is blank.\n\nPlease enter a percentage.");
         txtFld.focus();
         return false;
   }
   for (var i = 0; i < str.length; i++) 
      {
      var ch = str.substring(i, i + 1);
      if ((ch < "0" || "9" < ch) && ch != '.') 
         {
         alert("\nThe " + msg + " field only accepts percentage figures. \n\nPlease re-enter a percentage.");
         txtFld.select();
         txtFld.focus();
         return false;
         }
      }
   return true;
}   


function isPhone(txtFld,msg) {
	var str=txtFld.value;
	var newstr="";
	var i;
	var ch;
 
	if (str == "") return true;
	
    for (var i = 0; i < str.length; i++) {
      ch = str.substring(i, i + 1);
      if ((ch < "0" || "9" < ch) && ch != '-' && ch != '(' && ch != ')' && ch != ' ') {
         alert("\nThe " + msg + " field accepts only numbers and the characters () or -. \n\nPlease re-enter a valid phone number.");
         txtFld.select();
         txtFld.focus();
         return false;
         }
      }

	for(i=0;i<str.length;i++){
		ch=str.substring(i,i+1);
		if(! (ch < "0" || ch > "9")) newstr=newstr + ch;
		}
	//if(newstr.length!=10){
	if(newstr.length<10){
         alert("\nThe " + msg + " field is invalid.\n\nPlease enter the number again.");
         txtFld.focus();
         return false;
		}
	//str = "("+newstr.substring(0,3)+") "+newstr.substring(3,6)+"-"+newstr.substring(6,10)
	txtFld.value = str;
	return true;
}



function isDate(txtFld, msg) {
	var str=txtFld.value
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2,4})$/;
	var matchArray = str.match(datePat); // is the format ok?
	if (matchArray == null) {
		alert("The Date value in " + msg + " is not in a valid format.")
		txtFld.select();
		txtFld.focus();
		return false;
	}
	var month = matchArray[1]; 
	var day = matchArray[3];
	var year = matchArray[5];
	if (month < 1 || month > 12) { 
		alert("The Month in " + msg + " must be between 1 and 12.");
		txtFld.select();
		txtFld.focus();
		return false;
	}
	if (day < 1 || day > 31) {
		alert("The Day in " + msg + " must be between 1 and 31.");
		txtFld.select();
		txtFld.focus();
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		txtFld.select();
		txtFld.focus();
		return false
	}
	if (month == 2) { 
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			alert("February " + year + " doesn't have " + day + " days!");
			txtFld.select();
			txtFld.focus();
			return false;
		}
	}
	return true;
}

function areDatesInOrder(fdate,sdate,fmsg,smsg){
	var fd = new Date(fdate.value);
	var sd = new Date(sdate.value);
	var d,m,y;
	var strf;
	var strs;
	d = fd.getDate();
	m = fd.getMonth();
	y = fd.getFullYear();
	strf = "" + y;
	if(m<10)strf=strf + "0" + m; else strf = strf + m;
	if(d<10)strf=strf + "0" + d; else strf = strf + d;

	d = sd.getDate();
	m = sd.getMonth();
	y = sd.getFullYear();
	strs = "" + y;
	if(m<10)strs=strs + "0" + m; else strs = strs + m;
	if(d<10)strs=strs + "0" + d; else strs = strs + d;
	if(strf > strs){
		alert(fmsg + " is later than " + smsg);
		fdate.select();
		fdate.focus();
		return(false);
	}
	return(true);
}

function isCurrency(txtfld,msg) {
	var strfld = clean(txtfld.value);
	var strlcl = "";
	var ch;
	var bdec = false;
	for (var i = 0; i < strfld.length; i++){
		ch = strfld.substring(i,i+1);
		if(ch>="0" && ch<="9"){ strlcl = strlcl + ch;}
		else if((ch=="." || ch==",") && bdec==false){
				strlcl=strlcl + ch;
				bdec==true;
			}
		else{
			alert(msg + " has invalid characters.  Please re-enter in the correct format.");
			txtfld.select();
			txtfld.focus();
			return(false);
		}
	}
	if(strlcl.indexOf(".")>=0 && strlcl.indexOf(".")<(strlcl.length-1)){
		var strdec = strlcl.substring(strlcl.indexOf(".")+1,strlcl.length);
		if(strdec.length>2){
			alert(msg + " can be up to two decimals only.");
			txtfld.select();
			txtfld.focus();
			return(false);
		}
	}
	return(true);	
}

function replace(s, F, R) {
	var find = 0;
	var start = 0
	while (find != -1) {
		find = s.indexOf(F, start);
		if (find != -1) {
			s = s.substring(0,find) + R + s.substring(find + F.length);
			start = find + R.length;
		}
	}
	return s;
}

function trim(s) {
	return s.replace(/(^\s*)|(\s*$)/g, "");
}

function clean(s) {
	if (!s) return s;
	s = replace(s, '$', '');
	s = replace(s, ',', '');
	s = replace(s, '%', '');	
	return s;
}

function checkempty(elem) {
	if ((elem.value == null) || (elem.value.length<2)) {
		alert('Please enter a value for this field.');
		elem.focus();
		return false;
	}
	return true;
}

function checkamt(elem, dec) {
	if ((elem.value == null) || (elem.value.length==0)) elem.value = 0
	value = parseFloat(clean(elem.value));
	if (isNaN(value)) {
		alert('You have entered an incorrect character in this field. \nPlease check your information and try again.');
		elem.focus();
		return false;
	}
	elem.value = FmtMoney(value,dec)
	return true
}

function checkrate(elem) {
	if ((elem.value == null) || (elem.value.length==0)) elem.value = "0%";
	value = parseFloat(clean(elem.value));
	if (isNaN(value)) {
		alert('You have entered an incorrect character in this field. \nPlease check your information and try again.');
		elem.focus();
		return false;
	}
	if ((value<1) || (value>99)) {
		alert('You have exceeded the range for some information on this tab. \nPlease check your information and try again.');
		elem.focus();
		return false;
	}
	elem.value = FmtRate(value)
	return true
}

function FmtRate(A) {
	N=Math.abs(Math.round(A*1000));
	S=((N<10)?"00":((N<100)?"0":""))+N;
	S=S.substring(0,(S.length-3))+"."+S.substring((S.length-3),S.length)+"%";
	return S;
}

function FmtMoney(A,D) {
	N=Math.abs(Math.round(A*100));
	S=((N<10)?"00":((N<100)?"0":""))+N;
	S=((A<0)?"-":"")+"$"+WGgroup(S.substring(0,(S.length-2))) + 
	      ((D>0)?"."+S.substring((S.length-2),S.length):"");
	return S;
}


function currentTime() {
	var d = new Date();
	h = d.getHours();
	m = d.getMinutes();
	s = d.getSeconds();
	a = "am";
	if (h == 12) {
		a = "pm";
	}
	else if (h == 0) {
		h = 12;
		a = "am";
	}
	else if (h > 12) {
		a = "pm";
		h = h - 12;
	}
	t = h + ":" + m + ":" + s + " " + a;
	return t;
}



// TWO FUNCTIONS FOR SEARCHING
function checkSearchKey(event,searchType){
	if (event && event.which == 13){
		if( searchType == 'Borrower' ){
			goSearch();
		}else if( searchType == 'User' ){
			goSearch2();
		}
	}
}

function goSearch(){
	var obj = sdfetch_object('txt_searchCriteria');
	if( trim(obj.value).length > 0 ){
		var addy = "http://www.birmcodb.com/search.php?txt_searchCriteria=" + trim(obj.value);
		window.location.href=addy;
	}
}

function goSearch2(){
	var obj = sdfetch_object('txt_searchCriteria');
	if( trim(obj.value).length > 0 ){
		var addy = "http://www.birmcodb.com/search2.php?txt_searchCriteria=" + trim(obj.value);
		window.location.href=addy;
	}
}