Date.prototype.getWeek = function() {
    var determinedate = new Date();
    determinedate.setFullYear(this.getFullYear(), this.getMonth(), this.getDate());
    var D = determinedate.getDay();
    if (D == 0) D = 7;
    determinedate.setDate(determinedate.getDate() + (4 - D));
    var YN = determinedate.getFullYear();
    var ZBDoCY = Math.floor((determinedate.getTime() - new Date(YN, 0, 1, -6)) / 86400000);
    var WN = 1 + Math.floor(ZBDoCY / 7) - 1;
    return WN + 1;
};

//noinspection FunctionWithInconsistentReturnsJS
function getWeekAndDate(d) {
    var currentTime = new Date();
    if (d == 2)
        currentTime.setDate(currentTime.getDate() + 7);
    if (d == 3)
        currentTime.setDate(currentTime.getDate() + 14);
    if (d == 4)
        currentTime.setDate(currentTime.getDate() + 21);

    var month = currentTime.getMonth() + 1;

    if (month == "1")
        return "Januari v." + currentTime.getWeek();
    if (month == "2")
        return "Februari v." + currentTime.getWeek();
    if (month == "3")
        return "Mars v." + currentTime.getWeek();
    if (month == "4")
        return "April v." + currentTime.getWeek();
    if (month == "5")
        return "Maj v." + currentTime.getWeek();
    if (month == "6")
        return "Juni v." + currentTime.getWeek();
    if (month == "7")
        return "Juli v." + currentTime.getWeek();
    if (month == "8")
        return "Augusti v." + currentTime.getWeek();
    if (month == "9")
        return "September v." + currentTime.getWeek();
    if (month == "10")
        return "Oktober v." + currentTime.getWeek();
    if (month == "11")
        return "November v." + currentTime.getWeek();
    if (month == "12")
        return "December v." + currentTime.getWeek();

}

YAHOO.util.Event.onDOMReady(function () {
    var month = getWeekAndDate(1);
    var month2 = getWeekAndDate(2);
    var month3 = getWeekAndDate(3);
    var month4 = getWeekAndDate(4);

    document.getElementById('week_presentation1').innerHTML = month;
    document.getElementById('week_presentation2').innerHTML = month2;


    document.getElementById('page1').style.display = 'block';
    document.getElementById('page2').style.display = 'none';
    document.getElementById('page3').style.display = 'none';
    document.getElementById('page4').style.display = 'none';

    var currentPage = 1;
    document.getElementById('earliertimes').src = getBaseURL() + 'wwwExternal/images/knapp_tidigare_faded.gif';

    var handlePagination = function () {
        document.getElementById('page1').style.display = 'none';
        document.getElementById('page2').style.display = 'none';
        document.getElementById('page3').style.display = 'none';
        document.getElementById('page4').style.display = 'none';
        document.getElementById('page' + currentPage).style.display = 'block';
    };

    function browseTimes(e) {
        month = getWeekAndDate(1);
        month2 = getWeekAndDate(2);

        month3 = getWeekAndDate(3);
        month4 = getWeekAndDate(4);


        if (this.id == "earliertimes" && currentPage > 1) {
            currentPage = currentPage - 1;
            handlePagination();
        }
        else if (this.id == "latertimes" && currentPage < 4) {
            currentPage = currentPage + 1;
            handlePagination();
        }

        if (currentPage == 2) {
            document.getElementById('week_presentation3').innerHTML = month3;
            document.getElementById('week_presentation4').innerHTML = month4;
        }

        var tmp;
        if (currentPage == 4) {
            tmp = getBaseURL() + 'wwwExternal/images/knapp_senare_faded.gif';
            document.getElementById('latertimes').src = tmp;
        }
        else {
            tmp = getBaseURL() + 'wwwExternal/images/knapp_senare.gif';
            document.getElementById('latertimes').src = tmp;
        }

        if (currentPage == 1) {

            document.getElementById('week_presentation1').innerHTML = month;
            document.getElementById('week_presentation2').innerHTML = month2;
            tmp = getBaseURL() + 'wwwExternal/images/knapp_tidigare_faded.gif';
            document.getElementById('earliertimes').src = tmp;
        }
        else {

            document.getElementById('week_presentation3').innerHTML = month3;
            document.getElementById('week_presentation4').innerHTML = month4;

            // document.getElementById('earliertimes').style.visibility =
            // 'visible';
            tmp = getBaseURL() + 'wwwExternal/images/knapp_tidigare.gif';
            document.getElementById('earliertimes').src = tmp;
        }

    }

    ids = ['earliertimes', 'latertimes'];
    YAHOO.util.Event.addListener(ids, 'click', browseTimes, true);

});

