var regExp = /<\/?[^>]+>/gi;
function ReplaceTags(xStr){
  xStr = xStr.replace(regExp,"");
  return xStr;
}
var szResultType = "";
var nX = 0;
var nY = 0;
function GetXY(e) {
	if (window.event) { e = window.event; };
	if (document.all){
		nX = event.clientX+5;
		nY = event.clientY+10;
	}
	else {
		nX = e.pageX+5;
		nY = e.pageY+10;
	}
	//}
/*
	if (IE)	{
		 var tmpX = event.clientX;
		 var tmpY = event.clientY;
		}	
	else 	{
			 var tmpX = m.pageX;
		 var tmpY = m.pageY;
		}  
	if (!document.body.scrollTop)
		{
		 var iL = document.documentElement.scrollLeft;	
		 var iV = document.documentElement.scrollTop;
		}
	else 	{
		 var iL = document.body.scrollLeft;	
		 var iV = document.body.scrollTop;	
		}
*/
}

var myAgent = navigator.userAgent.toLowerCase();
var myVersion = parseInt(navigator.appVersion);
var is_ie = ((myAgent.indexOf("msie") != -1) 
         && (myAgent.indexOf("opera") == -1));
var is_nav = ((myAgent.indexOf('mozilla')!=-1) 
           && (myAgent.indexOf('spoofer')==-1) 
           && (myAgent.indexOf('compatible') == -1) 
           && (myAgent.indexOf('opera')==-1)
           && (myAgent.indexOf('webtv') ==-1) 
           && (myAgent.indexOf('hotjava')==-1));
var is_win = ((myAgent.indexOf("win")!=-1) 
           || (myAgent.indexOf("16bit")!=-1));
var is_mac = (myAgent.indexOf("mac")!=-1);
var pageWidth = 0, pageHeight = 0;

     if( typeof( window.innerWidth ) == 'number' ) {
       pageWidth = window.innerWidth;
       pageHeight = window.innerHeight;
     }
     else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
       //IE 6+ in 'standards compliant mode'
       pageWidth = document.documentElement.clientWidth;
       pageHeight = document.documentElement.clientHeight;
     }
     else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
       //IE 4 compatible
       pageWidth = document.body.clientWidth;
       pageHeight = document.body.clientHeight;
     }


function ShowTip(e, sz){
	//if (document.readyState=="complete") {
		if(!e && window.event) { e = window.event; };

		if(!e) {
			var nPagePos = event.clientX+5;
		}else {
			var nPagePos = e.pageX+5;
	
		}
		if(sz.length > 200) {nPagePos=nPagePos-250; }
		if(nPagePos < 0) {nPagePos=5; }
		if(pageWidth-nPagePos<= sz.length+100) { nPagePos-=(sz.length+100); };
		if (document.all){
			document.all.DebtorInfo.innerHTML=sz;
			document.all.DebtorInfo.style.pixelLeft=nPagePos;
			document.all.DebtorInfo.style.pixelTop=event.clientY+10;
			document.all.DebtorInfo.style.visibility="visible";
		}
		else {
			document.getElementById("DebtorInfo").innerHTML = sz;
			document.getElementById("DebtorInfo").style.left=nPagePos+'px';
			document.getElementById("DebtorInfo").style.top=e.pageY+10+'px';
			document.getElementById("DebtorInfo").style.visibility ="visible";
		}
	//}
}

function HideTip(){
//	if (document.all) {document.all.DebtorInfo.style.visibility="hidden";}
	document.getElementById("DebtorInfo").style.visibility ="hidden";
}

function ShowPopup(sz, szDivID, bAutoHide, szAlign){
	if(!szDivID) { szDivID = "PopupBox"; };
	if(bAutoHide === undefined) { bAutoHide = true; };
	if(szAlign === undefined) { szAlign = "left"; };
	if(!szAlign) { szAlign = "left"; };
	if(szDivID.length<=0 || !document.getElementById(szDivID)) { szDivID = "PopupBox"; };
	if(szDivID == "DebtorInfo") { bAutoHide = false; };
	//if (document.readyState=="complete") {
	
	nY+=10;
	if ((nX+500) > document.body.clientWidth) { nX = document.body.clientWidth-500-50; };
	if(nX < 0) {nX=5; }
	
	if (sz.length>0) {
		if(!bAutoHide) { 
			sz = "<DIV width='100%' height=12 align=right style='background-color:#FFFF00;width:100%;align=right;'><a href='JavaScript:HidePopup(\""+szDivID+"\");'><img src='Images/close.gif' border=0 alt='Close' title='Close'></a></DIV><BR><BR>" + sz;
	
			document.getElementById(szDivID).onmouseout = "";
		} else {
			document.getElementById(szDivID).onmouseout = function() {
				this.innerHTML='';
				this.style.visibility='hidden';
				this.visibility='hidden';
			};
		}
		//sz+="<BR>nX="+nX+"<BR>nY="+nY+"<BR>document.body.clientWidth="+document.body.clientWidth;

		//if(sz.length > 200) {nX=nX-250; }
		//if (document.all){document.all(szDivID).innerHTML=sz;  OR document.all.PopupBox.innerHTML=sz;	};

		document.getElementById(szDivID).align = szAlign;
		document.getElementById(szDivID).innerHTML = sz;
	}
	if (document.getElementById(szDivID).innerHTML.length>0) {
		if (document.all){
			//document.all(szDivID).style.pixelLeft=nX+"px";  OR document.all.PopupBox.innerHTML=sz;
			//document.all(szDivID).style.pixelTop=nY+"px";
			//document.all(szDivID).style.visibility="visible";
			//document.getElementById(szDivID).innerHTML+=" -- nX:"+nX+" nY:"+nY;
			document.getElementById(szDivID).style.pixelLeft=nX+"px";
			document.getElementById(szDivID).style.pixelTop=nY+"px";
			document.getElementById(szDivID).style.left=nX+"px";
			document.getElementById(szDivID).style.top=nY+"px";
			document.getElementById(szDivID).style.visibility="visible";
		}
		else {
			document.getElementById(szDivID).style.left=nX+"px";
			document.getElementById(szDivID).style.top=nY+"px";
			document.getElementById(szDivID).style.visibility ="visible";
		}
	}
}

