﻿$(document).ready(function() {
    //$("#email_prev").modal();
    $('#confirm').jqm({ overlay: 30, modal: true, trigger: false, toTop: true })/*.jqDrag('.jqDrag')*/;
    $('#confirm2').jqm({ overlay: 30, modal: true, trigger: false, toTop: true })/*.jqDrag('.jqDrag')*/;
    // trigger a confirm whenever links of class alert are pressed.
    $('a.confirm').click(function() {
        confirm('Are you sure you want to delete this item?', this.href);
        return false;
    });
    $('a.confirm2').click(function() {
        confirm2('Are you sure you want to delete this item?', this.href);
        return false;
    });

    $('#tips *').tooltip();

    $("#UsersTable").tablesorter({
        headers: {
            4: { sorter: false }
        }
    });
    $("#LockTable").tablesorter({
        headers: {
            2: { sorter: false }
        }
    });
    $("#PropertyTable").tablesorter({
        headers: {
            3: { sorter: false }
        }
    });
    //$("#tabs").tabs();
    //$("#propManagement").validate();
    $("#propManagement").validate({
        rules: {
            PropertyList: { required: true },
            submittype: { required: true },
            propertyname: { required: true },
            modpropertyname: { required: true }
        }
    });
    $("#CreateUser").validate({
        rules: {
            username: { required: true },
            email: { required: true, email: true },
            FirstName: { required: true },
            LastName: { required: true },
            password1: { required: true, minlength: 6 },
            password2: { required: true, equalTo: "#password1" }
        }
    });
    $("#RemoteCodeGenerate").validate({
        rules: {
            PropList: { required: true },
            Locks: { required: true },
            clientname: { required: true },
            /*address1: { required: true },
            email: { required: true, email: true },
            phone: {
            required: true
            },*/
            START_DATE: { required: true, date: true },
            END_DATE: { required: true, date: true, laterDate: "#START_DATE", dateWithin364Days:"#START_DATE" },
            START_TIME: { required: true },
            END_TIME: { required: true }
        }
    });
    $("#BigCalendar").validate({
        rules: {
            PropList: { required: true },
            blockname: { required: true },
            submittype: { required: true },
            rangedate1: { required: true },
            rangedate2: { required: true }
        }
    });
    //    $("#LockManagement").validate({
    //        rules: {
    //            PropertyList: {required: true },
    //            lockname: { required: true },
    //            lockserial: { required: true }
    //        }
    //    });
    $(document).ready(function() {
        //        $('select').focusin(function(ev) {
        //var on = ev.target.value;
        //            var elm = document.getElementById("PropList");
        //            if (on == "PropList") {
        //                alert(elm.value);
        //           }
        //        });
        //
        $(':radio').click(function(ev) {
            var on = ev.target.value;

            var elmAdd = document.getElementById("lockname");
            var elmAddSerial = document.getElementById("lockserial");
            var elmMod = document.getElementById("modlockname");
            var elmModSerial = document.getElementById("modlockserial");
            var elmProp = document.getElementById("propertyname");
            var elmModProp = document.getElementById("modpropertyname");
            var elmPropList = document.getElementById("PropertyList");
            if (on == "addlock") {
                elmAdd.removeAttribute("disabled");
                elmAddSerial.removeAttribute("disabled");
                elmMod.setAttribute("disabled", "disabled");
                elmModSerial.setAttribute("disabled", "disabled");
            } else if (on == "modlock") {
                //document.write(on);
                elmAdd.setAttribute("disabled", "disabled");
                elmAddSerial.setAttribute("disabled", "disabled");
                elmMod.removeAttribute("disabled");
                elmModSerial.removeAttribute("disabled");
            } else if (on == "dellock") {
                elmAdd.setAttribute("disabled", "disabled");
                elmAddSerial.setAttribute("disabled", "disabled");
                elmMod.setAttribute("disabled", "disabled");
                elmModSerial.setAttribute("disabled", "disabled");
            } else if (on == "addproperty") {
                elmProp.removeAttribute("disabled");
                elmModProp.setAttribute("disabled", "disabled");
                elmPropList.setAttribute("disabled", "disabled");
            } else if (on == "modproperty") {
                elmProp.setAttribute("disabled", "disabled");
                elmModProp.removeAttribute("disabled");
                elmPropList.removeAttribute("disabled");
            } else if (on == "delproperty") {
                elmProp.setAttribute("disabled", "disabled");
                elmModProp.setAttribute("disabled", "disabled");
                elmPropList.removeAttribute("disabled");
            }
        });
    });

    $("#EditLockProperty").validate({
        rules: {
            property: { required: true },
            lockname: { required: true, filtervalue:true },
            lockserial: { required: true },
            lockinfo: { maxlength: 1000 },
            propname: { required: true },
            street1: { required: true },
            city: { required: true },
            country: { required: true },
            zip: { required: true }
        }
    });
    $("#LockManagement").validate({
        rules: {
            PropertyList: { required: true },
            //Locks: { required: true },
            submittype: { required: true },
            modlockname: { required: true },
            modlockserial: { required: true },
            lockname: { required: true },
            lockserial: { required: true }
        }
    });

    jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
        phone_number = phone_number.replace(/\s+/g, "");
        return this.optional(element) || phone_number.length > 9 &&
		    phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
    }, "<br/>Please specify a valid phone number");

    jQuery.validator.addMethod("laterDate", function(value, element, param) {
        var endtime = Date.parse(value);
        var starttime = Date.parse($(param).val());
        return endtime >= starttime;
    }, "<br/>Please select a valid date");

    jQuery.validator.addMethod("dateWithin364Days", function(value, element, param) {
        var endtime = new Date(Date.parse(value));
        var maxtime = new Date(Date.parse($(param).val()));
		maxtime.setDate(maxtime.getDate() + 364);
        return endtime <= maxtime;
    }, "<br/>Please select a date within 364 days.");

    $("#EditUser").validate({
        rules: {
            username: { required: true },
            /*email: { required: true, email: true },*/
            FirstName: { required: true },
            LastName: { required: true },
            password1: { required: true, minlength: 6 },
            password2: { required: true, equalTo: "#password1"}/*,
            phone: {
                required: true
            }*/
        }
    });
    $("#EditProfile").validate({
        rules: {
            username: { required: true },
            /*email: { required: true, email: true },*/
            FirstName: { required: true },
            LastName: { required: true },
            password1: { required: true, minlength: 6 },
            password2: { required: true, equalTo: "#password1"}/*,
            phone: {
                required: true
            }*/
        }

    });

    $("#BIG_CAL").datepicker({
        firstDay: 0,
        changeFirstDay: false,
        inline: true,
        showStatus: true,
        numberOfMonths: 1,
        changeMonth: false,
        changeYear: false,
        rangeSelect: true,
        onSelect: function(dateText) {
            var selectedDateArray = dateText.split(" - ");
            $('#rangedate1').val(selectedDateArray[0]);
            $('#rangedate2').val(selectedDateArray[1]);
        },
        beforeShowDay: alreadyBooked3
    });

    $("#RANGE_DATE").datepicker({
        firstDay: 0,
        changeFirstDay: false,
        /*beforeShowDay: $.datepicker.noWeekends, */
        showStatus: true,
        statusForDate: highlightToday,

        inline: true,
        rangeSelect: true,
        onSelect: function(dateText) {
            var selectedDateArray = dateText.split(" - ");
            $('#rangedate1').val(selectedDateArray[0]);
            $('#rangedate2').val(selectedDateArray[1]);
        },
        numberOfMonths: 2
    }).children("div").css("width", "370px");

    $("#time1").timeEntry({
        spinnerImage: '../../Scripts/timeentry/timeEntry2.png',
        show24Hours: false,
        timeSteps: [1, 15, 0]
    });
    $("#time2").timeEntry({
        spinnerImage: '../../Scripts/timeentry/timeEntry2.png',
        show24Hours: false,
        timeSteps: [1, 15, 0]
    });

    //    $('#div-datepicker').css('margin-top', '150px');
    //    $('#date').datepicker();
    //    $('#basics').datepicker();
    //    $('#div_date').datepicker();
    ////    $("#START_DATE").datepicker({
    //        firstDay: 0, 
    //        changeFirstDay: false, 
    //        /*beforeShowDay: $.datepicker.noWeekends, */
    //        showStatus: true, 
    //        statusForDate: highlightToday, 
    //    
    //        inline: true,
    //        rangeSelect: true,
    //        onSelect: function(dateText) {
    //            var selectedDateArray = dateText.split(" - "); 
    //            $('#rangedate1').val(selectedDateArray[0]);
    //            $('#rangedate2').val(selectedDateArray[1]);
    //        },
    //        numberOfMonths: 2
    //    }).children("div").css("width", "370px");

    $("#START_DATE").datepicker({
        firstDay: 0,
        changeFirstDay: false,
        rangeSelect: false,
        inline: false,
        showStatus: true,
        numberOfMonths: 2,
        changeMonth: false,
        changeYear: false,
        showOn: 'both',
        buttonImage: '../../Styles/images/calendar.gif',
        buttonImageOnly: true,
        /*beforeShow: customRange,*/
        beforeShowDay: alreadyBooked2
    });
    $("#END_DATE").datepicker({
        firstDay: 0,
        changeFirstDay: false,
        rangeSelect: false,
        showStatus: true,
        numberOfMonths: 2,
        changeMonth: false,
        changeYear: false,
        showOn: 'both',
        buttonImage: '../../Styles/images/calendar.gif',
        buttonImageOnly: true,
		/*beforeShow: customRange,*/
        beforeShowDay: alreadyBooked2
    });
    //    $("#inline").datepicker({
    //        rangeSelect: true,
    //        numberOfMonths: 2
    //    }).children("div").css("width", "670px");


    //    $("#time1").timeEntry({
    //        spinnerImage: '../../Scripts/timeentry/timeEntry2.png',
    //        show24Hours: false,
    //        timeSteps: [1, 15, 0]
    //    });
    //    $("#time2").timeEntry({
    //        spinnerImage: '../../Scripts/timeentry/timeEntry2.png',
    //        show24Hours: false,
    //        timeSteps: [1, 15, 0]
    //    });
    // toggle optional billing address
    var subTableDiv0 = $("div.subTableDiv0");
    var toggleCheck0 = $("input.toggleCheck0");
    toggleCheck0.is(":checked")
    ? subTableDiv0.show()
    : subTableDiv0.hide();
    $("input.toggleCheck0").click(function() {
        if (this.checked == true) {
            subTableDiv0.slideDown("medium");
        } else {
            subTableDiv0.slideUp("medium");
            $("form").valid();
        }
    });
    var subTableDiv = $("div.subTableDiv");
    var toggleCheck = $("input.toggleCheck");
    toggleCheck.is(":checked")
    ? subTableDiv.hide()
    : subTableDiv.show();
    $("input.toggleCheck").click(function() {
        if (this.checked == true) {
            subTableDiv.slideUp("medium");
            $("form").valid();
        } else {
            subTableDiv.slideDown("medium");
        }
    });





    /*Add Porperty/Lock */
