﻿function checkForCookies() {
    cellDisplay("cookieLoad", (document.cookie != "" && document.cookie != null));
}

function prepareToEatCookie() {
    var x = document.cookie;
    if(x.indexOf("pwd=") > 0) {
        cellDisplay("password", true);
        cellDisplay("clear", true);
        cellDisplay("go", false);
        cellDisplay("pwd2", false);
        cellDisplay("pwdMatch", false);
        cellDisplay("forgot", true);
    } else {
        eatCookie();
    }
}

function eatCookie() {
    if(confirm("Are you sure you want to delete the saved information?")) {
        document.cookie = "values=;expires=Thu, 01-Jan-1970 00:00:01 GMT;";
        document.cookie = "perm=;expires=Thu, 01-Jan-1970 00:00:01 GMT";
        cellDisplay("cookieLoad", false);
    }
}

function writeCookie(temp) {
    var ck = "";
    if(temp != "")
        if(temp.substr(0, 1) == "¡")
            temp = temp.substr(1);

        ck += "values=" + temp + ";expires=" + cookieExpire.toString();
/*    if(temp != "" && perm != "")
        ck += ";";
    if(perm != "")
        ck += "perm=" + perm + ";expires=" + cookiePerm.toString(); */
    document.cookie = ck;
    alert("Your information has been saved.");
}

function saveInformationToCookie() {
    var x, elementId, cellNum;
    var maritalStatus = getElement("maritalStatus");
    var temp = "";
    var pwd = getElement("pwd1");
    x = getElement("filerNameInput0");
    if(x == "") {
        alert("Please fill in your name on the filing status tab.  This information will help identify you when you retrieve the information.");
        return;
    }
    if(document.cookie != "" && document.cookie != null)
        if(!confirm("Do you want to overwrite the existing saved cookie?")) return;

    document.cookie = "test=pass"

    if(document.cookie == "" || document.cookie == null) {
        alert("Your have disabled cookies; your information cannot be saved.");
        return;
    }

    if(pwd != "" && pwd == getElement("pwd2"))
        temp += "pwd=" + encryptDecrypt(pwd, true) + "¡";
    x = getElement("filerNameInput0");
    temp += "filerNameInput0=" + encryptDecrypt(x, true) + "¡";
    if(maritalStatus == "married1") {
        x = getElement("filerNameInput1");
        temp += "filerNameInput1=" + encryptDecrypt(x, true) + "¡";
    }
    temp += "maritalStatus=" + encryptDecrypt(maritalStatus, true) + "¡";
    temp += "canBeClaimed0=" + encryptDecrypt(getElement("canBeClaimed0"), true) + "¡";
    temp += "blind0=" + encryptDecrypt(getElement("blind0"), true) + "¡";
    temp += "age0=" + encryptDecrypt(getElement("age0"), true) + "¡";
    temp += "residency0=" + encryptDecrypt(getElement("residency0"), true) + "¡";
    temp += "zip=" + encryptDecrypt(getElement("zip"), true) + "¡";
    temp += "state=" + encryptDecrypt(getElement("state"), true) + "¡";
    x = getElement("propTax");
    if(x != "") temp += "propTax=" + encryptDecrypt(x, true) + "¡";
    if(maritalStatus == "married1") {
        temp += "canBeClaimed1=" + encryptDecrypt(getElement("canBeClaimed1"), true) + "¡";
        temp += "blind1=" + encryptDecrypt(getElement("blind1"), true) + "¡";
        temp += "age1=" + encryptDecrypt(getElement("age1"), true) + "¡";
        temp += "residency1=" + encryptDecrypt(getElement("residency1"), true) + "¡";
    }
    for(var i=0; i < document.forms[0].elements.length; i++) {
        elementId = document.forms[0].elements[i].id;
        cellNum = elementId.substr(1, 2);
        if(elementId.substr(0, 1) == "n" && isNaN(cellNum) == false) {
            if(elementId.indexOf("SSN") == -1) {
                x = (getElement(elementId)).toString();
                if(x != "" && (isNaN(x) == true || parseFloat(x) != 0)) {
                    x = encryptDecrypt(x, true);
                    if(temp.length + x.length + elementId.length > 4049) {
                        writeCookie(temp);
                        return;
                    }
                    temp += elementId + "=" + x + "¡";
                }
            }
        }
    }
    writeCookie(temp);
    return;
}

function createPassword() {
    cellDisplay("password", true);
    cellDisplay("password2", true);
    cellDisplay("pwd2", true);
    cellDisplay("pwdMatch", false);
    cellDisplay("clear", false);
    cellDisplay("go", false);
    cellDisplay("forgot", false);
    cellDisplay("questions", false);
}

