//-------------------------------------
// dfeehely - Feb 16, 2005
// check form values.
//-------------------------------------
function checkForm(theform, emailfield, ignoreList) {
	var str;
	var strIgnoreList;
	var strEmailField;
	var arrIgnoreList;
	var arrEmailFieldList;
	var boolIgnoreFlag;

	str="";
	strIgnoreList = new String(ignoreList);
	strEmailField = new String(emailfield);
	arrIgnoreList = strIgnoreList.split(',');
	arrEmailFieldList = strEmailField.split(',');
	boolIgnoreFlag=false;


	for(i=0; i < theform.elements.length; i++) {
		if(theform.elements[i].name != "") {
			boolIgnoreFlag=false;
			//Check if current field is on ignore list
			for (var m=0; m <  arrIgnoreList.length; m++) {
				if(theform.elements[i].name == arrIgnoreList[m].toString()) {
					boolIgnoreFlag=true;
				}
			}

			if (boolIgnoreFlag ==  false) {
				// Loop through email fields and validate
				for (var k=0; k <  arrEmailFieldList.length; k++) {
					if(theform.elements[i].name == arrEmailFieldList[k]) {
						if(echeck(theform.elements[i].value) == false) {
							alert("Please enter a valid email address");
							theform.elements[i].focus();
							return false;
						}
					}
				}
				
				if(theform.elements[i].type == "select-one") {
					var strSelRes = theform.elements[i].options[theform.elements[i].selectedIndex].value;
					if((strSelRes == "")||(strSelRes == "none")) {
						alert("Please select a value for " + theform.elements[i].name );
						theform.elements[i].focus();
						return false;
					}
				} else if(theform.elements[i].type == "text") {
					if(theform.elements[i].value == "") {
						alert("Please enter a value for " + theform.elements[i].name );
						theform.elements[i].focus();
						return false;
					}
				} else if(theform.elements[i].type == "textarea") {
					var strVal;
					strVal = "";
					strVal = theform.elements[i].value
					strVal = strReplace(theform.elements[i].value, "\\n", "")
					if(strVal == "") {
						alert("Please enter a value for " + theform.elements[i].name );
						theform.elements[i].focus();
						return false;
					}
				} else if(theform.elements[i].type == "radio") {
					var strRadioName;
					var boolCheckedFlag;
					strRadioName = theform.elements[i].name;
					boolCheckedFlag = false;

					for(j=0;j<theform.elements[strRadioName].length;j++) {
						//alert(theform.elements[strRadioName][j].checked);
						if(theform.elements[strRadioName][j].checked == true) {
							boolCheckedFlag = true;
						}
					}

					if(boolCheckedFlag == false) {
						alert("Please select a value for " + theform.elements[i].name );
						theform.elements[i].focus();
						return false;
					}
				}


			}
		}
	}

	return true;
}

//---------------------------------
// dfeehely - check email format
//---------------------------------
function echeck(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   alert("Invalid E-mail ID")
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   alert("Invalid E-mail ID")
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		alert("Invalid E-mail ID")
		return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		alert("Invalid E-mail ID")
		return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		alert("Invalid E-mail ID")
		return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		alert("Invalid E-mail ID")
		return false
	 }
	
	 if (str.indexOf(" ")!=-1){
		alert("Invalid E-mail ID")
		return false
	 }

	 return true					
}

//-------------------------------------
// dfeehely - Feb 16, 2005
// replace string.
//-------------------------------------
function strReplace(strsrc, strfind, strreplace) {
	var thisSrcString;
	var thisRepString;
	var thisResString;
	var thisRegExp;

	thisSrcString = new String(strsrc);
	thisRepString = new String(strreplace);
	thisRegExp = new RegExp(strfind,'gi')

	thisResString = thisSrcString.replace(thisRegExp, thisRepString);
	return thisResString
}