function loggedIn() {
    if (document.getElementById('book_status_loggedin').value == "1")
        return 1;
    else
        return 0;
}

function PopUpTime(div, width) {
    var dial = '';


    this.load = function() {
        dial = new YAHOO.widget.Panel(div,
        { width: width, // 700px
            fixedcenter: true,
            close: true,
            draggable: true,
            modal: false,
            visible: false,
            iframe:true,
            underlay: false
        }
                );

    };

    this.getPanel = function() {
        return dial;
    };

    // Show the Panel
    this.show = function() {
        dial.render(document.body);
        dial.show();
    };

    this.hide = function() {
        dial.hide();
    };


    var Event = YAHOO.util.Event;
    Event.onDOMReady(this.load);
}


var onClickTimeEvent = function(dt, ev) {

    // unselect all cells in all weeks
    timeList[0].list.getDataTable().unselectAllCells();
    timeList[1].list.getDataTable().unselectAllCells();
    timeList[2].list.getDataTable().unselectAllCells();
    timeList[3].list.getDataTable().unselectAllCells();

    var record = dt.getRecord(ev.target);
    var col = dt.getColumn(ev.target);
    var colName = col.getKey();

    selBtKey = record.getData('btKey_' + colName);
    suggKey = record.getData('key_' + colName);
    locKey = record.getData('lguid_' + colName);

    if (selBtKey) {
        if (loggedIn()) {
            // wizardBook.show();
            wizardBookLoggedin.show();
        }
        else {
            wizardBook.show();
        }
        dt.onEventSelectCell(ev);
    }


    var tmpobj = document.getElementById('wiztime');
    tmpobj.innerHTML = record.getData('maintext_' + colName);

    tmpobj = document.getElementById('wizservice');
    tmpobj.innerHTML = record.getData('btName_' + colName);

    tmpobj = document.getElementById('wizstore');
    tmpobj.innerHTML = record.getData('location_' + colName);

    if (record.getData('location_' + colName).indexOf("Johanneberg") != -1) {
        document.getElementById("tb_store_img").src = "http://www.hendens.se/wwwExternal/images/stores/johanneberg.jpg";
    }
    else if (record.getData('location_' + colName).indexOf("lunda") != -1) {
        document.getElementById("tb_store_img").src = "http://www.hendens.se/wwwExternal/images/stores/frolunda.jpg";
    }
    else if (record.getData('location_' + colName).indexOf("Kungsbacka") != -1) {
        document.getElementById("tb_store_img").src = "http://www.hendens.se/wwwExternal/images/stores/kungsbacka.jpg";
    }
};

function getnewdate(days) {
    var now = new Date();
    var daylength = 24 * 60 * 60 * 1000;
    return new Date(now * 1 + daylength * days);
}