function prepareToReadCookie() {
    var x = document.cookie;
    if(x.indexOf("pwd=") > 0) {
        cellDisplay("password", true);
        cellDisplay("go", true);
        cellDisplay("pwd2", false);
        cellDisplay("pwdMatch", false);
        cellDisplay("forgot", true);
    } else {
        readCookie();
    }
}

function readCookie() {
    var x = document.cookie.replace("values=", "¡");//.replace("perm=", "¡");      //Strip off values=
    x = x.split("¡");
    var y = new Array();
    var pos;
    var W2read = "";
    var intRead = "";
    var UERead = "";
    var SSRead = "";
    var divRead = "";
    var dedRead = "";
    var depRead = "";
    var bMarried = false;
    //for(var i = 0; i < x.length; i++) if(x[i].substr(0, 2) == "n1") alert(x[i]);
    for(var i = 0; i < x.length; i++) {
        pos = x[i].indexOf("=");
        if(pos > 0) {
            y.length = 0;
            y.push(x[i].substr(0, pos));
            y.push(x[i].substr(pos + 1));
            y[1] = encryptDecrypt(y[1], false);
            if(y[0] == "pwd" || y[0] == "¡pwd") {
                if(getElement("pwd1") != y[1]) {
                    alert("Incorrect password");
                    return;
                } else {
                    setElement("pwd1", y[1]);
                    setElement("pwd2", y[1]);
                }
            } else setElement(y[0], y[1]);
            switch(y[0]) {
                case "maritalStatus": msChange(); bMarried = (y[1] == "married1"); break;
                case "propTax": setElement("ownHome", "Yes"); homeOwnChange(); break;
                case "canBeClaimed0": claimChange(0); cellSaveFiler("primary", false); break;
                case "canBeClaimed1": claimChange(1); cellSaveFiler("spouse", false); break;
                case "filerNameInput0": cellSaveFiler("primary", false); break;
                case "filerNameInput1": cellSaveFiler("spouse", false); break;
            }
            if(y[0].substr(0, 2) == "n0") { //Restore a W2
                if(W2read.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(W2read.length != 0) pos = W2read.length / 3;
                    W2read += (y[0].substr(0, 3));
                }
                pos = W2read.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n0" + pos + "name"))
                    createW2Cell("W2Entry" + pos, "0" + pos);
                setElement("n0" + pos + y[0].substr(3), y[1]);
                cellSaveW2("W2Entry" + pos, false);
            }
            if(y[0].substr(0, 2) == "n1") { //Restore interest
                if(intRead.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(intRead.length != 0) pos = intRead.length / 3;
                    intRead += (y[0].substr(0, 3));
                }
                pos = intRead.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n1" + pos + "name"))
                    createIntCell("intEntry" + pos, "1" + pos);
                setElement("n1" + pos + y[0].substr(3), y[1]);
                cellSaveInt("intEntry" + pos, false);
            }
            if(y[0].substr(0, 2) == "n2") { //Restore unemployment
                if(UERead.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(UERead.length != 0) pos = UERead.length / 3;
                    UERead += (y[0].substr(0, 3));
                }
                pos = UERead.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n2" + pos + "name"))
                    createUECell("ueEntry" + pos, "2" + pos);
                setElement("n2" + pos + y[0].substr(3), y[1]);
                cellSaveUE("ueEntry" + pos, false);
            }
            if(y[0].substr(0, 2) == "n3") { //Restore dividend
                if(divRead.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(divRead.length != 0) pos = divRead.length / 3;
                    divRead += (y[0].substr(0, 3));
                }
                pos = divRead.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n3" + pos + "name"))
                    createDividendCell("divEntry" + pos, "3" + pos);
                setElement("n3" + pos + y[0].substr(3), y[1]);
                cellSaveDiv("divEntry" + pos, false);
            }
            if(y[0].substr(0, 2) == "n4") { //Restore deduction
                if(dedRead.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(dedRead.length != 0) pos = dedRead.length / 3;
                    dedRead += (y[0].substr(0, 3));
                }
                pos = dedRead.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n4" + pos + IRALine[0]) && 
                    !document.getElementById("n4" + pos + studentLine[0]) && 
                    !document.getElementById("n4" + pos + educatorLine[0]) &&
                    !document.getElementById("n4" + pos + tuitionLine[0]))
                    createDeductionCell("deductEntry" + pos, "4" + pos);
                setElement("n4" + pos + y[0].substr(3), y[1]);
                cellSaveDeduct("deductEntry" + pos, false);
            }
            if(y[0].substr(0, 2) == "n5") { //Restore dependent
                if(depRead.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(depRead.length != 0) pos = divRead.length / 3;
                    depRead += (y[0].substr(0, 3));
                }
                pos = depRead.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n5" + pos + "name"))
                    createDependentCell("dependentEntry" + pos, "5" + pos);
                setElement("n5" + pos + y[0].substr(3), y[1]);
                cellSaveDependent("dependentEntry" + pos, false);
            }
            if(y[0].substr(0, 2) == "n6") { //Restore soc. sec.
                if(SSRead.indexOf(y[0].substr(0, 3)) == -1) {    //None of these values has been read yet
                    if(SSRead.length != 0) pos = SSRead.length / 3;
                    SSRead += (y[0].substr(0, 3));
                }
                pos = SSRead.indexOf(y[0].substr(0, 3)) / 3;
                if(!document.getElementById("n6" + pos + "type"))
                    createSSCell("ssEntry" + pos, "6" + pos);
                setElement("n6" + pos + y[0].substr(3), y[1]);
                cellSaveSS("ssEntry" + pos, false);
            }
        }
        cellSaveFiler("primary", false);
        if(bMarried) cellSaveFiler("spouse", false);
    }
    cellDisplay("password", false);
    alert("Your information has been restored.");
}