//-------------------------------------
// dfeehely - Mar 2, 2005
// show/hide layers.
//-------------------------------------
function toggleBox(szDivID, iState) // 1 visible, 0 hidden
{
    if(document.layers)	   //NN4+
    {
       document.layers[szDivID].visibility = iState ? "show" : "hide";
    }
    else if(document.getElementById)	  //gecko(NN6) + IE 5+
    {
        var obj = document.getElementById(szDivID);
        obj.style.visibility = iState ? "visible" : "hidden";
    }
    else if(document.all)	// IE 4
    {
        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
    }
}

//-------------------------------------
// dfeehely - Mar 3, 2005
// show/hide form layers.
//-------------------------------------
function showFamilyOptions(theselect, zerodiv, onediv) {
	var strSelRes = theselect.options[theselect.selectedIndex].value;
	if(strSelRes == "0") {
		toggleBox(zerodiv,1);
		toggleBox(onediv,0);
		return true;
	} else if(strSelRes == "1") {
		toggleBox(zerodiv,0);
		toggleBox(onediv,1);
		return true;
	}
}

//---------------------------------
// dfeehely - Mar 21, 2005
// Popup Window
//---------------------------------
function PopUp(theURL,winName,features) {
	window.open(theURL,winName,features);
}

//---------------------------------
// dfeehely - Mar 15, 2005
// Confirm page Delete
//---------------------------------
function confirmPageDelete(p) {
	var reply;
	reply = confirm("Are you sure you want to delete this Page? \nAll its paragraphs will be deleted too!");
	if (reply == true) {
		document.location = "pageDelete.asp?page_ID=" + p;
	}
	return false;
}

function confirmImageDelete(p, i) {
	var reply;
	reply = confirm("Are you sure you want to remove this image?");
	if (reply == true) {
		document.location = "property_imageOK3.asp?r=yes&p=" + p + "&i=" + i;
	}
	return false;
}

//---------------------------------
// dfeehely - Mar 15, 2005
// Confirm Paragraph Delete
//---------------------------------
function confirmParagraphDelete(p) {
	var reply;
	reply = confirm("Are you sure you want to delete this Paragraph?");
	if (reply == true) {
		document.location = "ParagraphDelete.asp?paragraph_ID=" + p;
	}
	return false;
}

//---------------------------------
// dfeehely - Mar 15, 2005
// Confirm Property Paragraph Delete
//---------------------------------
function confirmPropertyParagraphDelete(p) {
	var reply;
	reply = confirm("Are you sure you want to delete this Paragraph?");
	if (reply == true) {
		document.location = "property_Paragraph_Delete.asp?paragraph_ID=" + p;
	}
	return false;
}


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];}}
}

function MM_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.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_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}



//------------------------------------------------------------------------------------------
// Mortgage Calculator Fns
//------------------------


bState = true
oReq = new Collection("AMOUNT","RATE","","","","")
oVal = new Collection("AMOUNT","RATE","","","","")
oTst = new Collection("N","N","","","","")

function controller(oForm, oBtn) {
   while (bState) {
      if (!Required(oForm))
         break
      if (!Validate(oForm))
         break
      if (!SetValue(oForm))
         break
     /*if (!NewPage(oForm, oBtn))
         break*/
      if (bState) {
          bState = false
      }
   }
   bState = true
  return false
}
function Required(oView) {
   for (i in oView) {
      for (j in oReq) {
        if (i==oReq[j]) {      
           if (isMissing(oView[i])) {
               return(false)
           }
        }
     }
  }
  return(true)
}
function Validate(oView) {
   for (i in oView) {
      for (j in oVal) {
        if (i==oVal[j] && oTst[j]=="N") {      
           if (isTest(oView[i], oTst[j])) {
               return(false)
           }
        }
     }
  }
  return(true)
}
function SetValue(oView) {

   Mortgage = new Loan(oView.AMOUNT.value, oView.RATE.value, get_selection(oView.YEARS), 0, 0, get_selection(oView.FREQUENCY), 0 )
   Mortgage.calcPeriods()
   Mortgage.calcPayment()
   Mortgage.calcInterest()
   oView.PAYMENT.value = calcRound(Mortgage.Payment)
    
   /*oView.INTEREST.value = calcRound(Mortgage.Interest)*/
   //setCookie("_Prin", Mortgage.Amount)
   //setCookie("_Int", Mortgage.Rate)
   //setCookie("_Year", Mortgage.Term)
   //setCookie("_Tot", Mortgage.Interest)
   return(true)
}