function configureResource(obj) {
    obj.onClickCellFunc = onClickTimeEvent;

    // datatable variables only the first three, set the others in addfields
    var weekDays = 0;
    var d = new Date();
    var now = new Date();
    var calDate = new Array();

    if (obj.nWeek == 2) {
        weekDays = 7;
    }

    var dt;
    var ph = 0;
    for (i = 0; i < 7; i++) {

        //d = getnewdate(i+weekDays);
        // days from monday
        dFromMon = i - now.getDay();

        d = getnewdate(dFromMon);

        if (obj.nWeek == 2)
            d = getnewdate(dFromMon + 7);
        if (obj.nWeek == 3)
            d = getnewdate(dFromMon + 14);
        if (obj.nWeek == 4)
            d = getnewdate(dFromMon + 21);

        calDate[i] = d.getDate();

        if (d.getDay() == 0)
            calDate[i] += " Sön.";
        if (d.getDay() == 1)
            calDate[i] += " Mån.";
        if (d.getDay() == 2)
            calDate[i] += " Tis.";
        if (d.getDay() == 3)
            calDate[i] += " Ons.";
        if (d.getDay() == 4)
            calDate[i] += " Tors.";
        if (d.getDay() == 5)
            calDate[i] += " Fre.";
        if (d.getDay() == 6)
            calDate[i] += " Lör.";
        ph++;
    }

    obj.dataAddColumnsFirst = [
        {
            key:"timelabel",
            label:"",
            sortable:false,
            resizeable:false
        }
    ];
    obj.dataAddFieldsFirst = [
        {
            key:"timelabel",
            label:"",
            sortable:false,
            resizeable:false
        }
    ];


    obj.dataAddColumns = [
        {
            key:"dfour",
            label:calDate[4],
            sortable:false,
            resizeable:false
        },
        {
            key:"dfive",
            label:calDate[5],
            sortable:false,
            resizeable:false
        },
        {
            key:"dsix",
            label:calDate[6],
            sortable:false,
            resizeable:false
        }
    ];

    obj.dataAddFields = [
        {
            key:"dfour",
            label:calDate[4],
            sortable:false,
            resizeable:false
        },
        {
            key:"dfive",
            label:calDate[5],
            sortable:false,
            resizeable:false
        },
        {
            key:"dsix",
            label:calDate[6],
            sortable:false,
            resizeable:false
        },

        {
            key:"key_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"date_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"maintext_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"optGUID_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"btName_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"btKey_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"location_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"roomGUID_id",
            sortable:false,
            resizeable:false
        },
        {
            key:"lguid_id",
            sortable:false,
            resizeable:false
        },


        {
            key:"key_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"date_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"maintext_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"optGUID_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"btName_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"btKey_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"location_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"roomGUID_name",
            sortable:false,
            resizeable:false
        },
        {
            key:"lguid_name",
            sortable:false,
            resizeable:false
        },

        {
            key:"key_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"date_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"maintext_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"optGUID_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"btName_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"btKey_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"location_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"roomGUID_description",
            sortable:false,
            resizeable:false
        },
        {
            key:"lguid_description",
            sortable:false,
            resizeable:false
        },


        {
            key:"key_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"date_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"maintext_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"optGUID_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"btName_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"btKey_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"location_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"roomGUID_dfour",
            sortable:false,
            resizeable:false
        },
        {
            key:"lguid_dfour",
            sortable:false,
            resizeable:false
        },


        {
            key:"key_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"date_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"maintext_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"optGUID_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"btName_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"btKey_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"location_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"roomGUID_dfive",
            sortable:false,
            resizeable:false
        },
        {
            key:"lguid_dfive",
            sortable:false,
            resizeable:false
        },


        {
            key:"key_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"date_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"maintext_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"optGUID_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"btName_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"btKey_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"location_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"roomGUID_dsix",
            sortable:false,
            resizeable:false
        },
        {
            key:"lguid_dsix",
            sortable:false,
            resizeable:false
        }

    ];

    obj.dataColumnLabels = [calDate[1], calDate[2], calDate[3]];
    obj.dataTableCaption = '';
    obj.dataTableCell = 1;

    var serviceId = get("serviceId");
    var storeId = get("store");

    obj.conXMLURL = getBaseURL() + 'index.php?GetSchedXML&serviceId=' + serviceId + "&store=" + storeId;

    obj.conAddURL = getBaseURL() + 'admin.php?AddResource';
    obj.conDeleteURL = getBaseURL() + 'admin.php?DeleteResource';

    // buttons
    obj.addBtnId = 'addBtn';
    obj.removeBtnId = 'removeBtn';

    // textareas
    obj.res_id = 'res_id';
    obj.res_name = 'res_name';
    obj.res_description = 'res_description';

    obj.dt_msg_empty = "Hämtar tider...";
    obj.dt_msg_loading = "Hämtar tider...";
    obj.dt_msg_error = "Ett fel inträffade. Kontakta info@hendens.se om felet kvarstår.";


}

