//
//function CheckReturnDate(enable)
//{	
//    $('#returndate').val('');
//    if (enable) $('#returndiv').show();
//    else $('#returndiv').hide();
//}

function GetIndexFormVariables(){
    var traveltype = $("input[@name=traveltype]:checked").val();
    var companydatno = $('#companydatno').val();
    var origindatno = $('#origindatno').val();
    var destinationdatno = $('#destinationdatno').val();
    var departuredate = $('#departuredate').val();
    var returndate = $('#returndate').val();

    var preJson = new Object();
    preJson.traveltype = traveltype;
    preJson.companydatno = companydatno;
    preJson.origindatno = origindatno;
    preJson.destinationdatno = destinationdatno;
    preJson.departuredate = departuredate;
    preJson.returndate = returndate;
    return preJson;
}

function CheckSchedule(preJson){
    if (!$("#submitschedules").valid()){
        return false;
    }
    else if (preJson.origindatno == preJson.destinationdatno)
    {
        alert('Origin and destination are the same. Please select different locations.');
        $('#origindatno').focus();
        return false;
    }
    else if (!ValidateId(preJson.origindatno) || !ValidateId(preJson.destinationdatno)
        || !ValidateId(preJson.companydatno)){
        alert('Please select a shipping company, origin, and destination.');
        return false;
    }
    else if (preJson.traveltype == 2 && preJson.returndate < preJson.departuredate){
        alert("Return date must be greater than the departure date.");
        $('#returndate').focus();
        return false;
    }
    
    var myDate=new Date();
    myDate.setDate(myDate.getDate()+2);
    myDate.setHours(0);
    myDate.setMinutes(0);
    myDate.setSeconds(0);

    temp = preJson.departuredate.split("-");
    var ddate = new Date(temp[0], temp[1]-1, temp[2],0,0,1,0);
    if (ddate.getTime() < myDate.getTime()){
        alert('Departure date must be 2 days from today.');
        $('#departuredate').focus();
        return false;
    }

    return true;
}

function GetSchedule()
{
    preJson = GetIndexFormVariables();
    

    if (CheckSchedule(preJson)){
        //get schedules
        var dataString = $.toJSON(preJson);
        LoadContent('schedulescontainer','booking/viewschedules', dataString);
    }
}

function ValidateIndex(){
    departslot = $("input[name=departslotdatno]:checked").val();
    returnslot = $("input[name=returnslotdatno]:checked").val();
    traveltype = $("input[@name=traveltype]:checked").val();

    if (!ValidateId(departslot)){
        
        alert('Please select a departure schedule.');
        return false;
    }
    else if (traveltype == 2 && !ValidateId(returnslot)){
        alert('Please select a return schedule.');
        return false;
    }
    else if (!CheckReturnSchedule()){
        alert('Please select a return schedule that is later than the departure schedule.');
        return false;
    }
    
    
    
    $("#submitschedules").submit();
    return true;
}

function CheckReturnSchedule(){
    return true;
}

function ValidateAccommodations(){
    departacc = $("input[name=daccomslotdatno]:checked").val();
    returnacc = $("input[name=raccomslotdatno]:checked").val();
    traveltype = $("#traveltype").val();
    
    if (!ValidateId(departacc)){
        alert('Please select a departure accommodation.');
        return false;
    }
    else if (traveltype == 2 && !ValidateId(returnacc)){
        alert('Please select a return accommodation.');
        return false;
    }
    
    GetMinimumSlot();
    
    $("#formaccommodations").submit();
    return true;
}

function GetMinimumSlot() {
	var minslot = 10;
	$('input:text[id^=minSlot]').each(function () {
        if(minslot > $(this).val()){
        	minslot = $(this).val();
        }
	});
	$("#slotlimit").val(minslot);
}

function GetPassengerFormVariables(){
    var preJson = new Object();
    passengers = new Array();
    $("#passengerlist").children().each(function(){
        var passenger = new Object();
        passenger.lastname = $(this).find("[name^=lastname]").val();
        passenger.firstname = $(this).find("[name^=firstname]").val();
        passenger.mi = $(this).find("[name^=mi]").val();
        passenger.age = $(this).find("[name^=age]").val();
        passenger.gender = $(this).find("[name^=gender]").val();
        passenger.category = $(this).find("[name^=category]").val();
        passenger.remarks = $(this).find("[name^=remarks]").val();
        passengers.push(passenger);
    }
    );
    
    $("#numpassengers").val(passengers.length);
    
    address = $("#address").val();
    contactno = $("#contactno").val();
    email = $("#email").val();

    preJson.address = address;
    preJson.contactno = contactno;
    preJson.email = email;
    preJson.passengers = passengers;

    return preJson;
}