//    var template = $("#template") ? jQuery.format($("#template").val()) : null;
//    function addRow() {
//        $(template(i++)).appendTo("#AddPropLock");
//    }
//    function delRow() {
//        if (i > 2) {
//            var str = "#addRow" + parseInt(i - 1);
//            $(str).remove();
//            i--;
//        }
//    }

//    var i = 1;
//    // start with one row
//    addRow();
//    // add more rows on click
//    $("#add").click(addRow);
//    $("#del").click(delRow);

}
);


//var natDays = [[1, 26, 'au'], [2, 6, 'nz'], [3, 17, 'ie'], [4, 27, 'za'], [5, 25, 'ar'], [6, 6, 'se'],  
//    [7, 4, 'us'], [8, 17, 'id'], [9, 7, 'br'], [10, 1, 'cn'], [11, 22, 'lb'], [12, 12, 'ke']];  
//  
//function nationalDays(date) {  
//    for (i = 0; i < natDays.length; i++) {  
//        if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) {  
//            return [false, natDays[i][2] + '_day'];  
//        }  
//    }  
//    return [true, ''];  
//} 
// 
//function highlightToday(date, inst) {  
//    var today = new Date();  
//    today = new Date(today.getFullYear(), today.getMonth(), today.getDate());  
//    return $.datepicker.dateStatus(date, inst) +  
//        (today.getTime() == date.getTime() ? ' (today)' : '');  
//}  
// 
//function showDayOfYear(date) { 
//    var lastYearEnd = new Date(date.getFullYear() - 1, 12 - 1, 31, 0, 0, 0, 0); 
//    return [true, '', 'Day ' + ((date.getTime() - lastYearEnd.getTime()) / 86400000) + ' of  the year']; 
//}