//noinspection FunctionWithInconsistentReturnsJS
function get(name) {
    if (name = (new RegExp('[?&]' + encodeURIComponent(name) + '=([^&]*)')).exec(location.search))
        return decodeURIComponent(name[1]);
}

// selected "global" variables
var selBtKey = 0;
var suggKey = 0;
var locKey = 0;


var timeList = new Array();

// WeekOne
var weekOne = new YConfigTable();
configureResource(weekOne);

weekOne.listDiv = 'week_one';
weekOne.dataTableCaption = '';
weekOne.nWeek = 1;

timeList[0] = new Resource(weekOne);


// Week Two
var weekTwo = new YConfigTable();
weekTwo.nWeek = 2;

configureResource(weekTwo);
weekTwo.listDiv = 'week_two';
weekTwo.dataTableCaption = '';

timeList[1] = new Resource(weekTwo);

// Week Three
var weekThree = new YConfigTable();
weekThree.nWeek = 3;

configureResource(weekThree);
weekThree.listDiv = 'week_three';
weekThree.dataTableCaption = '';

timeList[2] = new Resource(weekThree);


// Week Four
var weekFour = new YConfigTable();
weekFour.nWeek = 4;

configureResource(weekFour);
weekFour.listDiv = 'week_four';
weekFour.dataTableCaption = '';

timeList[3] = new Resource(weekFour);


var wizardStore = new PopUpTime("bookingwizard_store", 400);
var wizardBook = new PopUpTime("bookingwizard_book", 550);
var wizardBookLoggedin = new PopUpTime("bookingwizard_book_loggedin", 400);

var wizardNC = new PopUpTime("bookingwizard_newcustomer", 400);
var wizardSsec = new PopUpTime("bookingwizard_service_ssec", 400);
var wizardLogin = new PopUpTime("bookingwizard_login_submit_div", 400);
var wizardForgotPassword = new PopUpTime("bookingwizard_forgotpassword_div", 400);

var wizardChooseStore = new PopUpTime("bookingwizard_choosestore_div", 400);
var wizardChooseLocation = new PopUpTime("bookingwizard_chooselocation_div", 635);


function handleOnKeyPressEvents(type, args) {
    var ssec = document.getElementById("loginSocialSecNo");
    var ssecString = ssec.value;
    var res;

    if (ssecString.length == 13 && ssecString.indexOf("-") != -1) {
        res = validatePNumHardCheck(ssecString, false);
    }
    else if (ssecString.length == 12 && ssecString.indexOf("-") == -1) {
        res = validatePNumHardCheck(ssecString, "loginSocialSecNo");
    }

    var handleFailure;
    var handleSuccess;
    if (res) {
        // remove the listener when in listener callback
        YAHOO.util.Event.removeListener("loginSocialSecNo", "keyup");

        handleSuccess = function(o) {
            waitHide();

            // enable the login-button
            document.getElementById("commitBookingLoggedIn").style.display = '';


            YAHOO.util.Event.addListener("loginSocialSecNo", 'keyup', handleOnKeyPressEvents, true);


            if (o.responseText == "2") {
                newAlert("Existerande kund",
                        "Du är kund hos oss sedan tidigare. E-post och SMS med lösenord har skickats till den adress och det telefonnummer som är registrerade hos oss. Om du inte tagit emot ett lösenord inom ett par minuter vill vi att du kontaktar oss på telefonnummer 031 - 200 400 eller info@hendens.se");
                document.getElementById("psw").style.display = '';
                document.getElementById("customer_registration").style.display = 'none';

            }

            if (o.responseText == "1") {
                document.getElementById("psw").style.display = '';
                document.getElementById("customer_registration").style.display = 'none';
            }
            else if (o.responseText.indexOf("§") != -1) {

                var field_array = explodeArray(o.responseText, '§');
                document.login_form.lastName.value = field_array[0];
                document.login_form.address.value = field_array[1];
                document.login_form.zipCode.value = field_array[2];
                document.login_form.postalAddress.value = field_array[3];
                document.getElementById("psw").style.display = 'none';
                document.getElementById("customer_registration").style.display = '';

            }
        };

        handleFailure = function() {
            YAHOO.util.Event.addListener("loginSocialSecNo", 'keyup', handleOnKeyPressEvents, true);

            alert("fail");
            waitHide();
        };


        var callBack = {
            success:handleSuccess,
            failure:handleFailure
        };


        sUrl = getBaseURL() + 'index.php';

        // Update the ssec-string before commiting

        ssec = document.getElementById("loginSocialSecNo");
        ssecString = ssec.value;

        var postData = "BTCheckUser=1&socialSecNo=" + ssecString;

        waitShow("Hämtar din information...",
                "Hämtar din information...");

        YAHOO.util.Connect.asyncRequest('POST', sUrl, callBack, postData);
    }


}