function ValidatePassengerInfo(ddate){
    preJson = GetPassengerFormVariables();
    
    if (CheckPassengerInfo(preJson, ddate)){
        $("#formpassengerinfo").submit();
    }
}

function ValidateConfirmation() {
	var control = $('#popupViewContinue');
	var url = $("#baseUrl").val()+ "/booking/continue";
	var display = -1;
	
	if ($('#agreement').attr("checked")){
        display = "1";
	} 
	else {
        display = "0";
	} 
	
	control.load(url,{'display':display}, 
		function() {
			ConfirmContinueDialog(control, display);
        });
}

function ConfirmContinueDialog(control, display)
{
	CreateDialog(control, 0, 540); 
	if(display == 1){
		control.dialog('option', 'buttons',
				{ "Cancel" 	 : function(){
								$(this).html('&nbsp;');
								$(this).dialog('destroy');
						},
				 "OK":	function() {
					 			$(this).html('&nbsp;');
					 			$(this).dialog('destroy');
					 			$("#confirmation").submit();
				 		}
				}
		);
	}
	else {
		control.dialog('option', 'buttons',
				{ "OK" 	 : function(){
								$(this).html('&nbsp;');
								$(this).dialog('destroy');
						}
				}
		);
	}
}

//function BackForm(url){
//    window.location.replace(url);
//}

function CheckPassengerInfo(preJson, ddate)
{
    var infantCount = 0;
    $("#passengerlist").children().each(function(){
        $(this).find("[name^=remarks]").rules("add", {
            required: $(this).find("[name^=category]").val() > 0,
            dateISO: ($(this).find("[name^=category]").val() == 2) || ($(this).find("[name^=category]").val() == 4),
            date: ($(this).find("[name^=category]").val() == 2) || ($(this).find("[name^=category]").val() == 4),
            messages: {
                required: "For infants or minors, please input birthdate. For students or senior citizen, please input id number. ",
                dateISO: "Input a valid date. Format is YYYY-MM-DD",
                date: "Invalid date. Please specify a valid Birth Date."
            }
        });
        if ($(this).find("[name^=category]").val() == 4)
            infantCount++;
    });
   
    if (!$('#formpassengerinfo').valid())
    {
        return false;
    }
    
    var msg = ValidateAgeValue(preJson, ddate);
    var isCheck = true;
    
    if(trim(msg).length > 0)
    {
    	alert(msg);
    	isCheck = false;
    }
    else if (!CheckAgeLimits(preJson)){
            
            isCheck = false;
    }
    if (infantCount > 2){
        alert("Only two(2) infants are allowed per transaction.");
        isCheck = false;
    }
    return isCheck;
}

function ValidateAgeValue(preJson, ddate){
	var msg = "";
	$.each(preJson.passengers, function(index, p){
    	if(p.category == 2 || p.category == 4) {
    		var age = ComputeAge(p.remarks, ddate);
    		if(age != p.age) {
    			 msg += "Invalid age input of passenger " + p.lastname + ", " + p.firstname + "\n";
    		}
    	}
    });
    
    return msg;
}

function CheckAgeLimits(preJson){
    returnvalue = true;
    $.each(preJson.passengers, function(index, p){        
       if (p.category == 2){
           agerange = $("#Minor").val();
           ages = agerange.split('-');
           if (p.age < Number(ages[0]) || p.age > Number(ages[1])){
               alert("For minors, age must be " + agerange + " years old on the date of departure in order to avail of discount.");
               returnvalue = false;
           }
       }
       if (p.category == 4){
           agerange = $("#Infant").val();
           ages = agerange.split('-');
           if (p.age >= Number(ages[1])){
               alert("For infants, age must be " + agerange + " years old on the date of departure in order to avail of discount.");
               returnvalue = false;
           }
       }
    });
    return returnvalue;
}

