﻿
var info_list = new Array();
var nam_list = new Array();
var type_list = new Array();
var length_list = new Array();
var lite_list = new Array();
var assoc_list = new Array();
var oid = new Array();
var olast = new Array();
var ofirst = new Array();
var oadd = new Array();
var ocity = new Array();
var val_bag = new bag();
var formXcancel_next = "";
var formXsave_next = "";
var fxnextop = "";
var fx_new = true;
var fxidin;
var comm_id = "";
var ignore = false;
var last_id = 0;
var lstkey;
var detail_type = "";

function checkown() 
{
    var chr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var alph = "";
    var kc = event.keyCode;
    var x, fld;
    
    x = document.getElementById("last_name");
    fld = x.value;
    if (fld.length > 0) {return; }
    if (kc < 65 || kc > 90) { return; }
    kc = kc - 65;
    if (kc == lstkey) {return; }
    lstkey = kc;
    alph = chr.charAt(kc);
    //check if alph is first letter of any in the olast array
    //first remove rows from owner table
    removeRows();
    var j = 0;
    var ocnt = 0;
    var ch = "";
 
    var nextrow = 1;
    var owntbl = document.getElementById("owners");
    for (j = 1; j < oid.length; j++) 
    {
        ch = olast[j].charAt(0);
        ch = ch.toUpperCase();
        if (ch == alph) { ocnt++; addRow(j); }
    }
    if (ocnt == 0) { return; }
    cntrDiv(400, 500, "new_owner_sel");
    x = document.getElementById("new_owner_sel");
    x.style.visibility = "visible";
}
function selclick(idin) 
{
    var x = document.getElementById("new_owner_sel");
    x.style.visibility = "hidden";
    if (idin == "0") { return; }
    v[1] = idin;
    maxv = 1;
    op = "_ownpropupdt";
    doGet();
}
function addRow(idin) 
{
    var txt;
    var tbl = document.getElementById('owners');
    var lastRow = tbl.rows.length;
    // insert row with id
    var row = tbl.insertRow(lastRow);
    row.onclick = function(){selclick(oid[idin]);};
    row.className = "fxselcell";
    // insert lastname td
    var tdlast = row.insertCell(0);
    txt = document.createTextNode(olast[idin]);
    tdlast.appendChild(txt);
    // insert firstname + middle td
    var tdfirst = row.insertCell(1);
    txt = document.createTextNode(ofirst[idin]);
    tdfirst.appendChild(txt);
    // insert address
    var tdadd = row.insertCell(2);
    txt = document.createTextNode(oadd[idin]);
    tdadd.appendChild(txt);
    // insert city
    var tdcity = row.insertCell(2);
    txt = document.createTextNode(ocity[idin]);
    tdcity.appendChild(txt);
}
function removeRows() 
{
    var tbl = document.getElementById('owners');
    do {
        var lastRow = tbl.rows.length;
        if (lastRow == 1) { break; }
        tbl.deleteRow(lastRow - 1);
    } while (true);
    return;
}
function formXinfo(idin)
{
    var j = idin.substr(2);
    j = j/1;
    var info = info_list[j];
    openMsgBox(info);
}
function formXsave(servcode) 
{
    // check for error columns
    var L = lite_list.length;
    var red_cnt = 0;
    var k = 0;
    for (k = 0; k < L; k++){if(lite_list[k] == "red"){red_cnt++;}}
    if (red_cnt == 1){openMsgBox("There is a data item with errors. Please repair.");return;}
    if (red_cnt > 1){openMsgBox("There are " + red_cnt  + " data items with errors. Please repair.");return;}
    if (fx_new || isnew)
    {
        var black_cnt = 0;
        k = 0;
        for (k = 0; k < L; k++){if(lite_list[k] == "black"){black_cnt++;}}
        if (black_cnt == 1){openMsgBox("There is a required data item that must be entered. Please complete.");return;}
        if (black_cnt > 1){openMsgBox("There are " + black_cnt  + " data items that must be entered. Please complete.");return;}
    }
    if (detail_type == "owner" && isnew)
    {
        var x,j;
        x = document.getElementById("last_name")
        var last = x.value;
        x = document.getElementById("first_name");
        var first = x.value;
        x = document.getElementById("middle");
        var middle = x.value;
        first = first + " " + trim(middle);
        x = document.getElementById("address_1");
        var add = x.value;
        x = document.getElementById("city");
        var city = x.value;
        // check olast array
        for (j = 0; j < olast.length; j++) {
            if (olast[j] == last && ofirst[j] == first && oadd[j] == add && ocity[j] == city) {
                openMsgBox("This Owner has the same main information as another Owner<br />Please clear the last name<br /> and re-enter and select the name<br/>OR change the last name not to be identicle")
                return;
            }
        }
    }
    // okay to save
    op = servcode;
    maxv = 1;
    v[1] = val_bag.makeOut("true");
    //putinwin(v[1]);
    doGet();
}
function formXdelete(servcode)
{
    op = servcode;
    maxv = 1;
    v[1] = val_bag.makeOut("true");
    doGet();
}
function fxnotesave() 
{
    var x = document.getElementById("note");
    var vxx = x.value;
    var j = 0;
    var r = "";
    for (j = 0; j < vxx.length; j++) {if (vxx.charCodeAt(j) == 39) { r += "`"; } else {r += vxx.charAt(j); }}
    vxx = r;
    var over = vxx.length - 4000; 
    if (over > 0) { openMsgBox("PLEASE reduce the size of the Note.<br />The maximum size is 4000 characters.<br/>It is over by " + over + " characters."); return; }
    var bx = new bag();
    bx.put("prop_id", prop_id);
    bx.put("pm_id", pm_id);
    bx.put("APM_name", "");
    bx.put("note", vxx);
    bx.put("assoc_id", assoc_id);
    v[1] = bx.makeOut("true");
    maxv = 1;
    op = "_noteupdt";
    doGet();
}
function fxcommsel(idin) 
{
    op = "_commsel";
    maxv = 1;
    v[1] = idin;
    doGet();
}
function fxcommadd() 
{
    var x = document.getElementById("commtext");
    x.value = "";
    comm_id = "0";
    var newta = "<textarea id=\"commtext\" rows=\"20\" cols=\"72\"></textarea>";
    x = document.getElementById("commsave1");
    x.style.visibility = "visible";
    x = document.getElementById("commsave2");
    x.style.visibility = "visible";
    x = document.getElementById("commtextdiv");
    x.innerHTML = newta;
    x = document.getElementById("commtexthead");
    x.innerHTML = "NEW COMMUNICATION CONTENT";
    x = document.getElementById("comm_saved");
    x.innerHTML = "&nbsp;&nbsp;&nbsp;PLEASE ADD YOUR NEW COMMUNICATION NOW";
    turn_on('comm_saved');
    x = document.getElementById("commsend1");
    x.style.visibility = "hidden";
    x = document.getElementById("commsend2");
    x.style.visibility = "hidden";
}
function fxcommsave(idin) 
{
    var x = document.getElementById("commtext");
    var vxx = x.value;
    vxx = trim(vxx);
    if (vxx == "") {openMsgBox("CAN NOT SAVE an empty communication");return; }
    var j = 0;
    var r = "";
    for (j = 0; j < vxx.length; j++) { if (vxx.charCodeAt(j) == 39) { r += "`"; } else { r += vxx.charAt(j); } }
    vxx = r;
    var over = vxx.length - 4000;
    if (over > 0) { openMsgBox("PLEASE reduce the size of the Communication.<br />The maximum size is 4000 characters.<br/>You are over by " + over + " characters."); return; }
    var bx = new bag();
    bx.put("prop_id", prop_id);
    bx.put("pm_id", pm_id);
    bx.put("scribe", "");
    bx.put("note", vxx);
    bx.put("assoc_id", assoc_id);
    bx.put("comm_id", comm_id);
    v[1] = bx.makeOut("true");
    maxv = 1;
    op = "_commupdt";
    doGet();
}
function fxcommsend() 
{
    var bx = new bag();
    bx.put("prop_id", prop_id);
    bx.put("pm_id", pm_id);
    bx.put("comm_id", comm_id);
    v[1] = bx.makeOut("true");
    maxv = 1;
    op = "_commsend";
    //putinwin(v[1]);
    doGet();
}
function formXdelete(idin)
{
    fxidin = idin;
    nextop = "formXdelete2();";
    openDelBox("ARE YOU SURE YOU WANT TO DELETE THIS ITEM");
}
function formXdelete2()
{
    if(!nextopvar){return;}
    else
    {
        op = fxidin;
        maxv = 1;
        v[1] = val_bag.makeOut("true");
        doGet();
    }
}
function formXcancel(idin)
{
    return;
}
function fxOnly(s,which)
{
    var r = "";
    var Lst = "";
    var j;
    s = trim(s);
    if (s.length == 0){return s;}
    for (j = 0; j < s.length; j++) { if (s.charCodeAt(j) == 39) { r += "`"; } else { r += s.charAt(j); } }
    s = r;
    r = "";
    switch (which)
    {
        case "alist":
            Lst = "-`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            break;
        case ("dlist"):
            Lst = "0123456789/index.html";
            break;
        case "elist":
            Lst = "+-.0123456789_abcdefghijklmnopqrstuvwxyz";
            break;
        case "plist":
            Lst = " -_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            break;
        case "hlist":
            Lst = " -_<>=.,0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`";
            break;
        case "nlist":
            Lst = "\n\r -_=.,0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ()*:;`";
            break;
        case "domlist":
            Lst = "._-0123456789abcdefghijklmnopqrstuvwxyz";
            break;
        case ("nums"):
            Lst = "0123456789";
            break;
        case ("numsdot"):
            Lst = ".0123456789";
            break;
        case ("tax"):
            Lst = "-0123456789";
            break;
    }
    for (j = 0; j < s.length; j++){if(Lst.indexOf(s.charAt(j)) >= 0){r += s.charAt(j);}}
    return r;
}
function formXver(idin)
{
    var ndx = (idin.substr(2));
        ndx = ndx/1;
    var nam = nam_list[ndx];
    var typ = type_list[ndx];
    var x = document.getElementById(nam);
    var v = x.value;
    v = trim(v);
    if (v == "") { putaway(v,nam,ndx);return; }
    
    //openMsgBox(" ndx=" + ndx + "\n nam=" + nam + "\n typ=" + typ);
    switch (typ)
    {
            case "email":
                fx_email(nam,ndx);
                break;
            case "url":
                fx_url(nam,ndx);
                break;
            case "plain":
                fx_plain(nam,ndx);
                break;
            case "numonly":
                fx_numonly(nam,ndx);
                break;
            case "dec2":
                fx_dec2(nam,ndx);
                break;
            case "phone":
                fx_phone(nam,ndx);
                break;
            case "zip":
                fx_zip(nam,ndx);
                break;
            case "name":
                fx_name(nam,ndx);
                break;
            case "loginame":
                fx_loginame(nam,ndx);
                break;
            case "texarea":
                fx_texarea(nam,ndx);
                break;
            case "check":
                fx_check(nam,ndx);
                break;
            case "option":
                fx_option(nam,ndx);
                break;
            case "yandn":
                fx_yandn(nam,ndx);
                break;
            case "date":
                fx_date(nam,ndx);
                break;
            case "9digits":
                fx_9digits(nam,ndx);
                break;
            case "taxid":
                fx_taxid(nam,ndx);
                break;
    }
    return;
}
function putaway(v,nam,ndx)
{
    if ( v.length == 0 && fx_req(ndx) )
    {
        liter(ndx,"red");
        openMsgBox("Required field must not be blank");  
        return;
    }
    if(v.length <= length_list[ndx])
    {
        var x = document.getElementById(nam);
        x.value = v;
        liter(ndx,"green");
        val_bag.put(nam,v);
        return;
    }  
    liter(ndx,"red");
    openMsgBox("Length must not exceed " + length_list[ndx]);  
}
function fx_email(nam,ndx)
{                
    var tld =["biz","cat","com","edu","gov","int","mil","net","org","pro","tel","aero","arpa","asia","coop","info","jobs","mobi","name","museum","travel"];
    var x = document.getElementById(nam);
    var v = x.value;
    v = v.toLowerCase();
    var a = v.lastIndexOf("@");
    if (a < 0){liter(ndx,"red");openMsgBox("Invalid Email address. Missing the @");return;}
    if (v.charAt(a-1) == "."){liter(ndx,"red");openMsgBox("Invalid Email address. Period before the @");return;}
    var add = fxOnly(v.substr(0,a),"elist");
    var dom = fxOnly(v.substr(a+1),"domlist");
    v = add + "@" + dom;
    // check for proper top level domain
    a = v.lastIndexOf(".");
    var t = v.substr(a + 1);
    var ok = false;
    var j;
    for(j = 0;j < tld.length;j++){if (tld[j] == t){ok = true;break;}}
    if (!ok){liter(ndx,"red");openMsgBox("Invalid Email address. Top Level Domain is not acceptable");return;}
    putaway(v,nam,ndx);
}
function fx_url(nam, ndx) {
    var tld = ["biz", "cat", "com", "edu", "gov", "int", "mil", "net", "org", "pro", "tel", "aero", "arpa", "asia", "coop", "info", "jobs", "mobi", "name", "museum", "travel"];
    var x = document.getElementById(nam);
    var v = x.value;
    v = v.toLowerCase();
    v = fxOnly(v, "domlist");
    // check for proper top level domain
    a = v.lastIndexOf(".");
    var t = v.substr(a + 1);
    var ok = false;
    var j;
    for (j = 0; j < tld.length; j++) { if (tld[j] == t) { ok = true; break; } }
    if (!ok) { liter(ndx, "red"); openMsgBox("Invalid URL. Top Level Domain is not acceptable"); return; }
    putaway(v, nam, ndx);
}
function fx_name(nam,ndx)
{
    var x = document.getElementById(nam);
    var v = x.value;
    v = fxOnly(v,"alist");
    x.value = v;
    putaway(v,nam,ndx);
}
function fx_date(nam,ndx)
{
    var x = document.getElementById(nam);
    var v = x.value;
    var slcnt = 0;
    var c,j;
    var mm = "";
    var dd = "";
    var yy = "";

    v = fxOnly(v, "dlist");
    var slcnt = 0;
    for (j = 0; j < v.length; j++) 
    {
        c = v.charAt(j);
        if(c == "index.html")  {slcnt++;continue;}
        if(slcnt == 0){mm += c;continue;}
        if(slcnt == 1){dd += c; continue;}
        if(slcnt == 2){yy += c; continue;}
    }
    if (slcnt != 2) { date_err(ndx); return; }
    if (mm < 1 || mm > 12) { date_err(ndx); return; }
    if (dd < 1 || dd > 31) { date_err(ndx); return; }
    if (yy < 2009 || dd > 2010) { date_err(ndx); return; }
    x.value = mm + "/" + dd + "/" + yy;
    putaway(v,nam,ndx);
}
function date_err(ndx) 
{
    liter(ndx, "red");
    openMsgBox("The date must be in the form of MM/DD/YYYY");
}
function fx_loginame(nam,ndx)
{
    var x = document.getElementById(nam);
    var y = x.value;
    y = y.toLowerCase();
    y = fxOnly(y,"alist");
    var typea = "assoc_login_name";
    var typeo = "owner_login_name";
    // check if this login_name exists for this type
    var bagx = new bag();
    // check type
    if (detail_type == "owner"){bagx.put("type",typeo);}
    else {bagx.put("type",typea);}
    bagx.put("value",y);
    bagx.put("pm_id","empty");
    op = "_checker";
    maxv = 1;
    v[1] = bagx.makeOut("true");
    //putinwin(v[1]);
    doGet();
    if (response == "OK")
    {
        x.value = v;putaway(y,nam,ndx);
    }
    else
    {
        liter(ndx,"red");
        openMsgBox("The Login Name currently is being used. Please choose a different one.");
    }
}
function fx_plain(nam,ndx)
{
    var x = document.getElementById(nam);              
    var v = x.value;
    v = fxOnly(v,"plist");
    putaway(v,nam,ndx);
}
function fx_numonly(nam,ndx)
{
    var x = document.getElementById(nam);
    var v = x.value;
    v = fxOnly(v,"nums");
    putaway(v,nam,ndx);
}
function fx_9digits(nam, ndx) 
{
    var x = document.getElementById(nam);
    var v = x.value;
    v = fxOnly(v, "nums");
    if (v.length != 9) { openMsgBox("Transfer Number must be 9 digits"); liter(ndx, "red"); return; }
    putaway(v, nam, ndx);
}
function fx_taxid(nam, ndx) {
    var x = document.getElementById(nam);
    var v = x.value;
    v = fxOnly(v, "tax");
    if (v.length == 10) {if(v.charAt(2) == "-"){putaway(v, nam, ndx);return;} }
    if (v.length == 11) { if (v.charAt(3) == "-" && v.charAt(6) == "-") { putaway(v, nam, ndx); return; } }
    openMsgBox("Tax Id Number must be either:<br />XXX-XX-XXXX for SSN or<br />XX-XXXXXXX for EIN."); 
    liter(ndx, "red"); 
    return;
}
function fx_dec2(nam,ndx)
{        
    var x = document.getElementById(nam);
    var v = x.value;
    var a = v.lastIndexOf(".");
    if (a < 0){v += ".00";}
    else {v += "00";}
    v = fxOnly(v,"numsdot");
    a = v.lastIndexOf(".");
    var b = v.substr(0,a);
    b = fxOnly(b,"nums");
    var f = v.substr(a+1,2);
    v = b + "." + f;
    putaway(v,nam,ndx);
}
function fx_phone(nam,ndx)
{
    var x = document.getElementById(nam);
    var v = x.value;
    v = fxOnly(v,"nums"); 
    if(v.length == 10){var vv = v.substr(0,3) + "-" + v.substr(3,3) + "-" + v.substr(6,4); putaway(vv,nam,ndx);return;} 
    liter(ndx,"red");
    openMsgBox("Phone number must be 10 digits");
}
function fx_zip(nam,ndx)
{
    var x = document.getElementById(nam);
    var v = x.value;
    v = fxOnly(v,"nums");
    var L = v.length;
    if (L == 5){x.value = v;putaway(v,nam,ndx);return;}
    else if(L == 9){var vv = v.substr(0,5)+"-" + v.substr(5,4);putaway(vv,nam,ndx);return;} 
    liter(ndx,"red");
    openMsgBox("Zip Code can be only 5 or 9 digits");
}
function fx_texarea(nam,ndx)
{
    var x = document.getElementById(nam);
    var v = x.value;
    var j = 0;
    var t = "";
    var p = "";
    var c = "";
    for (j = 0; j < v.length; j++) 
    {
        p = v.charAt(j);
        t = v.charCodeAt(j);
        if (t == 10) { p = "<br />"; }
        if (t == 39) { p = "`";}
        c += p; 
    }
    v = c;
    v = fxOnly(v, "hlist");
    putaway(v, nam, ndx);

}
function fx_yandn(nam,ndx)
{   
    var x = document.getElementById(nam);             
    var idx = x.selectedIndex;
    if (idx == 0)
    {
        if(fx_req(ndx))
        {
            liter(ndx,"red");
            openMsgBox("A selection is required");
        }
        return;
    }
    var v = x.options[idx].value;
    val_bag.put(nam,v);
    liter(ndx,"green");       
}
function fx_option(nam,ndx)
{   
    var x = document.getElementById(nam);                              
    var idx = x.selectedIndex;
    if (idx == 0)
    {
        if(fx_req(ndx))
        {
            liter(ndx,"red");
            openMsgBox("A selection is required");
        }
        return;
    }
    var v = x.options[idx].value;
    val_bag.put(nam,v);
    liter(ndx,"green");
}
function fx_check(nam,ndx)
{
    var x = document.getElementById(nam);                              
    if ( ! x.checked){val_bag.put(nam,"false");}
    if (x.checked) {val_bag.put(nam,"true");}
}
function liter(idin,color)
{
    var idn = "lite" + idin;
    lite_list[idin] = color;
    var x = document.getElementById(idn);
    x.src = "images/" + color + "lite.gif";
    return;
}
function get_fx_lite(ndx)
{
    if (type_list[ndx] == "check" || type_list[ndx] == "readonly") { return "white"; }
    var xn = "lite" + ndx;    
    var x = document.getElementById(xn);
    if (x.alt == "REQUIRED"){return "black";}
    return "white";
}
function fx_req(ndx)
{
    var xn = "lite" + ndx;    
    var x = document.getElementById(xn);
    if (x.alt == "REQUIRED"){return true;}
    return false;
}
function formXload()
{
    fx_new = false;
    var j,x,y,z;
    var typ, val, nam;
    var L = nam_list.length;
    var fxid = "";
    lite_list.length = 0;
    j = 0;
    for(j = 0; j < L; j++) {
        typ = type_list[j];
        nam = nam_list[j]; 
        x = document.getElementById(nam);
        val = val_bag.get(nam);
        val = trim(val);
        //alert(" val=" + val + "\n nam=" + nam + "\n typ=" + typ);
        if(typ == "check"){lite_list[j] = "white";}
        else{lite_list[j] = get_fx_lite(j);liter(j,lite_list[j]);}
        switch (typ)
        {
            //case "email":
            //    break;
            //case "plain":
            //    break;
            //case "numonly":
            //    break;
            //case "dec2":
            //    break;
            //case "phone":
            //    break;
            //case "name":
            //    break;
            //case "texarea":
            //    break;
            case "check":
                if(val == "" || val == "false"){x.checked = false;}
                if (val == "true"){x.checked = true;}
                break;
            case "option":
                y = x.options;
                var vv = "";
                if (val == "") { val = "0"; y[0].selected = true; x.selectedIndex = 0; }
                else 
                {
                    for (z = 1; z < y.length; z++)
                    {
                        vv = trim(y[z].value);
                        if (vv == val) { y[z].selected = true; x.selectedIndex = z; break; }
                    }
                }
                break;
            case "yandn":
                y = x.options;
                if(val == "" || val == "0"){y[0].selected = "selected";}
                if(val == "false"){y[2].selected = "selected";}
                if(val == "true") {y[1].selected = "selected";}
                break;
            default:
                //alert(x.id);
                x.value = val;
                break;
        }
    }
}



