//var root="http://www.neighborcity.com/mortgage-calculator/";
var root="http://www.neighborcity.com/mortgage-calculator2/";
var vid = 0;

var iserror=false; 
var jumboSpread = 0;
var jumboArm = 0; 
var jumboLoan =0;
var thirty =0;
var twenty =0;
var fifteen =0;
var arm3 =0;
var arm5 =0;
var issent=false;

var purchaseAmt = 0;
var jumboSpread = 0;
var jumboArm = 0;
var jumboLoan = 0;    
var downOption = 0;
var termValue = 0;
var termOption = "";
var creditValue = 0;     
var creditOption = "";
var zip = 0; 

var xmlHttp; 
var xmlHttp1;

function initmort() {
    // quit if this function has already been called
    if (arguments.callee.done) return;

    // flag this function so we don't do the same thing twice
    arguments.callee.done = true;
    vid=document.getElementById('mortresult').getAttribute('uid');
    
     //get the external mort.css
    loadCSS();
    
    show(vid); 
}

if (document.addEventListener) {/* for Mozilla */
    document.addEventListener("DOMContentLoaded", initmort, false);
}

/* for other browsers */ 
window.onload = initmort; 


function loadCSS() {
    var jhead = document.getElementsByTagName('head')[0];
    if (jhead) {
        var css = root + "mort_v2.css";
        var link = document.createElement("link");
        link.setAttribute("rel", "stylesheet");
        link.setAttribute("type", "text/css");
        link.setAttribute("href", css);
        
        var loadFunction = function() {
            if (this.readyState=='complete' || this.readyState=='loaded') {
                prcs();
            }
        }
        link.onreadystatechange = loadFunction;
        jhead.appendChild(link);
    }
}


function show(vid){ 
    loadJSON(root+"mc.php?vid="+vid);
}

//needed to pull external JSON output from external source into this doc --------------------
function loadJSON(url) {                   
    var jhead = document.getElementsByTagName('head')[0]; 
    if (jhead) {     
        var script = document.createElement("script");        
        script.setAttribute("src",url);
        script.setAttribute("type","text/javascript");   
            jhead.appendChild(script);  //chicken or the egg?            
        
        var loadFunction = function() {
            if (this.readyState=='complete' || this.readyState=='loaded') {
                prcs();
            }
        }
        script.onreadystatechange = loadFunction;
        //call function after loaded (firefox) --above is for IE
        script.onload = prcs;
        //jhead.appendChild(script);    
    }
}

prcs = function() {//popup_render_content_callback
    var str = "";
    var rlen = root.length;
  //  if (iserror==false && document.getElementById('imgMortLink').href.substring(0,rlen) == root) {
    if (iserror==false && document.getElementById('imgMortLink').href.substring(0,27) == 'http://www.neighborcity.com') {
      str = "<div id='morthead'><img src='" + root + "images/mort.gif' width='142' height='42' border=0 /></div>" +
                "<div id='startform'><form id='calcform' name='calcform' action='' method='post' style='margin:0px; padding-left:10px;'>" +
                "<input type='hidden' name='jumboSpread' id='jumboSpread' value='" + jumboSpread + "' />" +
                "<input type='hidden' name='jumboArm' id='jumboArm' value='" + jumboArm + "' />" +
                "<input type='hidden' name='jumboLoan' id='jumboLoan' value='" + jumboLoan + "' />  " +        
                "Purchase Price:" +
                "<div class='mortstartinputs'>" +
                        "<input type='text' name='purchaseAmt' id='purchaseAmt' value='200000' class='mortii' />" +
                "</div> " +
                "Mortgage Type:" +
                "<div class='mortstartinputs'><select name='loanTerm' class='mortii'>" +
                        "<option value = '" + thirty + "' >30-yr Fixed Rate</option>" +
                        "<option value = '" + twenty + "' >20-yr Fixed Rate</option>" +
                        "<option value = '" + fifteen + "' >15-yr Fixed Rate</option>" +
                        "<option value = '" + arm3 + "' >3/1 Adjustable Rate</option>" +
                        "<option value = '" + arm5 + "' >5/1 Adjustable Rate</option>" +
                        "</select>" +
                "</div>" +
                "Down Payment:" +
                "<div class='mortstartinputs'><select name='loanDown' class='mortii'>" +
                        "<option value = '.65' >5%</option>" +
                        "<option value = '.45' >10%</option>" +
                        "<option value = '.15' >15%</option>" +
                        "<option value = '.0' >20%</option>" +
                        "</select>" +
                "</div>" +
                "Your Credit Rating:" +
                "<div class='mortstartinputs'><select name='credit' class='mortii'>" +
                        "<option value = '0' >Excellent (750-840)</option>" +
                        "<option value = '.35' >Good (660-749)</option>" +
                        "<option  value = '.65'>Fair (620-659)</option>" +
                        "<option  value = '1.15' >Poor (314-619)</option>" +
                        "<option  value = '.55' >Not Sure</option>" +
                        "</select> " +
                "</div>" +
                "Property Zip Code:" +
                "<div class='mortstartinputs'><input type='text' id='zip' name='zip' class='mortii' onclick='this.className = \"mortblack\"; this.value=\"\"' /></div>" +
                "<input type='button' value='' class='mortthebutton' style='background:url(" + root + "images/calcpay.gif);' onclick='show_result();' />" +
                "</form></div>";
      
    } else {
        str = "<div id='morterr'>Mortgage Calculator<br />not installed properly.</div>";
    }
    document.getElementById('mortINS').innerHTML = str;
}

