﻿/// <reference path="C:\svn\bokatag\trunk\BokaTag\BokaTag\Scripts\jquery-1.3.2-vsdoc.js" />

// Dependent on jquery-1.3.2.min.js, jquery.autocomplete.js, jquery-ui-1.7.1.custom.min.js, bt-common.js

// Set default values for the calendars
$(function() {
    $.datepicker.regional['sv'] = {
        clearText: 'Rensa', clearStatus: '',
        closeText: 'Stäng', closeStatus: '',
        prevText: '&laquo;Förra', prevStatus: '',
        prevBigText: '&#x3c;&#x3c;', prevBigStatus: '',
        nextText: 'Nästa&raquo;', nextStatus: '',
        nextBigText: '&#x3e;&#x3e;', nextBigStatus: '',
        currentText: 'Idag', currentStatus: '',
        monthNames: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni',
        'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
        monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun',
        'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
        monthStatus: '', yearStatus: '',
        weekHeader: 'Ve', weekStatus: '',
        dayNames: ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'],
        dayNamesShort: ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],
        dayNamesMin: ['Sö', 'Må', 'Ti', 'On', 'To', 'Fr', 'Lö'],
        dayStatus: 'DD', dateStatus: 'D, M d',
        dateFormat: 'yy-mm-dd', firstDay: 1,
        initStatus: '', isRTL: false,
        showMonthAfterYear: false, yearSuffix: ''
    };

    $.datepicker.setDefaults($.datepicker.regional['sv']);

    $("#bt_container div.calendar").datepicker({
        changeMonth: true,
        changeYear: true,
        minDate: 0,
        maxDate: '+1Y',
        onSelect: function(dateText) {
            var returnTripCalendarSelector = "#bt_container #return-trip div.calendar";
            $(this).parent("fieldset").find("input.date").val(dateText);
            //$(returnTripCalendarSelector).datepicker('option', 'minDate', stringToDate(dateText));
            setReturnDate(dateText, returnTripCalendarSelector);
        }
    });
});

// The inputs for integers get plus/minus buttons via this function
(function($) {

    $.fn.addSubtractControl = function() {
        return this.each(function() {
            $(this).wrap("<div class='add-min-container'>").after("<div class='subtract'>+</div><div class='add'>-</div>");
        });
    };

    $("#bt_container .add-min-container .add").live("click", function() {
        var value = parseInt($(this).siblings("input").val());
        var newValue = value + 1;
        if (newValue > 9) {
            newValue = 9;
        }
        $(this).siblings("input").val(newValue);
    });

    $("#bt_container .add-min-container .subtract").live("click", function() {
        var value = parseInt($(this).siblings("input").val());
        var newValue = value - 1;
        if (newValue < 0) {
            newValue = 0;
        }
        $(this).siblings("input").val(newValue);
    });

})(jQuery);

// Hides/shows the return trip calendar. Changes between the arrows.
hideShowReturnTrip = function(option, hidden) {
    if (option == "hide" && !hidden) {
        $("#return-trip").toggle("clip");
        $("#trip-type-arrow").addClass("one-way").removeClass("two-way");
        return true;
    }
    else if (option == "hide" && hidden) {
        return true;
    }
    else if (option == "show" && hidden) {
        $("#return-trip").removeClass("hide").toggle("clip");
        $("#trip-type-arrow").addClass("two-way").removeClass("one-way");
        return false;
    }
    else if (option == "show" && !hidden) {
        return false;
    }
};

function findValue(li) {
    if (li == null) return alert("No match!");

    // if coming from an AJAX call, let's use the CityId as the value
    if (!!li.extra) var sValue = li.extra[0];

    // otherwise, let's just display the value in the text box
    else var sValue = li.selectValue;

    alert("The value you selected was: " + sValue);
}


function selectItem(li) {
    findValue(li);
}

function formatItem(row) {
    return row[0] + " (id: " + row[1] + ")";
}

function stringToDate(dateText) {
    var splittedDate = dateText.split('-');

    var year  = splittedDate[0];
    var month = splittedDate[1] - 1;
    var day = splittedDate[2];

    return new Date(year, month, day);
}

function setDateFromHidden(hiddenSelector, calendarSelector) {
    var oldValue = $(hiddenSelector).val();

    if (oldValue.length && oldValue.length > 0) {

        $(calendarSelector).datepicker('setDate', stringToDate(oldValue));
    }
}

function setReturnDate(dateText, calendarSelector) {
    var currentDate = $(calendarSelector).datepicker('getDate');
    var newDate = stringToDate(dateText);

//    $(calendarSelector).datepicker('minDate', newDate);

    if (currentDate < newDate) {
        $(calendarSelector).datepicker('setDate', newDate);
        $(calendarSelector).parent("fieldset").find("input.date").val(dateText);
    }
}

$(document).ready(function() {

    $("#searchJourney").removeClass("hidden");

    // autocomplete
    $('input#pointOfDeparture').autocomplete('/Journey.mvc/FindLocationsAjax',
    {
        delay: 10,
        autofill: true,
        selectFirst: true,
        highlight: false,
        multiple: true,
        multipleSeparator: ";",
        max: 10,
        matchSubset: false
    });


    $('input#travelDestination').autocomplete('/Journey.mvc/FindLocationsAjax',
    {
        delay: 10,
        autofill: true,
        selectFirst: true,
        highlight: false,
        multiple: true,
        multipleSeparator: ";",
        max: 10,
        matchSubset: false
    });
    // autocomplete - end

    // hide show behavior
    //Display returnjourney calendar if returnjourney button is checked
    var returnTripHidden;
    if ($("#bt_container #returnJourney").attr('checked')) {
        returnTripHidden = false;
        $("#bt_container #return-trip").addClass("show");
    }
    else {
        returnTripHidden = true;
        $("#bt_container #return-trip").addClass("hide").toggle("blind");
    }
    
    $("#bt_container #oneWayTrip").click(function() {
        returnTripHidden = hideShowReturnTrip("hide", returnTripHidden);
    });

    $("#bt_container #returnJourney").click(function() {
        returnTripHidden = hideShowReturnTrip("show", returnTripHidden);
    });
    // hide show behavior - end

    // apply the plus/minus buttons on the inputs with class number.
    // then set restrictions on these inputs.
    $("#bt_container input.number").addSubtractControl();

    $("#bt_container input.number").change(function() {

        var number = $(this).val();

        if (number > 9) {
            $(this).val(9);
        } else if (number < 0) {
            $(this).val(0);
        }

    });

    // Add value from hidden to calendar if it's set
    setDateFromHidden("#departureDate", "#bt_container #departure div.calendar");
    setDateFromHidden("#returnTripDate", "#bt_container #return-trip div.calendar");
});