function forgotPassword() {
    var q = new Array();
    var a = new Array();
    var inc = new Array();
    var pos;
    var x = document.cookie.replace("values=", "¡");
    var y = new Array();
    x = x.split("¡");
    for(var i = 0; i < x.length; i++) {
        pos = x[i].indexOf("=");
        if(pos > 0) {
            y.length = 0;
            y.push(x[i].substr(0, pos));
            y.push(x[i].substr(pos + 1));
            y[1] = encryptDecrypt(y[1], false);
            switch(y[0]) {
                case "filerNameInput0":
                    q.push("What did you list as the primary taxpayer's name?");
                    a.push("fïlér" + y[1] + "fïlér");
                    break;
                case "filerNameInput1":
                    q.push("What did you list as the spouse's name?");
                    a.push("spôüsé" + y[1] + "spôüsé");
                    break;
            }
        }
    }
    for(var i = 0; i < x.length; i++) {
        pos = x[i].indexOf("=");
        if(pos > 0) {
            y.length = 0;
            y.push(x[i].substr(0, pos));
            y.push(x[i].substr(pos + 1));
            y[1] = encryptDecrypt(y[1], false);
            if(y[0].indexOf("name") > 0) {
                if(y[0].indexOf("n0") == 0) {
                    q.push("Name one of your employers");
                    a.push("émplôÿér" + y[1] + "émplôÿér");
                } else if(y[0].indexOf("n5") == 0) {
                    q.push("Name one of your dependents");
                    a.push("dépéñdéñt" + y[1] + "dépéñdéñt");
                }
            } else if(y[0].indexOf(W2Line[0]) > 0 && y[0].substr(0, 1) == "n") {
                inc.push(y[1]);
            }
        }
    }
    if(q.length < 3) {
        var ql = q.length;
        for(var i = ql; i < ql + inc.length; i++) {
            q.push("What amount of wages did you list on one of your W-2s?");
            a.push("wâgés" + inc[i-ql] + "wâgés");
        }
    }
    var allAns = "";
    for (var i = 0; i < q.length; i++) {
        if(i < 3) {
            cellDisplay("qr" + (i+1), true);
            setElement("q" + (i+1), q[i]);
        }
        allAns += (a[i] + " ");
    }
    setElement("allAnswers", allAns);
    cellDisplay("questions", true);
}

function checkAnswers() {
    var correctAnswers = 0, wrongAnswers = 0, answer;
    var allAns = getElement("allAnswers").toLowerCase();
    for(var i = 1; i <= 3; i++) {
        if(document.getElementById("qr" + i).style.display == "") {
            question = getElement("q" + i);
            answer = getElement("a" + i).toLowerCase();
            if(question.indexOf("primary") != -1) answer = "fïlér" + answer + "fïlér";
            else if(question.indexOf("spouse") != -1) answer = "spôüsé" + answer + "spôüsé";
            else if(question.indexOf("employer") != -1) answer = "émplôÿér" + answer + "émplôÿér";
            else if(question.indexOf("dependent") != -1) answer = "dépéñdéñt" + answer + "dépéñdéñt";
            else if(question.indexOf("wages") != -1) answer = "wâgés" + answer + "wâgés";
            if(allAns.indexOf(answer) > -1) correctAnswers++;
            else wrongAnswers++;
        }
    }
    if(correctAnswers > wrongAnswers) {
        document.cookie = document.cookie.replace("pwd=", "");
        readCookie();
        setElement("pwd1", "");
        setElement("pwd2", "");
    } else alert("Sorry, those answers are not correct");
}
function displayCookie() {
    setElement("cookieShow", document.cookie);
    cellDisplay("cookieShow", true);
}