
$(function() {

    if (typeof window.SH == "undefined" || !window.SH) {
        window.SH = {};
    }
    if (typeof SH.Util == "undefined" || !SH.Util) {
        SH.Util = {};
    }    
});

SH = function() {

    var _maxRooms = 5;
    var _defaultRoom = 2;

    var init = function() {
        //init
    };

    var defaultRoomValue = function() {
        return _defaultRoom;
    };

    var createCalender = function(elementId, img, whenever) {

        $(elementId).datepicker({
            showOn: 'button',
            buttonImage: img,
            buttonImageOnly: true,
            changeMonth: true,
            changeYear: true,
            dateFormat: 'D dd M yy',
            minDate: whenever ? null : + 2,
            maxDate: whenever ? null : '+2Y'
        });

    };

    var addRoom = function(ulId, holidayType, labelPerfix, selValue) {

        if ($(ulId + " li").length == _maxRooms) {
            return;
        };

        var n = $(ulId + " li").length + 1;
        var name = holidayType + 'Room' + n;
        var html = '<li>';
        html += '<label class="vs" for="' + name + '">' + labelPerfix + ' ' + n + ': </label>';
        html += '<select id="' + name + '" name="' + name + '">';
        html += '<option value="1" ' + (selValue == 1 ? 'selected="selected"' : '') + ' >1 person</option>';
        html += '<option value="2" ' + (selValue == 2 ? 'selected="selected"' : '') + ' >2 people</option>';
        html += '</select>';
        html += '</li>';

        var minusLink = $('<a class="minus" href="#">Remove</a>');
        minusLink.click(function() {
            removeRoom($(this).parent().parent(), ulId, holidayType, labelPerfix);
            return false;
        });

        var linkP = $('<div class="minus_container"></div>');
        linkP.append(minusLink);

        var li = $(html);
        li.append(linkP);

        $(ulId).append(li);

        var plusLink = $(ulId).parent().parent().find(" .plus_container .plus");
        plusLink.show();
        if ($(ulId + " li").length == _maxRooms) {
            plusLink.hide();
        };
    };

    var removeRoom = function(liRemove, ulId, holidayType, labelPerfix) {

        liRemove.remove();
        var n = $(ulId + " li").length;
        var vArr = [n - 1];

        for (var i = 0; i < n; i++) {
            if (i > 0) {
                var li = $(ulId + " li").eq(i);
                if (!SH.Util.isNull(li.find(" select ").length > 0)) {
                    var d = li.find(" select ");
                    vArr[i - 1] = d.val();
                }
            }
        }

        $(ulId + " li").each(function(i) {
            if (i > 0) {
                $(this).remove();
            }
        });

        for (var i = 0; i < (n - 1); i++) {
            var selVal = vArr[i];
            addRoom(ulId, holidayType, labelPerfix, selVal);
        }
    };

    var getRooms = function(ulId, roomPrefix) {

        var lis = $(ulId + " li");
        var n = lis.length;

        var Rooms = "";
        for (var i = 0; i < lis.length; i++) {
            var drp = roomPrefix + "Room" + (i + 1)
            Rooms += $("#" + drp).val();
            if (i != lis.length - 1) Rooms += "|";
        }
        return Rooms;
    };

    return {
        init: init,
        addRoom: addRoom,
        removeRoom: removeRoom,
        getRooms: getRooms,
        createCalender: createCalender,
        getDefaultRoomValue: defaultRoomValue
    };

} ();



SH.Util = function() {

    var fillDropDown = function(items, dropdown) {
        var optionElems = "";
        for (var i = 0; i < items.length; i++) {
            optionElems += '<option value="' + items[i].ID + '">' + items[i].Name + '</option>';
        }
        enableDropDown(dropdown, optionElems);
    };

   var emptyDropDown = function(dropdown) {
        var optionElems = ""; 
         optionElems += '<option value="">Any</option>'; 
        enableDropDown(dropdown, optionElems);
    };
    
    var disableDropDown = function(drp, flg) {
        drp.attr("disabled", true);
        if (flg) {
            drp.empty().append('<option value="-">Loading...</option>');
        }
    };

    var enableDropDown = function(dropdown, optionElems) {
        dropdown.attr("disabled", false);
        if (optionElems) {
            dropdown.empty().append(optionElems);
        }
    };

    var isNull = function(object) {
        return typeof object == "undefined" || object === null || object === '';
    };


    var isValidEmail = function(email) {
        var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
        return pattern.test(email);
    };

    return {
        fillDropDown: fillDropDown,
        disableDropDown: disableDropDown,
        enableDropDown: enableDropDown,
        emptyDropDown:emptyDropDown,
        isNull: isNull,
        isValidEmail: isValidEmail
    };

} ();



 
    
   
    
   
    
    
 
    
     
 
    
    