function showService(serviceId) {
    currService = serviceId;
    wizardChooseLocation.show();
    // window.location='index.php?ShowSched&serviceId='+serviceId
}

//todo: break out this into functions
function handelForgotPassword(ssecval, loginssec) {
    wizardNC.hide();
    wizardLogin.hide();
    wizardBook.hide();

    ssecval = document.getElementById('loginMyPageSocialSecNo').value;
    document.getElementById('forgotPasswordSocialSecNo').value = ssecval;
    loginssec = document.getElementById('loginSocialSecNo').value;

    if (loginssec.length) {
        document.getElementById('forgotPasswordSocialSecNo').value = loginssec;

    }
    wizardForgotPassword.show();
}
function handleChangeStoreSelection(dt1, dt2, dt3, dt4) {
    dt1 = timeList[0].list.getDataTable();
    dt2 = timeList[1].list.getDataTable();
    dt3 = timeList[2].list.getDataTable();
    dt4 = timeList[3].list.getDataTable();


    var length = dt1.getRecordSet().getLength();
    dt1.deleteRows(0, length);

    length = dt2.getRecordSet().getLength();
    dt2.deleteRows(0, length);

    length = dt3.getRecordSet().getLength();
    dt3.deleteRows(0, length);

    length = dt4.getRecordSet().getLength();
    dt4.deleteRows(0, length);

    if (document.getElementById('menusel_3').checked) {

        timeList[0].list.sendReq('');
        timeList[1].list.sendReq("week=2");

        timeList[2].list.sendReq("week=3");
        timeList[3].list.sendReq("week=4");

    }
    else if (document.getElementById('menusel_2').checked && !document.getElementById('menusel_1').checked) {
        var sendStr1 = "store=1";
        var sendStr2 = "store=1&week=2";
        var sendStr3 = "store=1&week=3";
        var sendStr4 = "store=1&week=4";


        timeList[0].list.sendReq(sendStr1);
        timeList[1].list.sendReq(sendStr2);
        timeList[2].list.sendReq(sendStr3);
        timeList[3].list.sendReq(sendStr4);

    }
    else if (document.getElementById('menusel_1').checked && !document.getElementById('menusel_2').checked) {
        timeList[0].list.sendReq("store=2");
        timeList[1].list.sendReq("store=2&week=2");

        timeList[2].list.sendReq("store=2&week=3");
        timeList[3].list.sendReq("store=2&week=4");
    }
    else if (document.getElementById('menusel_4').checked && !document.getElementById('menusel_3').checked) {
        timeList[0].list.sendReq("store=3");
        timeList[1].list.sendReq("store=3&week=2");

        timeList[2].list.sendReq("store=3&week=3");
        timeList[3].list.sendReq("store=3&week=4");
    }
    else {
        timeList[0].list.sendReq("store=0");
        timeList[1].list.sendReq("week=2");


        document.getElementById('menusel_1').checked = 1;
        document.getElementById('menusel_2').checked = 1;
        document.getElementById('menusel_4').checked = 1;
    }
}
function handleWizardEvents() {
    // alert(this.id);
    var loginssec;
    var ssecval;
    var ssec;
    var ret;
    var age;
    var dt1;
    var dt2;
    var dt3;
    var dt4;
    var sUrl;

    if (this.id == 'forgotPasswordClick' || this.id == 'forgotPasswordClickReg') {
        handelForgotPassword(ssecval, loginssec);
    }
    else
    if (this.id == 'ShowSched') {
        wizardChooseLocation.show();
    }
    else if (this.id == 'regnewcustomer') {
        //Show new customer dialog
        wizardBook.hide();
        wizardNC.show();
    }
    else if (this.id == 'forgotpassword_submit') {
        var handleFailure = function(o) {
            alert("fail");
            waitHide();
        };

        var handleSuccess = function(o) {
            if (o.responseText == -2) {
                newAlert("Du kan inte nås",
                        "Din e-postadress och ditt mobilnummer är felaktiga. Kontakta oss på telefonnummer 031 - 200 400 för att registrera en e-postadress eller ett mobiltelefonnummer till ditt konto");
            }
            else if (o.responseText == -1) {
                newAlert("Ej registrerad",
                        "Du är inte registrerad som kund hos oss. Detta blir du genom att boka en tid i vårat tidsbokningssystem eller i en av våra butiker");

            }
            else {
                newAlert("Lösenordet är skickat",
                        "Lösenordet är skickat till " + o.responseText + " och till det registrerade telefonnumret. Om du inte har tagit emot ett lösenord inom ett par minuter, kontakta oss på telefonnummer 031 - 200 400 eller info@hendens.se.");
            }

            wizardForgotPassword.hide();
            waitHide();
        };

        var callBack = {
            success:handleSuccess,
            failure:handleFailure
        };

        if (!validatePNumHardCheck(false, 'forgotPasswordSocialSecNo')) {
            newAlert("Personnummer", "Ditt personnummer är inte korrekt ifyllt.<br> Fyll i personnummer enligt följande: ÅÅÅÅMMDD-XXXX");
            return;
        }

        sUrl = getBaseURL() + 'index.php';
        var postData = YAHOO.util.Connect.setForm('forgotpassword_form');
        waitShow("Skickar lösenord...",
                "Skickar lösenord...");

        YAHOO.util.Connect.asyncRequest('POST', sUrl, callBack, postData);
    }
    else if (this.id == 'commitBooking' || this.id == 'commitBookingLoggedIn' || this.id == 'newcustclick') {
        handleFailure = function(o) {
            alert("fail");
            waitHide();

        };

        handleSuccess = function(o) {
            // newAlert("Debug", o.responseText);
            waitHide();
            // return;

            if (o.responseText !== undefined) {
                if (o.responseText == "2")
                    window.location = getBaseURL() + "index.php?MySite";
                else if (o.responseText == "-4") {
                    newAlert("Kunde inte boka tiden",
                            "Tiden du valt är redan bokad.<br>Försök igen med en ny tid");

                    wizardBook.hide();
                    wizardBookLoggedin.hide();

                }
                else if (o.responseText == "-1")
                    newAlert("Kunde inte boka tiden",
                            "Lösenordet i kombination med ditt personnummer stämmer inte. Försök igen eller använd funktionen \"glömt lösenord\".");
                else if (o.responseText == "-5")
                    newAlert("Kunde inte boka tiden",
                            "Den mailadress som är registrerad på ditt konto är inte korrekt. Kontakta oss på telefonnummer 031 - 200 400 eller info@hendens.se för att åtgjärda problemet");
                else if (o.responseText == "-2")
                    newAlert("Kunde inte boka tiden",
                            "Ditt personnummer saknas. Försök igen.");
                else if (o.responseText == "-3")
                    newAlert("Kunde inte registrera dig som kund",
                            "Något i processen gick fel då din information skulle registreras. Kontakta oss på telefonnummer 031 - 200 400 eller info@hendens.se");
                else if (o.responseText == "-11")
                    newAlert("Kunde inte registrera dig som kund",
                            "Du är redan registrerad hos oss. Använd funktionen \"glömt lösenord\" eller kontakta oss på telefonnummer 031 - 200 400 eller info@hendens.se");
                else if (o.responseText == "3")
                    newAlert("Registrering",
                            "Du är kund hos oss sedan tidigare. E-post och SMS med lösenord har skickats till den adress och det telefonnummer som är registrerade hos oss. Om du inte tagit emot ett lösenord inom ett par minuter vill vi att du kontakter oss på telefonnummer 031 - 200 400 eller info@hendens.se");

            }
        };

        callBack = {
            success:handleSuccess,
            failure:handleFailure
        };


        var pno = document.getElementById('loginSocialSecNo').value;
        var pnoreg = document.getElementById('socialSecNoRegNc').value;


        if (!loggedIn() && document.getElementById("customer_registration").style.display != 'none') {
            if (document.login_form.firstName.value.length == 0) {
                alert("Förnamn är inte ifyllt");
                return;
            }
            if (document.login_form.lastName.value.length < 4) {
                alert("Efternamn är inte ifyllt");
                return;
            }
            if (document.login_form.address.value.length < 4) {
                alert("Adress är inte ifyllt");
                return;
            }
            if (document.login_form.zipCode.value.length < 3) {
                alert("Postnummer är inte ifyllt");
                return;
            }
            if (document.login_form.postalAddress.value.length < 3) {
                alert("Postort är inte ifyllt");
                return;
            }
            if (document.login_form.email.value.length < 3) {
                alert("E-Post är inte ifyllt");
                return;
            }
        }


        if (!loggedIn()) {
            if (!validatePNumHardCheck(pno, 'loginSocialSecNo') && validatePNumHardCheck(pnoreg, 'loginSocialSecNoRegNc') == false) {
                newAlert("Personnummer", "Ditt personnummer är inte korrekt ifyllt.<br> Fyll i personnummer enligt följande: ÅÅÅÅMMDD-XXXX");
                return;
            }
        }

        // set the function to handle new customers
        if (!loggedIn() && document.getElementById("customer_registration").style.display == '') {
            this.id = "newcustclick";
        }

        sUrl = getBaseURL() + 'index.php';
        postData = YAHOO.util.Connect.setForm('login_form') + "&func_id=" + this.id + "&btKey=" + selBtKey + "&suggKey=" + suggKey + "&locKey=" + locKey;
        // alert(postData);
        waitShow("Bokar tid...",
                "Bokar tid...");

        YAHOO.util.Connect.asyncRequest('POST', sUrl, callBack, postData);

    }
    else if (this.id == 'menusel_1' || this.id == 'menusel_2' || this.id == 'menusel_3' || this.id == 'menusel_4') {
        handleChangeStoreSelection(dt1, dt2, dt3, dt4);
    }
    else if (this.id == 'bookingwizard_service_ssec_next') {
        obj = document.getElementById('wizSocialSecNo');

        ssec = obj.value;

        ret = validatePNum(ssec);
        if (!ret) {
            newAlert(ssec, 'Ditt personnummer är felaktigt ifyllt (10 siffror)');
            return;
        }

        age = get_age(ssec.substring(0, 6));


    }
    else if (this.id == "mina_bokningar") {
        if (loggedIn())
            window.location = getBaseURL() + "index.php?MySite";
        else
            wizardLogin.show();
    }
    else if (this.id == 'wiz8plus') {
        window.location = getBaseURL() + "index.php?ShowBook&id=" + currService + "&age=9";
    }
    else if (this.id == 'wiz30plus') {
        window.location = getBaseURL() + "index.php?ShowBook&id=" + currService + "&age=32";
    }
    else if (this.id == 'wiz40plus') {
        window.location = getBaseURL() + "index.php?ShowBook&id=" + currService + "&age=42";
    }
    else if (this.id = "bookingwizard_login_submit") {

        handleFailure = function(o) {
            alert("fail");
        };

        handleSuccess = function(o) {
            if (o.responseText == "2")
                window.location = getBaseURL() + "index.php?MySite";
            else {
                newAlert("Inloggningen misslyckaded",
                        "Inloggningen misslyckades, kontakta info@hendens.se om problemet kvarstår");
            }
        };

        callBack = {
            success:handleSuccess,
            failure:handleFailure
        };

        sUrl = getBaseURL() + 'index.php';

        pno = document.getElementById('loginMyPageSocialSecNo').value;

        if (!validatePNumHardCheck(pno)) {
            newAlert("Personnummer", "Ditt personnummer är inte korrekt ifyllt.<br> Fyll i personnummer enligt följande: ÅÅÅÅMMDD-XXXX");
            return;
        }


        postData = YAHOO.util.Connect.setForm('login_form_front') + "&func_id=" + this.id;

        request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callBack, postData);

    }
    else {
        alert("nope");
        alert(this.id);
    }
}