function isMissing(oCtrl) {
   if (oCtrl.value == "") {  
      alert("You have left a required value blank. Please type a number") 
      oCtrl.focus()
      oCtrl.select()
      return(true)
      }
   else
      { 
      return(false)
   }
}
function isTest(oCtrl, oTest) {
   if (oTest=="N" && !isNumber(oCtrl.value) ) {
      alert(oCtrl.value+" contains an invalid character. Please type a number") 
      oCtrl.focus()
      oCtrl.select()
      return(true)
      }
      else
      { 
      return(false)
   }
}
function isNumber(input) {
   for (var i=0;i<input.length;i++) {
       var oneChar = input.substring(i, i+1)
       if (oneChar < "0" || oneChar > "9") {
          if (oneChar != "." ) { 
             return(false)
          }
       }
   }
   return(true)
}

function Collection(item1, item2, item3, item4, item5, item6) {
   this.item1 = item1
   this.item2 = item2
   this.item3 = item3
   this.item4 = item4
   this.item5 = item5
   this.item6 = item6
}
function Loan(Amount, Rate, Term, Payment, Interest, Frequency, Periods ) {
   this.Amount = Amount
   this.Rate = Rate
   this.Term = Term
   this.Payment = Payment
   this.Interest = Interest
   this.Frequency = Frequency
   this.Periods = Periods
   this.calcPeriods = calcPeriods
   this.calcPayment = calcPayment
   this.calcInterest = calcInterest
}
function calcPayment() {
   this.Payment = (this.Amount*((this.Rate/(this.Periods*100))/(1-(Math.pow(1+(this.Rate/(this.Periods*100)),((this.Term*this.Periods)*-1))))))
}
function calcInterest() {
   this.Interest = ((this.Payment*(this.Term*this.Periods))-this.Amount)
}
function calcPeriods() {
   if (this.Frequency=="Monthly") { this.Periods=12 } else { this.Periods=26 }
}
function calcRound(num) {
   result=""+Math.floor(num)+"." 
   n = result.length
   if (num>1000 && num<999999) {  
     //result=""+result.substr(1,n-4)+","+result.substr(n-4,n)
   }
   if (num>1000000) {  
     //result = ""+result.substr(1,n-7)+","+result.substr(n-7,n-4)+","+result.substr(n-4,n)
   }
   var cents=100*(num-Math.floor(num))+0.5
   result += Math.floor(cents/10)
   result += Math.floor(cents%10)
   return(result)
}