//function ComputeAge(bdate, ddate)
//{
//	var birthdate = new Date(bdate);
//	var departuredate = new Date(ddate);
//	
//	var age = departuredate.getFullYear() - birthdate.getFullYear();
//	if(age > 0) {
//		if((birthdate.getMonth() > departuredate.getMonth()) || 
//				((birthdate.getMonth() == departuredate.getMonth()) && (birthdate.getDate() > departuredate.getDate())))
//			{
//				age = age - 1; 
//			}
//	}
//	return age;
//}

function AddPassenger(num)
{
    cnt = $('#passengerlist').children().length;
    
    if(cnt >= 10) {
    	alert("Allowable number of passengers per transaction is only " + num + ".");
        return;
    }
    else if (cnt >= num)
    {
        alert("Only " + num + " slots available.");
        return;
    }
    cnt++;

    html = $('#passengerlist :first').clone(true);

    $("#count", html).text(cnt);

    lastname = $(html).find("[name^=lastname]");
    $(lastname).attr("id", "lastname_" + cnt);
    $(lastname).attr("name", "lastname_" + cnt);
    
    firstname = $(html).find("[name^=firstname]");
    $(firstname).attr("id", "firstname_" + cnt);
    $(firstname).attr("name", "firstname_" + cnt);

    mi = $(html).find("[name^=mi]");
    $(mi).attr("id", "mi_" + cnt);
    $(mi).attr("name", "mi_" + cnt);

    age = $(html).find("[name^=age]");
    $(age).attr("id", "age_" + cnt);
    $(age).attr("name", "age_" + cnt);

    gender = $(html).find("[name^=gender]");
    $(gender).attr("id", "gender_" + cnt);
    $(gender).attr("name", "gender_" + cnt);

    category = $(html).find("[name^=category]");
    $(category).attr("id", "category_" + cnt);
    $(category).attr("name", "category_" + cnt);

    remarks = $(html).find("[name^=remarks]");
    $(remarks).attr("id", "remarks_" + cnt);
    $(remarks).attr("name", "remarks_" + cnt);

    $('#passengerlist').append($(html));

    InitializeValidator();
}

function DeletePassenger()
{
    var parent = $('#passengerlist');
    if (parent.children().length > 1){
        parent.children(":last").remove();
    }
}

function InitializeValidator(){
    $("#formpassengerinfo").validate({
        errorContainer: "#errorbox",
        errorLabelContainer: "#errorbox",
        wrapper: "div",
        errorClass: "invalid",
        errorElement: "em",
        groups: GetPassengerFormGroups(),
        rules: {
            email: {
                required: true,
                email: true
            },
            contactno: {
                required: true
            },
            address: {
                required: true
            }
        },
        messages: {
            email: "Please input a valid email address.",
            contactno: "Please input your contact number.",
            address: "Please input your address."
        }
    });
    
    $("#passengerlist").children().each(function(){
        $(this).find("[name^=lastname]").rules("add", {
            required: true,
            messages: {
                required: "Passenger information fields are all required except for MI. Please read the notes above for further information."
            }
        });
        $(this).find("[name^=firstname]").rules("add", {
            required: true,
            messages: {
                required: "Passenger information fields are all required except for MI. Please read the notes above for further information."
            }
        });
        $(this).find("[name^=age]").rules("add", {
            required: true,
            digits: true,
            min: 1,
            messages: {
                required: "Please input a numeric value.",
                min: "The age should be greater than 0. For infants below 1 year of age, please input 1 in the age field."
            }
        });
        $(this).find("[name^=gender]").rules("add", {
            required: true,
            messages: {
                required: "Passenger information fields are all required except for MI. Please read the notes above for further information."
            }
        });
        $(this).find("[name^=category]").rules("add", {
            required: true,
            messages: {
                required: "Passenger information fields are all required except for MI. Please read the notes above for further information."
            }
        });
    }
    );
}


function GetPassengerFormGroups(){
    grouplist = "";
    $("#passengerlist").children().each(function(){
        grouplist += $(this).find("[name^=lastname]").attr("id") + " ";
        grouplist += $(this).find("[name^=firstname]").attr("id") + " ";
        grouplist += $(this).find("[name^=age]").attr("id") + " ";
        grouplist += $(this).find("[name^=gender]").attr("id") + " ";
        grouplist += $(this).find("[name^=category]").attr("id") + " ";
        grouplist += $(this).find("[name^=remarks]").attr("id") + " ";
    }
    );
    var result = {};
    result["checkpassengerinfo"] = grouplist;
    return result;
}