function validatePNumHardCheck(p, ssecid) {

    if (!p)
        p = document.getElementById(ssecid).value;

    if (p.substr(0, 2) != 19 && p.substr(0, 2) != 20)
        return false;

    if (ssecid) {
        if (p.indexOf("-") == -1) {
            p = p.substring(0, 8) + "-" + p.substring(8);
            lssec = document.getElementById(ssecid);
            lssec.value = p;
        }
    }

    return validatePNum(p) != false;
}

function get_age(pNr) {
    var year = pNr.substring(0, 2);
    var month = pNr.substring(2, 4);
    var day = pNr.substring(4, 6);

    var d = new Date();
    var nowYear = d.getFullYear();
    var nowMonth = d.getMonth();
    var nowDay = d.getDate();

    var age = nowYear - year - 1900;

    if (age > 100)
        age = age - 100;

    if (month > nowMonth)
        age = age - 1;

    if (month == nowMonth)
    if (nowDay < day)
        age = age - 1;

    return age;
}


function handleChooseStore() {
    if (this.id == "wizclq") {
        window.location = 'index.php?ShowSched&serviceId=' + currService + '&store=0';
    }
    else if (this.id == "wizclj") {
        window.location = 'index.php?ShowSched&serviceId=' + currService + '&store=1';
    }
    else if (this.id == "wizclf") {
        window.location = 'index.php?ShowSched&serviceId=' + currService + '&store=2';
    }
    else if (this.id == "wizclk") {
        window.location = 'index.php?ShowSched&serviceId=' + currService + '&store=3';
    }
    else
        alert(this.id);
}

