/* 
	Master Object Literal for the site
	propeties
	
*/
/*
if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}

function typeOf(value) {
    var s = typeof value;
    if (s === 'object') {
        if (value) {
            if (value instanceof Array) {
                s = 'array';
            }
        } else {
            s = 'null';
        }
    }
    return s;
}


function typeOf(value) {
    var s = typeof value;
    if (s === 'object') {
        if (value) {
            if (typeof value.length === 'number' &&
                    !(value.propertyIsEnumerable('length')) &&
                    typeof value.splice === 'function') {
                s = 'array';
            }
        } else {
            s = 'null';
        }
    }
    return s;
}


function isEmpty(o) {
    var i, v;
    if (typeOf(o) === 'object') {
        for (i in o) {
            v = o[i];
            if (v !== undefined && typeOf(v) !== 'function') {
                return false;
            }
        }
    }
    return true;
}

String.prototype.entityify = function () {
    return this.replace(/&/g, "&amp;").replace(/</g,
        "&lt;").replace(/>/g, "&gt;");
};

String.prototype.quote = function () {
    var c, i, l = this.length, o = '"';
    for (i = 0; i < l; i += 1) {
        c = this.charAt(i);
        if (c >= ' ') {
            if (c === '\\' || c === '"') {
                o += '\\';
            }
            o += c;
        } else {
            switch (c) {
            case '\b':
                o += '\\b';
                break;
            case '\f':
                o += '\\f';
                break;
            case '\n':
                o += '\\n';
                break;
            case '\r':
                o += '\\r';
                break;
            case '\t':
                o += '\\t';
                break;
            default:
                c = c.charCodeAt();
                o += '\\u00' + Math.floor(c / 16).toString(16) +
                    (c % 16).toString(16);
            }
        }
    }
    return o + '"';
};

String.prototype.supplant = function (o) {
    return this.replace(/{([^{}]*)}/g,
        function (a, b) {
            var r = o[b];
            return typeof r === 'string' || typeof r === 'number' ? r : a;
        }
    );
};

String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g, "");
}; 
*/
var VFI = {
    userID: null,
    adminID: null,
    pro: null,
    scac: null,
    zipcode: null,
    loggedIn: false,
    emp_code: null,
    aid: null,
    validClick: null,
    depth: null,
    initial: false,
    counter: 0,
    fade: function (id) {
        var dom = document.getElementById(id),
            level = 1;

        function step() {
            var h = level.toString(16);
            dom.style.backgroundColor = '#FFFF' + h + h;
            if (level < 15) {
                level += 1;
                setTimeout(step, 100);
            }
        }
        if (dom !== null) {
            setTimeout(step, 100);
        }
    }, cookie: {}, rate: {}, user: {}, admin: {}, agent: {}, dummy: {}, pending: {}, history: {}, pendingNotes: {}, verdata: {}, required: {}, closeout: {}, error: {}, inspe: {}, applicant: {}, ez: {}, manager: {}, order: {}, temp: {}, m: {}, vas: {}, cmdty: [],
    url: '../common/ajaxSql.php'
};
VFI.setUrl = function (u) {
    VFI.url = u;
};
VFI.fetchDepth = function (d) {
    new Ajax.Request('code/getDepth.php', {
        method: 'post',
        parameters: {
            str: d
        }, onComplete: function (transport) {
            var response = transport.responseText || "no response text";
            VFI.depth = parseInt(reponse,10);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.vfiJson = function (sql, where) {
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.temp = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getRate = function (where) {
    var sql = "SELECT * FROM `rates` WHERE zipcode='" + VFI.zipcode + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            var response = transport.responseText;
            if (response !== "error") {
                VFI.rate = transport.responseText.evalJSON();
            } else {
                VFI.rate.zipcode = false;
            }
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getUser = function (where) {
    VFI.userID = YAHOO.util.Cookie.get("vfiInfo");
    if (VFI.userID === null || typeof(VFI.userID) === "undefined") {
        return false;
    } else {
        VFI.loggedIn = true;
    }
    var sql = "SELECT * FROM `users` WHERE id='" + VFI.userID + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.user = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getUserData = function (where, id) {
    VFI.userID = id;
    var sql = "SELECT * FROM `users` WHERE id='" + VFI.userID + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.user = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getAdmin = function (where) {
    VFI.adminID = YAHOO.util.Cookie.get("vfiAdmin", Number);
    if (VFI.adminID === null || typeof(VFI.adminID) === "undefined") {
        VFI.loggedIn = false;
        VFI.processWhere(where);
    } else {
        VFI.loggedIn = true;
    }
    var sql = "SELECT * FROM `admin` WHERE id='" + VFI.adminID + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.admin = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getCustomer = function (where) {
    var sql = "SELECT * FROM `users` WHERE id='" + VFI.userID + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.user = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getPending = function (where) {
    var sql = "SELECT * FROM `pending` WHERE pro='" + VFI.pro + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.pending = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getHistory = function (where) {
    var sql = "SELECT * FROM `pending_history` WHERE pro='" + VFI.pro + "'";
    sql += " AND done='1' LIMIT 1";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.history = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getEZ = function (where) {
    var sql = "SELECT * FROM `easyex` WHERE oc='" + VFI.oc + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.ez = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getApplicant = function (where, id) {
    var sql = "SELECT * FROM `apps` WHERE app_id='" + id + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.applicant = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getPendingNotes = function (where) {
    var sql = "SELECT * FROM `pending_notes` WHERE pro='" + VFI.pro + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            var response = transport.responseText;
            if (response !== "error") {
                VFI.pendingNotes = transport.responseText.evalJSON();
            } else {
                VFI.pendingNotes.error = true;
            }
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getCloseout = function (where) {
    var sql = "SELECT * FROM `closeouts` WHERE pro='" + VFI.pro + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            var response = transport.responseText;
            if (response !== "error") {
                VFI.closeout = transport.responseText.evalJSON();
            } else {
                VFI.closeout.error = true;
            }
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getAgent = function (where) {
    VFI.cookie = YAHOO.util.Cookie.getSubs("inspectorData");
    VFI.emp_code = VFI.cookie.emp_code;
    var sql = "SELECT * FROM `employ` WHERE emp_code='" + VFI.emp_code + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.agent = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getAgentSelect = function (where, id) {
    var sql = "SELECT * FROM `employ` WHERE emp_code='" + id + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.agent = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getAgentEntry = function (where) {
    VFI.emp_code = YAHOO.util.Cookie.get("vfiIID", Number);
    if (VFI.emp_code === null || typeof(VFI.emp_code) === "undefined") {
        parent.location = 'http://www.vfinspections.com';
    } else {
        VFI.loggedIn = true;
        VFI.agentID = VFI.emp_code;
    }
    var sql = "SELECT * FROM `employ` WHERE emp_code='" + VFI.emp_code + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.agent = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getDummy = function (where) {
    var sql = "SELECT * FROM `employ` WHERE emp_code='692'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.dummy = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getInspection = function (where) {
    var sql = "SELECT * FROM `inspections` WHERE pro='" + VFI.pro + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.inspe = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getInspectionData = function (where) {
    var sql = "SELECT * FROM `inspection_data` WHERE pro='" + VFI.pro + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.inspe = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getAgentData = function (where, emp_code) {
    var sql = "SELECT * FROM `employ` WHERE emp_code='" + emp_code + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.agent = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.getVersionData = function (where) {
    var sql = "SELECT * FROM `verdata` WHERE id='" + VFI.emp_code + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.verdata = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
};
VFI.setMultipleCheckboxes = function (what) {
    var boxes = $(what).select('input');
    boxes.each(function (box) {
        box.observe('click', function (b) {
            var checkedBoxes = $(what).select('input');
            var ulList = "";
            checkedBoxes.each(function (e) {
                if (e.checked) {
                    ulList += e.id + "~";
                }
            });
            if (ulList.length) {
                var last = ulList.substr(0, ulList.lastIndexOf("~"));
                VFI.setWhat(what, last);
            }
        });
    });
};
VFI.setSingle = function (what) {
    var boxes = $(what).select('input');
    id = null;
    boxes.each(function (b) {
        b.observe('click', function (w) {
            if (this.checked) {
                id = this.id;
                boxes.each(function (uncheck) {
                    if (uncheck.id !== id) {
                        uncheck.checked = false;
                    }
                });
            }
            VFI.setWhat(what, id);
        });
    });
};
VFI.setWhat = function (what, id) {
    alert(what + " " + id + " .setWhat Function not set");
};
VFI.processWhere = function (where) {
    switch (where) {
    case "loginRate":
        VFI.showRate();
        break;
    case "loginRemember":
        VFI.processRemember();
        break;
    case "optionsUser":
        VFI.setUser();
        break;
    case "optionsAgent":
        VFI.showAgent();
        break;
    case "status":
        VFI.well();
        break;
    }
};
VFI.formatPhone = function (p) {
    var a = p.replace(" ", "");
    var b = a.replace("(", "");
    var c = b.replace(")", "");
    var d = c.replace("-", "");
    var e = d.replace(".", "");
    var r = false;
    r = "(";
    var ini = e.substring(0, 3);
    r += ini + ") ";
    var st = e.substring(3, 6);
    r += st + "-";
    var end = e.substring(6, 10);
    r += end;
    return r;
};
VFI.stripPhone = function (p) {
    var a = p.replace(" ", "");
    var b = a.replace("(", "");
    var c = b.replace(")", "");
    var d = c.replace("-", "");
    var e = d.replace(".", "");
    return e;
};
VFI.echeck = function (str) {
    var at = "@";
    var dot = ".";
    var lat = str.indexOf(at);
    var lstr = str.length;
    var ldot = str.indexOf(dot);
    if (str.indexOf(at) === -1) {
        return false;
    }
    if (str.indexOf(at) === -1 || str.indexOf(at) === 0 || str.indexOf(at) === lstr) {
        return false;
    }
    if (str.indexOf(dot) === -1 || str.indexOf(dot) === 0 || str.indexOf(dot) === lstr) {
        return false;
    }
    if (str.indexOf(at, (lat + 1)) !== -1) {
        return false;
    }
    if (str.substring(lat - 1, lat) === dot || str.substring(lat + 1, lat + 2) === dot) {
        return false;
    }
    if (str.indexOf(dot, (lat + 2)) === -1) {
        return false;
    }
    if (str.indexOf(" ") !== -1) {
        return false;
    }
    return true;
};
VFI.MyUtil = {
    table: null,
    url: null,
    setURL: function (u) {
        this.url = u;
    }, setTable: function (table) {
        this.table = table;
        switch (table) {
        case 'pending':
            VFI.MyUtil.url = 'code/postPending.php';
            break;
        case 'inspection_data':
            VFI.MyUtil.url = 'code/postData.php';
            break;
        case 'cmdty':
            VFI.MyUtil.url = 'code/postCmty.php';
            break;
        }
    }, setData: function (element) {
        element = $(element);
        var table = element.readAttribute('table');
        if (element.type === "checkbox" || element.type === "button") {
            return false;
        } else {
            var url = new Ajax.Request(VFI.MyUtil.url, {
                method: 'post',
                parameters: {
                    pro: VFI.pro,
                    field: element.id,
                    data: element.value,
                    table: table
                }, onComplete: function (transport) {
                    response = transport.responseText;
                    if (transport.responseText !== 'vfi') {
                        alert(response);
                    }
                }, onFailure: function () {
                    alert('Something went wrong...');
                }
            });
        }
    }, setEmploy: function (element) {
        element = $(element);
        var table = element.readAttribute('table');
        if (element.type === "checkbox" || element.type === "button") {
            return false;
        } else {
            new Ajax.Request(VFI.MyUtil.url, {
                method: 'post',
                parameters: {
                    emp_code: VFI.emp_code,
                    field: element.id,
                    data: element.value
                }, onComplete: function (transport) {
                    response = transport.responseText;
                    if (transport.responseText !== 'vfi') {
                        alert(response);
                    }
                }, onFailure: function () {
                    alert('Something went wrong...');
                }
            });
        }
    }, setUser: function (element) {
        element = $(element);
        if (element.type === "checkbox" || element.type === "button") {
            return false;
        } else {
            new Ajax.Request(VFI.MyUtil.url, {
                method: 'post',
                parameters: {
                    id: VFI.userID,
                    field: element.id,
                    data: element.value
                }, onComplete: function (transport) {
                    response = transport.responseText;
                    if (transport.responseText !== 'vfi') {
                        alert(response);
                    }
                }, onFailure: function () {
                    alert('Something went wrong...');
                }
            });
        }
    }, setCloseout: function (element) {
        element = $(element);
        if (element.type === "checkbox" || element.type === "button") {
            return false;
        } else {
            new Ajax.Request(VFI.MyUtil.url, {
                method: 'post',
                parameters: {
                    pro: VFI.pro,
                    field: element.id,
                    data: element.value
                }, onComplete: function (transport) {
                    response = transport.responseText;
                    if (transport.responseText !== 'vfi') {
                        alert(response);
                    }
                }, onFailure: function () {
                    alert('Something went wrong...');
                }
            });
        }
    }
};
Element.addMethods(VFI.MyUtil);
Event.observe(window, 'load', function () {
    $$("input").each(function (elmt) {
        elmt.onfocus = function () {
            (VFI.fade(elmt.id));
        };
    });
    $$("textarea").each(function (elmt) {
        elmt.onfocus = function () {
            (VFI.fade(elmt.id));
        };
    });
});
if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}
VFI.err = {
    checkReq: function (what, setAlert) {
        var c = $(what).select('input');
        var a = null;
        var m = null;
        var w = null;
        c.each(function (e) {
            a = e.readAttribute('attr');
            if (a === 'req') {
                m = e.id + "_output";
                if (e.value.length === 0) {
                    if (setAlert) {
                        alert(e.readAttribute('what') + ' is required, thank you.');
                    }
                    $(m).removeClassName('noDisplay');
                    $(m).addClassName('red');
                    e.activate();
                    throw $break;
                } else {
                    $(m).addClassName('noDisplay');
                }
            }
        });
    }
};
VFI.getManager = function (where, mid) {
    var sql = "SELECT * FROM `managers` WHERE manager_id='" + mid + "'";
    new Ajax.Request(VFI.url, {
        method: 'post',
        parameters: {
            sql: sql
        }, onComplete: function (transport) {
            VFI.manager = transport.responseText.evalJSON();
            VFI.processWhere(where);
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
}; /* Forms */
VFI.forms = {
    form: null,
    table: null,
    index: null,
    key: null,
    callBackUrl: '../common/callBack.php'
};
VFI.forms.createForm = function (o) {
    var m = '<dl>';
    var l = null;
    var s = null;
    for (var i in o) {
        // Check that it’s NOT a function
        if (!(o[i] instanceof Function)) {
            l = o[i].length;
            s = l + 1;
            m += '<dt>' + i;
            if (l <= 40) {
                m += '<dd><input type="text" id="' + i + '"';
                m += ' name="' + i + '"';
                m += ' value="' + o[i] + '" size="' + s + '" /></dd></dt>';
            } else {
                m += '<dd><textarea id="' + i + '"';
                m += ' name="' + i + '"';
                m += '" cols="40" rows="10">' + o[i] + '</textarea></dd></dt>';
            }
        }
    }
    m += '</dl>';
    return m;
};
VFI.forms.setCallBack = function () {
    var form = $(VFI.forms.form);
    var i = form.getElements();
    var s = '';
    i.each(function (e) {
        $(e.id).on("keyup", function (event) {
            VFI.forms.update(this.id);
        });
    });
};
VFI.forms.setURL = function(u){
	VFI.forms.callBackUrl = u;
};
VFI.forms.update = function (id) {
    var value = $F(id);
    new Ajax.Request(VFI.forms.callBackUrl, {
        method: 'post',
        parameters: {
            table: VFI.forms.table,
            field: id,
            value: value,
            index: VFI.forms.index,
            key: VFI.forms.key,
            type: $(id).type
        }, onSuccess: function (transport) {
            var response = transport.responseText || "no response text";
            if (response !== 'vfi') {
                alert(response);
            }
        }, onFailure: function () {
            alert('Something went wrong...');
        }
    });
}; /* end forms */

/*
	Utility Functions
*/
/*
VFI.getArgs = function () {
    var args = new Object();
    var query = location.search.substring(1);
    var pairs = query.split("&");
    for (var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');
        if (pos == -1) continue;
        var argname = pairs[i].substring(0, pos);
        var value = pairs[i].substring(pos + 1);
        value = decodeURIComponent(value);
        args[argname] = value;
    }
    return args;
};
VFI.setArgs = function () {
    var args = VFI.getArgs();
    var q = args.q || "";
    var n = args.n ? parseInt(args.n) : 10;
    // VFI.pro=args.pro;
    // alert(VFI.pro);
};

function reverseString(s) {
    var y = s.toString();
    var i = (y.length) - 1;
    var c = "";
    var str = '';
    for (var x = i; x >= 0; x -= 1) {
        c = parseInt(y.charAt(x), 10);
        if (c) {
            str += (y.charAt(x));
        }
    }
    return str;
}
*/