/* This code is not working with the older version of jQuery
function customRange(input) 
{ 
    var min = new Date(2008, 11 - 1, 1); //Set this to your absolute minimum date
        var dateMin = min;
        var dateMax = null;
        var dayRange = 6;  // Set this to the range of days you want to restrict to
    
        
        if (input.id == "START_DATE") 
        {
            if ($("#END_DATE").datepicker("getDate") != null)
            {
                dateMax = $("#END_DATE").datepicker("getDate");
                dateMin = $("#END_DATE").datepicker("getDate");
                dateMin.setDate(dateMin.getDate() - dayRange);
                if (dateMin < min)
                {
                        dateMin = min;
                }
             }
             else
             {
                dateMax = new Date(); //Set this to your absolute maximum date
             }                      
        }
        else if (input.id == "END_DATE")
        {
                dateMax = new Date(); //Set this to your absolute maximum date
                if ($("#START_DATE").datepicker("getDate") != null) 
                {
                        dateMin = $("#START_DATE").datepicker("getDate");
                        var rangeMax = new Date(dateMin.getFullYear(), dateMin.getMonth(), dateMin.getDate() + dayRange);

                        if(rangeMax < dateMax)
                        {
                            dateMax = rangeMax; 
                        }
                }
        }
    return {
                minDate: dateMin, 
                maxDate: dateMax,
            }; 

}
*/

