var stepIndex = 0;
var MusicStepIndex = 3;
var OrderStepIndex = 4;
var ConfirmStepIndex = 5;

var selectedSongs = new Array();
var formData = new Array();

function selectSong(ctrl)
{
    if($(ctrl).attr("checked"))
    {
        var song = $(ctrl).children("SPAN");
        var songObject = new Object();
        songObject.songName = song.text();
        songObject.songPath = song.attr("SongUrl");
        if(!selectedSongs.containsSongName(songObject.songName))
            selectedSongs.push(songObject);
    }
    else
    {
        selectedSongs.remove(songObject);
    }
    
    //toggleFakeCheck($("A:first", $(this).parent()));
}

function toggleFakeCheck(fake)
{
    if(fake.hasClass('fakechecked'))
    {
        fake.removeClass('fakechecked')
        fake.attr("checked", false);
    }
    else
    {
        fake.addClass('fakechecked');
        fake.attr("checked", true);
    }
}

function checkSelectedSongs()
{
    var chkBoxes = $(".fakecheck", $(".musicTable"));
    chkBoxes.each(
        function(i)
        {
            if(i>0)
            {
                var text = $(this).children("SPAN").text();
                if(selectedSongs.containsSongName(text))
                {
                    //this.checked = true;
                    $(this).attr("checked", true);
                    $(this).addClass('fakechecked');
                }
            }
        }
    );
}
function moveNext()
{
    var validationGroup = stepIndex + 1
    if(ValidateStep() && Page_ClientValidate(validationGroup + ""))
    {
        if(stepIndex == ConfirmStepIndex)
        {
            var currentStepContainerJQuery = $(".stepContainer").eq(stepIndex);
            $("#prevLink").hide();
            var nextStepContainerJQuery = $(".stepContainer:first");
            var currentZ = currentStepContainerJQuery.css("z-index");
            var nextZ = nextStepContainerJQuery.css("z-index");
            nextStepContainerJQuery.css("z-index", currentZ);
            currentStepContainerJQuery.css("z-index", nextZ);
            stepIndex = 0;
            selectWizStep(true);
        }
        else
        {
            var currentStepContainerJQuery = $(".stepContainer").eq(stepIndex);
            if(currentStepContainerJQuery.next().length)
            {
                if(stepIndex == OrderStepIndex)
                {
                    $("#prevLink").hide();
                    $("#nextLink").hide();
                    $("#coverDIV").css("z-index", "100");
                    ProcessOrder();
                }
                
                var nextStepContainerJQuery = currentStepContainerJQuery.next();
                var currentZ = currentStepContainerJQuery.css("z-index");
                var nextZ = nextStepContainerJQuery.css("z-index");
                nextStepContainerJQuery.css("z-index", currentZ);
                currentStepContainerJQuery.css("z-index", nextZ);
                if(stepIndex >= 0)
                    $("#prevLink").show();
                
                stepIndex++;
                selectWizStep(true);
            }
        }
    }
}
function selectWizStep(isNext)
{
    var prevIdx = stepIndex - 1;
    var nextIdx = stepIndex + 1;
    var previousWizStepJQuery;
    if(prevIdx < 0)
        previousWizStepJQuery = $(".wizStep:last");
    else
        previousWizStepJQuery = $(".wizStep").eq(prevIdx);
    var currentWizStepJQuery = $(".wizStep").eq(stepIndex);
    var nextWizStepJQuery = $(".wizStep").eq(nextIdx);
    var nextIdx = 0;
    
    if(!isNext)
        nextIdx = 1;
    
    if(stepIndex + nextIdx < $(".wizStep").length)
    {
        if(isNext)
        {
            previousWizStepJQuery[0].src = previousWizStepJQuery[0].src.replace( /\_selected.gif$/, '_unselected.gif' );
        }
        else
            nextWizStepJQuery[0].src = nextWizStepJQuery[0].src.replace( /\_selected.gif$/, '_unselected.gif' );
            
        currentWizStepJQuery[0].src = currentWizStepJQuery[0].src.replace( /\_unselected.gif$/, '_selected.gif' );
    }
    
    if(isNext)
    {
        if(stepIndex == MusicStepIndex)
        {
            $($("#nextLink").children()[0]).text(OrderResource);
            $("#resetLink").hide();
        }
        else if(stepIndex == OrderStepIndex)
        {
            $($("#nextLink").children()[0]).text(ConfirmResource);
            $("#resetLink").hide();
            FillSummary();
        }
        else if(stepIndex == ConfirmStepIndex)
        {
            $($("#nextLink").children()[0]).text(FinishResource);
            $("#prevLink").hide();
            $("#resetLink").hide();
        }
        else
            $($("#nextLink").children()[0]).text(NextResource);
    }
    else
    {
        if(stepIndex + 1 == MusicStepIndex)
        {
            $($("#nextLink").children()[0]).text(NextResource);
            $("#resetLink").show();
        }
        else if(stepIndex + 1 == OrderStepIndex)
            $($("#nextLink").children()[0]).text(OrderResource);
    }
}
function movePrev()
{
    var currentStepContainerJQuery = $(".stepContainer").eq(stepIndex);
    if(currentStepContainerJQuery.prev().length)
    {
        var prevStepContainerJQuery = currentStepContainerJQuery.prev();
        var currentZ = currentStepContainerJQuery.css("z-index");
        var prevZ = prevStepContainerJQuery.css("z-index");
        prevStepContainerJQuery.css("z-index", currentZ);
        currentStepContainerJQuery.css("z-index", prevZ);
        if(stepIndex == 1)
            $("#prevLink").hide();
        
        stepIndex--;
        selectWizStep(false);
    }
}
function onTypeChange()
{
    Limo_verhuur.Classes.Services.WizardService.GetModels($(".typeModelDropDown").val(), themeName, onGetModelsComplete);
}
function onModelChange()
{
    Limo_verhuur.Classes.Services.WizardService.GetModelImage($(".typeModelDropDown").val(), $(".vehicleModelDropDown").val(), themeName, onGetModelImageComplete);
}
function onMusicChanged()
{
    Limo_verhuur.Classes.Services.WizardService.GetMusic($(".musicStyleDropDown")[0].selectedIndex, themeName, onGetMusicComplete);
}
function onGetModelsComplete(result, userContext, methodName)
{
    var results = result.split("|");
    $(".vehicleModelDropDown").html("");
    $(".vehicleModelDropDown").append(results[0]);
    //reset the UL height when the new data is added
    $(".vehicleModelDropDown").nextAll("UL").css("height", 200);
    $(".vehicleModelDropDown").parent().trigger("scroll");
    $(".limousinePreview")[0].src = results[1];
}
function onGetModelImageComplete(result, userContext, methodName)
{
    $(".limousinePreview")[0].src = result;
}
function onGetMusicComplete(result, userContext, methodName)
{
    //$(".musicListContainer").html(result);
    document.getElementById("musicListDIV").innerHTML = result;
    
    //$(".chkSong", $(".musicListContainer")).click(selectSong); 
    $(".fakecheck").click(function(){
		//$("INPUT:first", $(this).parent()).trigger("click");
		toggleFakeCheck($(this));
		selectSong(this);
		return false;
	});
	
    checkSelectedSongs();
}
function resetFields()
{
    $("#Step1DIV .themedDropDown").each(
        function(i)
        {
            //HACK:
            //Scroll function of the list items is specifically overriden to reset the selection of the DropDown
            jQuery($("#Step1DIV .comboboxDropDownContainer").eq(i).children("li:first")).trigger("scroll");
        }
    );
    
    $("INPUT:text", $($(".stepContainer")[stepIndex])).each(
        function(i)
        {
            $(this).val("");
        }
    );
    
    $("TEXTAREA", $($(".stepContainer")[stepIndex])).each(
        function(i)
        {
            $(this).val("");
        }
    );
}
function resetAllFields()
{
    $("#Step1DIV .themedDropDown").each(
        function(i)
        {
            //HACK:
            //Resize function of the list items is specifically overriden to reset the selection of the DropDown
            jQuery($("#Step1DIV .comboboxDropDownContainer").eq(i).children("li:first")).trigger("scroll");
        }
    );
    
    $("INPUT:text", $(".stepContainer")).each(
        function(i)
        {
            $(this).val("");
        }
    );
    
    $($(".fakecheck"), $(".stepContainer")).removeClass('fakechecked');
    selectedSongs.clear();
    
    
    $("TEXTAREA", $(".stepContainer")).each(
        function(i)
        {
            $(this).val("");
        }
    );
}
function FillSummary()
{
    formData.clear();
    
    $("#lblName").text($("#Step2DIV .txtMiddle INPUT:text").eq(0).val());
    formData.pushVal($("#lblName").text());
    $("#lblPhone").text($("#Step2DIV .txtMiddle INPUT:text").eq(1).val());
    formData.pushVal($("#lblPhone").text());
    $("#lblGSM").text($("#Step2DIV .txtMiddle INPUT:text").eq(2).val());
    formData.pushVal($("#lblGSM").text());
    $("#lblStreet").text($("#Step2DIV .txtMiddle INPUT:text").eq(3).val());
    formData.pushVal($("#lblStreet").text());
    $("#lblNumber").text($("#Step2DIV .txtMiddle INPUT:text").eq(4).val());
    formData.pushVal($("#lblNumber").text());
    $("#lblZip").text($("#Step2DIV .txtMiddle INPUT:text").eq(5).val() + " " + $("#Step2DIV .txtMiddle INPUT:text").eq(6).val());
    formData.pushVal($("#lblZip").text());
    $("#lblPlace").text($("#Step2DIV .txtMiddle INPUT:text").eq(7).val());
    formData.pushVal($("#lblPlace").text());
    $("#lblEmail").text($("#Step2DIV .txtMiddle INPUT:text").eq(8).val());
    formData.pushVal($("#lblEmail").text());
    
    var date = putLeadingZeto($("#Step1DIV .themedDropDown").eq(0).val());
    date += "-" + putLeadingZeto($("#Step1DIV .themedDropDown").eq(1).val());
    date += "-" + putLeadingZeto($("#Step1DIV .themedDropDown").eq(2).val());
    date += " " + putLeadingZeto($("#Step1DIV .themedDropDown").eq(3).val());
    date += ":" + putLeadingZeto($("#Step1DIV .themedDropDown").eq(4).val());
    $("#lblDate").text(date);
    formData.pushVal($("#lblDate").text());
    $("#lblStreet2").text($("#Step1DIV .txtMiddle INPUT:text").eq(0).val());
    formData.pushVal($("#lblStreet2").text());
    $("#lblNumber2").text($("#Step1DIV .txtMiddle INPUT:text").eq(1).val());
    formData.pushVal($("#lblNumber2").text());
    $("#lblZip2").text($("#Step1DIV .txtMiddle INPUT:text").eq(2).val() + " " + $("#Step1DIV .txtMiddle INPUT:text").eq(3).val());
    formData.pushVal($("#lblZip2").text());
    $("#lblPlace2").text($("#Step1DIV .txtMiddle INPUT:text").eq(4).val());
    formData.pushVal($("#lblPlace2").text());
    date = putLeadingZeto($("#Step1DIV .themedDropDown").eq(5).val());
    date += ":" + putLeadingZeto($("#Step1DIV .themedDropDown").eq(6).val());
    $("#lblTime").text(date);
    formData.pushVal($("#lblTime").text());
    $("#lblWaar").text($("#Step1DIV .txtMiddle INPUT:text").eq(5).val());
    formData.pushVal($("#lblWaar").text());
    $("#lblStreet3").text($("#Step1DIV .txtMiddle INPUT:text").eq(6).val());
    formData.pushVal($("#lblStreet3").text());
    $("#lblNumber3").text($("#Step1DIV .txtMiddle INPUT:text").eq(7).val());
    formData.pushVal($("#lblNumber3").text());
    $("#lblZip3").text($("#Step1DIV .txtMiddle INPUT:text").eq(8).val() + " " + $("#Step1DIV .txtMiddle INPUT:text").eq(9).val());
    formData.pushVal($("#lblZip3").text());
    $("#lblPlace3").text($("#Step1DIV .txtMiddle INPUT:text").eq(10).val());
    formData.pushVal($("#lblPlace3").text());
    
    $("#lblPersons").text($("#Step3DIV .txtMiddle INPUT:text").eq(0).val());
    formData.pushVal($("#lblPersons").text());
    $("#lblType").text($("#Step3DIV .themedDropDown").eq(0).val());
    formData.pushVal($("#lblType").text());
    $("#lblModel").text($("#Step3DIV .themedDropDown").eq(1).val());
    formData.pushVal($("#lblModel").text());
    $("#lblExtras").text(GetExtrasList());
    formData.pushVal($("#lblExtras").text());
    $("#lblVragen").text($(".vragenTextArea").val());
    formData.pushVal($("#lblVragen").text());
    $("#lblMusic").text(GetSongNamesList());
    formData.pushVal(GetSongsList());
    GetSendInfo();
    
    formData.pushVal(GetSendInfo());
    
    $("#Step5DIV span").append("&nbsp;");
}
function GetSendInfo()
{
    var result = "";
    $("INPUT", $("#sendInfoContainer")).each(
        function()
        {
            if($(this)[0].checked)
                result = $(this).next().text();
        }
    );
    return result;
}
function GetExtrasList()
{
    var result = "";
    $(".extraItem").each(
        function()
        {
            if($(this).hasClass("fakechecked"))
            {
                result += $(this).children("SPAN").text() + ", ";
            }
        }
    );
    
    if($(".otherExtraItem").hasClass("fakechecked"))
        result += $(".otherExtrasText").val() + ", ";
    
    if(result.length > 0)
        result = result.substr(0, result.length - 2);
    return result;    
}
function GetSongsList()
{
    var result = "";
    for(var i=0; i < selectedSongs.length; i++)
    {
        result += selectedSongs[i].songName + "^-^" + selectedSongs[i].songPath + ", ";
    }
    
    if(result.length > 0)
        result = result.substr(0, result.length - 2);
        
    return result;
}
function GetSongNamesList()
{
    var result = "";
    for(var i=0; i < selectedSongs.length; i++)
    {
        result += selectedSongs[i].songName + ", ";
    }
    
    if(result.length > 0)
        result = result.substr(0, result.length - 2);
        
    return result;
}
function ValidateStep()
{
    var valid = true;
    
    $(".themedDropDown").each(
        function()
        {
            //Z-index of 10 is the visible wizard step
            if($(this).parents(".stepContainer").css("z-index") == 10)
            {
                if($(this).parent().next("SPAN").text() == "*")
                {
                    if($(this)[0].selectedIndex == 0)
                    {
                        $(".comboboxValueContent", $(this).parent()).css("background-color", "#fef59d");
                        $(this).parent().next("SPAN").css("visibility", "visible");
                        valid = false;
                    }
                    else
                    {
                        $(".comboboxValueContent", $(this).parent()).css("background-color", "#ffffff");
                        $(this).parent().next("SPAN").css("visibility", "hidden");
                    }
                }
            }
        }
    );
    
    $(".txtMiddle INPUT:text").each(
        function()
        {
            //Z-index of 10 is the visible wizard step
            if($(this).parents(".stepContainer").css("z-index") == 10)
            {
                if($(this).parent().children("SPAN").text() == "*")
                {
                    if($(this).val() == "")
                    {
                        $(this).css("background-color", "#fef59d");
                        $(this).parent().children("SPAN").css("visibility", "visible");
                        valid = false;
                    }
                    else
                    {
                        $(this).css("background-color", "#ffffff");
                        $(this).parent().children("SPAN").css("visibility", "hidden");
                    }
                }
            }
        }
    );
    
    return valid;
}
function ProcessOrder()
{
    Limo_verhuur.Classes.Services.WizardService.ProcessOrder(formData, onProcessOrderComplete);
    resetAllFields();
}
function onProcessOrderComplete()
{
    $("#nextLink").show();
    $("#coverDIV").css("z-index", "1");
}
function putLeadingZeto(val)
{
    if(val.length == 1)
        return "0" + val;
    return val;
}