function HidePopup(szDivID, bEmptyDIV){
	if(bEmptyDIV==undefined) { bEmptyDIV=1; };
	if(bEmptyDIV != 0) { bEmptyDIV = 1; };
	
//	if (document.all) {document.all.PopupBox.style.visibility="hidden";}
	if(!szDivID) { szDivID = "PopupBox"; };
	if(szDivID.length<=0 || !document.getElementById(szDivID)) { szDivID = "PopupBox"; };
	if(bEmptyDIV==1) {document.getElementById(szDivID).innerHTML = ""; };
	document.getElementById(szDivID).style.visibility ="hidden";
	document.getElementById(szDivID).visibility ="hidden";
}

function IsNumeric(String)//Positive and Negative Numbers.
{
	var ValidDigits = "()- ./0123456789";
	var Digit;
	var bOpenBracket = false;
	var bCloseBracket = false;
	var bDash = false;
	var bDecimal = false;
	var bValid = true;
	var Len = String.length;
	
	//characters can be only . or a digit, but only one decimal.
	for(var nIndex = 0; nIndex < Len && bValid; nIndex++)
	{
		check_char = ValidDigits.indexOf(String.charAt(nIndex));
		if(check_char < 0){bValid = false;}//not a valid number (including spaces or decimals or parenthesis)
		if(check_char == 0){bOpenBracket ? bValid=false : bOpenBracket=true;}//( 
		if(check_char == 1){bCloseBracket ? bValid=false : bCloseBracket=true;}//( 
		if (check_char == 2){bDash ? bValid=false : bDash=true;}//-
		if (check_char == 4){bDecimal ? bValid=false : bDecimal=true;}//.
	}	
    return bValid;
}
function isValidDate(dateStr) {
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year

	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) {
		alert(dateStr + " Date is not in a valid format.")
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		return false;
	}
	if (month == 2) { // check for february 29th
		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!");
		return false;
    }
    }
	return true;
}

function IsValidEmail(szEmail)
{
	var bValid = true;
	var nAtPos = szEmail.indexOf('@');

	if (nAtPos <= 0 || nAtPos >= szEmail.length-4) {bValid =false;}
	if (szEmail.indexOf('@.') >=  0 || szEmail.indexOf('.@') >=  0) {bValid =false;}

	if (szEmail.charAt(szEmail.length-4) != '.' && szEmail.charAt(szEmail.length-3) != '.') {bValid =false;}
	
	return bValid;
}

function isValidCreditCard(cardNumber, cardType)
{
  var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);

  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;

    switch(cardType)
    {
      case "mastercard":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case "visa":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case "amex":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;

      default:
        prefixRegExp = /^$/;
        alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }

  if (isValid)
  {
    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
    {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for(var productDigitCounter = 0;productDigitCounter < numberProduct.length;productDigitCounter++)
      {
        checkSumTotal += 
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }

    isValid = (checkSumTotal % 10 == 0);
  }

	if(cardNumber="1111 1111 1111 1111")
	{
		isValid = true;
	}
		
  return isValid;
}
function makeRequest(url, parameters) {
	if(xmlhttp == false) {
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			xmlhttp = new XMLHttpRequest();
			if (xmlhttp.overrideMimeType) {
				xmlhttp.overrideMimeType('text/xml');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!xmlhttp) {
			alert('Cannot create XMLHTTP instance');
			return false;
		}
		xmlhttp.onreadystatechange = Results;  //Calls the Results() function when the Call Page is ready.
		if(typeof target!="undefined") {if(!target==null) {target.style.cursor = 'wait';}; };
		document.body.style.cursor = 'wait';
		//alert(url+parameters);
		if(parameters.substr(0, 1) == "?") {
			xmlhttp.open('GET', url + parameters, true);
			xmlhttp.send(null);
		}
		else {
			xmlhttp.open("POST",url,true);
			xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			xmlhttp.send(parameters); 
		}
	}
}
function FormToQueryString(formname) {
	var theform = document.forms[formname];
	var PostText = "";
	var amp = "";
	for(i=0; i<theform.elements.length; i++){
		if(theform.elements[i].type == "text" || theform.elements[i].type == "textarea" || theform.elements[i].type == "hidden"){
			PostText += amp+theform.elements[i].name+"="+encodeURIComponent(theform.elements[i].value);
		} else if (theform.elements[i].type == "checkbox") {
			PostText += amp+theform.elements[i].name+"="+theform.elements[i].checked;
		} else if (theform.elements[i].type == "select-one") {
			PostText += amp+theform.elements[i].name+"="+theform.elements[i].options[theform.elements[i].selectedIndex].text;
		}
		amp = "&";
	}
	return PostText; 
}
function setSelectionRange(input, selectionStart, selectionEnd)

{
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd-selectionStart);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}