function alreadyBooked2(date) {
    var fmstart = document.getElementById('START_DATE').value;
    var fmend   = document.getElementById('END_DATE').value;

    var startdate = new Date();
    var enddate = new Date();
    startdate.setTime(Date.parse(fmstart));
    enddate.setTime(Date.parse(fmend));

    var bBooked = 0;
    if (date.getTime() >= startdate.getTime() && date.getTime() <= enddate.getTime()) {
        bBooked = 1;
    } else {
        bBooked = 0;
    }

	return [bBooked, '', '', fmstart];
}
//function alreadyBooked4(date, document) {
//    var inputdata1;
//    inputdata1 = new Date();
//    var inputdata2;
//    inputdata2 = new Date(2009, 1-1, 2);
//    var strtxt = "";
//    var bBooked = 1;
//    if(date.getTime() > inputdata2.getTime()) {
//        bBooked = 1;
//        strtxt = "tt";
//    } else {
//        bBooked = 0;
//    }

//	return [bBooked, '', strtxt];
//}
function alreadyBooked3(date) {
    var c = document.getElementById('bookdate').value;
    var spanDateArray = c.split("-"); // yyyy/mm/dd HH:MM-yyyy/mm/dd HH:MM-"string"
    //document.write(c.value);

    var starttime = Date.parse(spanDateArray[0]);
    var endtime = Date.parse(spanDateArray[1]);

    var tmp1 = new Date(starttime);
    var tmp2 = new Date(endtime);
    var startdate   = new Date(tmp1.getFullYear(), tmp1.getMonth(), tmp1.getDate());
    var enddate     = new Date(tmp2.getFullYear(), tmp2.getMonth(), tmp2.getDate());
    //document.write(date.getFullYear() + "-" + (startdate.getMonth() + 1) + "-" + startdate.getDate() + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds() + "<br />\r\n");


    var fchkIn = document.getElementById('chkIn');
    var fchkOut = document.getElementById('chkOut');
    var fRenterName = document.getElementById('RenterName');
    var fblockList = document.getElementById('blocklist').value;
    //document.write(fchkIn[0].text);

    //var chkInDate = new Date();
    //var chkOutDate = new Date();

    var blockArray = fblockList.split(",");

    var strtxt = "<span style='margin-bottom:0; font-size:x-small;'>";
    var strTooltip = "";
    //var strtxt = "";
    var strCss = "";
    var bBooked = 0;
    var bBlock = false;
    var day = new Date(date.getFullYear(), date.getMonth(), date.getDate());
//    if (date.getTime() >= startdate.getTime() && date.getTime() <= enddate.getTime()) {
    if (day.getTime() >= startdate.getTime() && day.getTime() <= enddate.getTime()) {
        for (i = fchkIn.length - 1; i >= 0; i--) {
            starttime = new Date(Date.parse(fchkIn[i].text));
            endtime   = new Date(Date.parse(fchkOut[i].text));
            var chkInDate  = new Date(starttime.getFullYear(), starttime.getMonth(), starttime.getDate());
            var chkOutDate = new Date(endtime.getFullYear(), endtime.getMonth(),endtime.getDate());

            if (day.getTime() >= chkInDate.getTime() && day.getTime() <= chkOutDate.getTime()) {
                bBooked = 1;
                strtxt += '<br/>';
                strtxt += fRenterName[i].text;
                //strCss = "ui-datepicker-rentername";
                strTooltip += fRenterName[i].text + " [" + fchkIn[i].text + "] - [" + fchkOut[i].text + "]<br>";
                // block flag
                if (blockArray[i] == "1") bBlock = true;
            }
        }

    } else {
        bBooked = 0;
        strCss = "";
        strTooltip = "";
    }
    strtxt += "</span>";
    if (bBlock) strCss = "ui-datepicker-blocked-day";
    return [bBooked, strCss, strtxt, strTooltip];
}
function inputListContent(a, b, val) {
    var f = document.forms[0];
    f[a].options[f[a].length] = new Option(b, val);
    f[a].size = f[a].length;
}
function highlightToday(date, inst) {
    var today = new Date();
    today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
    return $.datepicker.dateStatus(date, inst) +
        (today.getTime() == date.getTime() ? ' (today)' : '');
}  