var ids = ['bookingwizard_service_ssec_next',
    'frolunda',
    'johanneberg',
    'menusel_1',
    'menusel_2',
    'menusel_3',
    'menusel_4',
    'commitBooking',
    'commitBookingLoggedIn',
    'regnewcustomer',
    'newcustclick',
    'mina_bokningar',
    'bookingwizard_login_submit',
    'wiz8plus',
    'wiz30plus',
    'wiz40plus',
    'forgotPasswordClick',
    'forgotPasswordClickReg',
    'forgotpassword_submit'
];


YAHOO.util.Event.addListener(ids, 'click', handleWizardEvents, true);

var focusIds = ['loginSocialSecNo'];

YAHOO.util.Event.addListener(focusIds, 'keyup', handleOnKeyPressEvents, true);

// of some reason I couldn't put these together with the above click-events
var choose_ids = ['choose_store1',
    'choose_store2',
    'choose_store3',
    'wizclq',
    'wizclj',
    'wizclf',
    'wizclk'
];

YAHOO.util.Event.addListener(choose_ids, 'click', handleChooseStore, true);


var currService;

var Event = YAHOO.util.Event;
Event.onDOMReady(configSelectedStores);

function configSelectedStores() {
    var storeId = get("store");

    if (storeId == 0)
        document.getElementById("menusel_3").checked = true;
    else if (storeId == 1)
        document.getElementById("menusel_2").checked = true;
    else if (storeId == 2)
        document.getElementById("menusel_1").checked = true;
    else if (storeId == 3)
        document.getElementById("menusel_4").checked = true;
}

function filterstore() {
    var obj = document.getElementById('formData');
    YAHOO.util.Connect.setForm(obj);
    r.list.filterListCheckbox(this.id);
}