function sendform(fullname,phone,email,InterestRate,MonthlyPayment,PurchasePrice,MortgageType,DownPayment,CreditRating,ZipCode){ 
    var url= root + "mcsend.php?uid=" + vid + "&fullname=" + fullname + "&phone=" + phone + "&email=" + email +"&InterestRate=" + InterestRate + "&MonthlyPayment=" + MonthlyPayment +  "&PurchasePrice=" + PurchasePrice + "&MortgageType=" + MortgageType + "&DownPayment=" + DownPayment + "&CreditRating=" + CreditRating + "&ZipCode=" + ZipCode;
    var jhead = document.getElementsByTagName('head')[0]; 
    if (jhead) {     
        var script = document.createElement("script");        
        script.setAttribute("src",url);
        script.setAttribute("type","text/javascript");                
        
        var loadFunction = function() {
            if (this.readyState=='complete' || this.readyState=='loaded') {
                preqst();
            }
        }
        script.onreadystatechange = loadFunction;
        //call function after loaded (firefox) --above is for IE
        script.onload = preqst;
        jhead.appendChild(script);    
    }
}

preqst = function() {
    var str="<div align='right' style='cursor:pointer;margin-right:5px;'><a onclick='prcs();'>x</a></div>";
    if (issent == true) {
        str += "<table cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#ffffff\" width=\"142px\" border=0 class=\"mortrequest\"><tr><td align=\"center\" style=\"color:red;\">Request submitted.<br />Thank You!</td></tr></table>";
    } else {
        str += "<table cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"#ffffff\" width=\"142px\" border=0 class=\"mortrequest\"><tr><td align=\"center\" style=\"color:red;\">Sorry, your request <br /> could not be processed <br /> at this time.</td></tr></table>";
    }
    document.getElementById('mortINS').innerHTML = str;
} 
    
    
/* ----------------- functions for the widgit itself ----------------------------------------------------------------- */  

    function IsEmail(addr) {  //validate email address in submitform
        if (addr == '') {           return false;        }
        var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
        for (i=0; i<invalidChars.length; i++) {
           if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
              return false;
           }
        }
        var atPos = addr.indexOf('@',0);
        if (atPos == -1 || atPos == 0) {           return false;        }
        if (addr.indexOf('@', atPos + 1) > - 1) {           return false;        }
        if (addr.indexOf('.', atPos) == -1) {           return false;        }
        if (addr.indexOf('@.',0) != -1) {           return false;        }
        if (addr.indexOf('.@',0) != -1){           return false;        }
        if (addr.indexOf('..',0) != -1) {           return false;        }
        var suffix = addr.substring(addr.lastIndexOf('.')+1);
        if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
           return false;
        }
        return true;
    }
   
    function validate() {       //for submitform ONLY
        var isvalid = true;
        //validate fullname, phone, email
        var sf = document.submitform;
        var fullname = sf.fullname.value;
        var phone = sf.phone.value;
        var email = sf.email.value;
        if (fullname=="" || fullname==null || fullname=="Name required.") {
            sf.fullname.className = "mortred";
            sf.fullname.value="Name required.";
            isvalid = false;
        }
        if (phone=="" || !IsPhoneNumeric(phone) || phone==null || phone.length < 7 || phone=="Phone number required.") {
            sf.phone.className = "mortred";
            sf.phone.value="Phone number required.";
            isvalid = false;
        }
        if (email=="" || email==null || IsEmail(email) == false || email == "Valid Email address required.") {
            sf.email.className = "mortred";
            sf.email.value="Valid Email address required.";
            isvalid = false;
        }
        //if all is good, then submit
        if (isvalid) {            
            sendform(fullname,phone,email,sf.InterestRate.value,sf.MonthlyPayment.value,sf.PurchasePrice.value,sf.MortgageType.value,sf.DownPayment.value,sf.CreditRating.value,sf.ZipCode.value);
        }
    }
  
    function show_result() {        
        purchaseAmt = document.getElementById("purchaseAmt").value;
        jumboSpread = document.getElementById("jumboSpread").value;
        jumboArm = document.getElementById("jumboArm").value; 
        jumboLoan = document.getElementById("jumboLoan").value; 
        cf = document.calcform;        
        downOption = cf.loanDown.options[cf.loanDown.selectedIndex].value;
        termValue = cf.loanTerm.options[cf.loanTerm.selectedIndex].value;
        termOption = cf.loanTerm.options[cf.loanTerm.selectedIndex].text;
        creditValue = cf.credit.options[cf.credit.selectedIndex].value;     
        creditOption = cf.credit.options[cf.credit.selectedIndex].text; 
        
        zip = document.getElementById("zip").value;
        if(IsNumeric(zip)){
            switch (zip.length){
                case 3:
                    zip = "00" + zip;
                  break;
                case 4:
                    zip = "0" + zip;
                  break;
                case 5:
                  break;              
                default:
                    zip = "";
                  break;
            }     
        } else {
            zip = "";
        }
        
        if(zip != "" && zip.length >= 3) {        
            var url= root + "mort_ps.php?d=" + Date();
            xmlHttp1=GetXmlHttpObject();
                if (xmlHttp1==null){
                alert ("Browser does not support HTTP Request");
                return;
            }
            
            xmlHttp1.onreadystatechange=shwrslt; 
            xmlHttp1.open("GET",url,true);       
            xmlHttp1.send(null);    
        } else {
            document.calcform.zip.className = "mortred";
            document.calcform.zip.value="Zip code required.";//PROVIDE ZIP CODE
        }    
    }
    
    function shwrslt() {
        if(xmlHttp1.readyState==4 || xmlHttp1.readyState=="complete") { 
            var response = xmlHttp1.responseText; //alert(response);
            var resultDiv = document.getElementById("mortINS");            
                    
            if (purchaseAmt == "" || !IsNumeric(purchaseAmt) || purchaseAmt=="0" || purchaseAmt < 1000) {
                //resultDiv.innerHTML =  "The Purchase Amount cannot be blank"; 
                var it = MakeNumeric(purchaseAmt); //alert(it);
                if (it < 1000) {
                    it = 200000;
                }
                document.calcform.purchaseAmt.value=it;  
                purchaseAmt = it;
            }
        
            switch (creditOption) {
               case "Excellent (750-840)" :           
                    var lenderCount = 5;
                 break;           
               case "Good (660-749)" :           
                    var lenderCount = 4;
                 break;           
               case "Fair (620-659)" : 
                    var lenderCount = 3;
                 break;
               case "Poor (314-619)" : 
                    var lenderCount = 2;
                 break;
               default:
                    var lenderCount = 3;
                 break;             
            } 

            switch (downOption) {
               case ".65" :           
                    var loanAmt = Number(purchaseAmt) * .95;
                 break;           
               case ".45" :           
                    var loanAmt = Number(purchaseAmt) * .90;
                 break;           
               case ".15" : 
                    var loanAmt = Number(purchaseAmt) * .85;
                 break;
               case ".0" : 
                    var loanAmt = Number(purchaseAmt) * .80;
                 break;             
            }        
            var intRate =  Number(downOption) + Number(termValue) + Number(creditValue);  
                     
        
            zip = zip.substr(0,3);
            var status = "norm";

            // IL,TX,VA,WI,NH,GA
            var arrPlus = new Array(
                new Array(600,629),
                new Array(750,799),
                new Array(885,885),
                new Array(201,201),
                new Array(220,246),
                new Array(530,549),
                new Array("030","039"),
                new Array(300,319),
                new Array(398,399)


            );
            //  CA,CT,MI,NY,PA,FL
            var arrMinus = new Array(
                new Array(900,961),
                new Array("060","069"),
                new Array(480,499),
                new Array(100,149),
                new Array(150,196),
                new Array(320,349)
            );
            
            for (var arrZip in arrPlus) {
                var first = arrPlus[arrZip][0];
                var second = arrPlus[arrZip][1];
                if (Number(zip) >= first && Number(zip) <= second) { //then the zip code they entered was found in arrPlus
                    status = "plus";
                }
            }
            for (var arrZip in arrMinus) {
                var first = arrMinus[arrZip][0];
                var second = arrMinus[arrZip][1];
                if (Number(zip) >= first && Number(zip) <= second) { //then the zip code they entered was found in arrMinus
                    status = "minus";
                }
            } 
            switch (termOption) {
               case "30-yr Fixed Rate" :
                    var loanTerm = 30;
                    if(status=="minus") {
                        intRate -= .07;        
                    } else if (status=="plus") {
                        intRate += .25;
                    }  
                    if(Number(loanAmt) > Number(jumboLoan)){ // check for jumbo
                        intRate += Number(jumboSpread);
                    }
                    break;
               case "3/1 Adjustable Rate" :
                    var loanTerm = 30;
                    if(status=="minus") {
                        intRate -= .1;      
                    } else if (status=="plus") {
                        intRate += .05;
                    } 
                    if(Number(loanAmt) > Number(jumboLoan)){ // check for jumbo
                        intRate += Number(jumboArm);
                    }
                 break;           
               case "20-yr Fixed Rate" :
                    var loanTerm = 20;
                    if(status=="minus") {
                        intRate -= .06;      
                    } else if (status=="plus") {
                        intRate += .20;
                    } 
                    if(Number(loanAmt) > Number(jumboLoan)){ // check for jumbo
                        intRate += Number(jumboSpread);
                    }
                 break;                   
               case "5/1 Adjustable Rate" :
                    var loanTerm = 30;
                    if(status=="minus") {
                        intRate -= .12;      
                    } else if (status=="plus") {
                        intRate += .04;
                    }
                    if(Number(loanAmt) > Number(jumboLoan)){ // check for jumbo
                        intRate += Number(jumboArm);
                    }
                 break;           
               case "15-yr Fixed Rate" :
                    var loanTerm = 15;
                    if(status=="minus") {
                        intRate -= .05;      
                    } else if (status=="plus") {
                        intRate += .15;
                    } 
                    if(Number(loanAmt) > Number(jumboLoan)){ // check for jumbo
                        intRate += Number(jumboSpread);
                    }
                 break; 
            }            
            
            var payment = ((intRate/100/12)/(1-Math.pow((1+intRate/100/12),(-loanTerm * 12))))* Number(loanAmt);
                 
            var formText =  "<div align='right' style='cursor:pointer;margin-right:5px;'><a onclick='prcs()'>x</a></div>";
            
            formText += "<span id='mortDATA'>The interest rate for this loan is:<div class='mortgreen'>" + intRate.toFixed(2) + " %</div></span>";
            formText += "<span id='mortDATA'>Your monthly payment will be:<div class='mortgreen'>$ " + payment.toFixed(2) + "</div></span>";
            formText += "<span id='mortDATA'>Number of lenders in your area for this loan:<div class='mortgreen'>" + lenderCount + "</div></span>";
            formText += "<br />";
            formText += "<div class='mortblue'>";
                formText += "<form id='submitform' name='submitform' action='' method='post' style='margin:0px; padding:0px;'><input type='hidden' name='formsubmit' value='true' />";
                formText += "<div class='pmorttd' style='padding-bottom:1px; padding-top:4px;'>Enter your information now to get pre-qualified:</div>";
                formText += "<hr style='color:white; margin:0px 2px 0px 0px; width:100%;' size='1px'>";
                        
                formText += "<div class='pmorttd'>Full name:</div>";
                formText += "<div class='mortinputs'><input style='width:132px; font-size:10px;' type='text' name='fullname' onclick='this.className = \"mortblack\"; this.value=\"\"' /></div>";
                formText += "<div class='pmorttd'>Phone Number:</div>";
                formText += "<div class='mortinputs'><input style='width:132px; font-size:10px;' type='text' name='phone' onclick='this.className = \"mortblack\"; this.value=\"\"' /></div>";
                formText += "<div class='pmorttd'>Email:</div>";
                formText += "<div class='mortinputs'><input style='width:132px; font-size:10px;' type='text' name='email' onclick='this.className =  \"mortblack\"; this.value=\"\"' /></div>";
                formText += "<input type='button' value='' class='mortgetpre' style='background: url(" + root + "images/getpre.gif) no-repeat;' onclick='validate();' />";
                
                formText += "<input type='hidden' name='InterestRate' value=" + intRate.toFixed(2) + " /><input type='hidden' name='MonthlyPayment' value=" + payment.toFixed(2) + " /><input type='hidden' name='PurchasePrice' value=" + purchaseAmt + " /><input type='hidden' name='MortgageType' value=" + loanTerm + " /><input type='hidden' name='DownPayment' value=" + downOption + " /><input type='hidden' name='CreditRating' value=" + creditValue + " /><input type='hidden' name='ZipCode' value=" + zip + " />";
                formText += "</form>";
            formText += "</div>";

            resultDiv.innerHTML =  formText; 

        } else {
            document.getElementById("mortINS").innerHTML = "<center><br /><br /><br /><br /><img src='" + root + "images/spinner2.gif' /><br /><br /><br />Loading . . . </center>";
        }    
    }
    
    function GetXmlHttpObject(){
        var xmlHttp=null;
        try { xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
        } catch (e) {
            //Internet Explorer
            //try { return new ActiveXObject("Msxml2.XMLHTTP.7.0") } catch(e) {
                try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {
                    //try { return new ActiveXObject("Msxml2.XMLHTTP.5.0") } catch(e) {
                        //try { return new ActiveXObject("Msxml2.XMLHTTP.4.0") } catch(e) {
                            try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {
                                try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
                                    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                                }
                            }
                        //}
                    //}
                }
            //}
        }
        return xmlHttp;
    }
    
    
    
    
    function IsNumeric(sText){
       var ValidChars = "0123456789";
       var IsNumber=true;
       var Char;
   
       for (i = 0; i < sText.length && IsNumber == true; i++){ 
          Char = sText.charAt(i); 
          if (ValidChars.indexOf(Char) == -1){
             IsNumber = false;
          }
       }
       return IsNumber;   
   }
   function IsPhoneNumeric(sText){
       var ValidChars = "-.()0123456789";
       var IsNumber=true;
       var Char;
   
       for (i = 0; i < sText.length && IsNumber == true; i++){ 
          Char = sText.charAt(i); 
          if (ValidChars.indexOf(Char) == -1){
             IsNumber = false;
          }
       }
       return IsNumber;   
   }

   function MakeNumeric(sText){
       var ValidChars = "0123456789";
       var Char;
       var returnText = "";
     
       for (i = 0; i < sText.length; i++){ 
          Char = sText.charAt(i); 
          if (ValidChars.indexOf(Char) > -1){
             returnText += Char;
          }
       }
       return returnText;
   }
   
   
   