// ListBox Control
function moveListContent(a,b){
	var f=document.forms[0];
	if(f[a].length>0&&f[a].selectedIndex>-1&&f[a].options[f[a].selectedIndex].value.length>0){
		var s=f[a].options[f[a].selectedIndex];
		inputListContent(b,s.text,s.value);
		f[b].size=f[b].length;
		f[b].selectedIndex=0;
		for(var i=0,j=0;i<f[a].length;i++){
			s=f[a].options[i];
			if(i!=f[a].selectedIndex){
				f[a].options[j]=new Option(s.text,s.value);
				j++;
			}
		}
		f[a].length--;
		f[a].selectedIndex=0;
	}
}

function inputListContent(a,b,val){
	var f=document.forms[0];
	f[a].options[f[a].length]=new Option(b,val);
	f[a].size=f[a].length;
}

function moveItems(bAdd) {
    var leftBox = document.getElementById("allLocks");
    var rightBox = document.getElementById("authLocks");
    var fromBox, toBox;

    /*if (this.value == "Add Lock") {*/
    if (bAdd) {
      fromBox = leftBox; toBox = rightBox;
    }
    /*else if (this.value == "Remove Lock") {*/ 
    else if (bAdd == 0) { 
        fromBox = rightBox; toBox = leftBox;
    }

    if ((fromBox != null) && (toBox != null)) {
        if(fromBox.length < 1) {
            /*alert("No Items");*/
            return false;
        }
        if(fromBox.selectedIndex == -1) {
            /*alert("Select Items");*/
            return false;
        }
        while ( fromBox.selectedIndex >= 0 ) {
            var newOption = new Option();
            newOption.text = fromBox.options[fromBox.selectedIndex].text;
            newOption.value = fromBox.options[fromBox.selectedIndex].value;
            toBox.options[toBox.length] = newOption;
            fromBox.remove(fromBox.selectedIndex);
        }
    }
    return false;
}

function selectIndex() {
    var rightBox = document.getElementById("authLocks");
    for(i=0; i<rightBox.length; i++)
    {
        //alert("AuthLock");
        //rightBox.selectedIndex = i;
        rightBox[i].selected = true;
    }
}

function confirm(msg, callback) {
    hideSelect(1); // for IE6, hide SELECT elements
    $('#confirm')
    .jqmShow()
    .find('p.jqmConfirmMsg')
      .html(msg)
    .end()
    .find(':submit:visible')
      .click(function() {
          if (this.value == 'Send E-mail') {
				$('#EmailConfirm').submit();
		}
/*              (typeof callback == 'string') ?
            window.location.href = callback :
            callback(); */
          $('#confirm').jqmHide();
          hideSelect(0);
      });
}
function confirm2(msg, callback) {
    $('#confirm2')
    .jqmShow()
    .find('p.jqmConfirmMsg')
      .html(msg)
    .end()
    .find(':submit:visible')
      .click(function() {
          if (this.value == 'delete') {
              (typeof callback == 'string') ?
              window.location.href = callback :
              callback();
          }
          $('#confirm2').jqmHide();
      });
}

function hideSelect(bhide) {
    var param = (bhide == 1 ? "hidden" : "visible");
    var elems = document.getElementsByTagName("select");
    for (i = 0; i < elems.length; i++) {
        elems[i].style.visibility = param;
    }
}