function select_item(name, value) {  
   this.name = name  
   this.value = value
}
function get_selection(select_object) {   
   contents = new select_item()
   for(var i=0;i<select_object.options.length;i++)
      if(select_object.options[i].selected == true) {
        contents.name = select_object.options[i].text
        contents.value = select_object.options[i].value
      }      
   return(contents.name)
}
function setCookie (name, value ) {
  document.cookie = name + "=" + escape (value) + "; path=/"; 
}   
function NewPage(oForm, oBtn) {
   if (oBtn.name == "cmdCalc") {
      return(false)
    }
   if (confirm("An Amortization Table calculates the periodic payment breakdown for each specific category listed.")) {
      text = ("<HEAD><TITLE>Amortization Table</TITLE></HEAD>");
      text = (text +"<BODY BGCOLOR =  '#fffbed'><BR><BR>");
      text = (text +"<H2 ALIGN=CENTER><FONT COLOR=#000066>Amortization Table</FONT></H2>");
      text = (text +"<UL><FONT SIZE=-1 COLOR=#000066 FACE= 'book antiqua, TIMES NEW ROMAN, serif'>The following table is based on the information entered in the calculator form.</FONT></UL>");
      text = (text +"<UL><FONT SIZE=+1 COLOR=#000066 FACE= 'book antiqua, TIMES NEW ROMAN, serif'>Mortgage Amount: </FONT>" +calcRound(Mortgage.Amount));
      text = (text +"<BR><FONT SIZE=+1 COLOR=#000066 FACE= 'book antiqua, TIMES NEW ROMAN, serif'>  Interest Rate: </FONT>" + Mortgage.Rate + " %");
      text = (text +"<BR><FONT SIZE=+1 COLOR=#000066 FACE= 'book antiqua, TIMES NEW ROMAN, serif'>Mortgage Length: </FONT>" +get_selection(oForm.YEARS) + " Years </UL>");
      text = (text +"<BR><CENTER><table border='1' width='100%'>");
      text = (text +"<TR><TD ALIGN=CENTER BGCOLOR=#000066><FONT COLOR=#fffbed FACE= 'book antiqua, TIMES NEW ROMAN, serif'><B>Year</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=#000066><FONT COLOR=#fffbed FACE= 'book antiqua, TIMES NEW ROMAN, serif'><B>Interest&nbsp;</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=#000066><FONT COLOR=#fffbed FACE= 'book antiqua, TIMES NEW ROMAN, serif'><B>Principal&nbsp;</B></FONT></TD><TD ALIGN=RIGHT BGCOLOR=#000066><FONT COLOR=#fffbed FACE= 'book antiqua, TIMES NEW ROMAN, serif'><B>Balance&nbsp;</B></FONT></TD></TR>\n");
      makeTable(oForm)
      text = (text +"</TABLE></CENTER>");
      msgWindow=window.open("","displayWindow","toolbar=no,width=500,height=300,directories=no,status=no,scrollbars=yes,resize=no,menubar=no")
      msgWindow.document.write(text)
      msgWindow.document.close()
      return(true)
    }
  return(false)
}

function makeTable(oView) {
   var currInt = 0
   var currPrin = 0
   prevBalance = Mortgage.Amount
   InterestRate = ( Mortgage.Rate /100) / Mortgage.Periods
   MonthlyPayment = Mortgage.Payment
   currStart = get_selection(oView.START)
   for(i=1;i<=30;i++) {
      for(j=1;j<=Mortgage.Periods;j++) {
         periodInt = prevBalance * InterestRate
         periodPrin = MonthlyPayment - periodInt
         currBal = prevBalance - periodPrin
         currInt += periodInt
         currPrin += periodPrin
         prevBalance = currBal
      }
      if( currBal <= 0 ){ 
         currBal = 0
      }
      text = (text +"<TR><TD ALIGN=CENTER>"+ currStart +"</TD><TD ALIGN=RIGHT>"+ calcRound(currInt) +"&nbsp;</TD><TD ALIGN=RIGHT>"+ calcRound(currPrin) +"&nbsp;</TD><TD ALIGN=RIGHT>"+ calcRound(currBal)+"&nbsp;</TD></TR>");
      currInt = 0
      currPrin = 0
      currStart = parseInt(currStart)
      currStart += 1
      if(currBal<=0) {
         return(true)
      }       
   }
   return (true)
}


//---------------------------------
// dfeehely - May 4, 2005
// Confirm property alert send
//---------------------------------
function confirmAlertSend() {
	var reply;
	reply = confirm("Are you sure you want to send the email property alerts?");
	if (reply == true) {
		document.location = "propertyalert_send.asp";
	}
	return false;
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
 