﻿
function validateParking(){
    var messages = [];
    var error = null;
    
    if ($('#parkingEntryMonth').length > 0){
        var tempent = $('#parkingEntryMonth').val().split(' ');
        var tempext = $('#parkingExitMonth').val().split(' ');
        var entryMonth = findMonth(tempent[0]);
        var exitMonth = findMonth(tempext[0]);
        var entryMonthAlpha = tempent[0];
        var exitMonthAlpha = tempext[0];
        var entryYear = '20' + tempent[1];
        var exitYear = '20' + tempext[1];
        var entryDay = $('#parkingEntryDay').val();
        var exitDay = $('#parkingExitDay').val();
        /*
        var entrySeconds = Date.parse(tempent[0] + ' ' + entryDay + ', 20' + tempent[1]);
        var exitSeconds = Date.parse(tempent[0] + ' ' + entryDay + ', 20' + tempent[1]);
        var nowSeconds = new Date().getTime();

        if (entrySeconds < nowSeconds) messages.push('entryDate');
        if (exitSeconds < nowSeconds || exitSeconds < entrySeconds) messages.push('exitDate');
        */
    }
    else {
        var entryDay = $('#parkingEntryDay').val().split(' ');
        var exitDay = $('#parkingExitDay').val().split(' ');
        var entryMonth = findMonth(entryDay[1]);
        var exitMonth = findMonth(exitDay[1]);        
        var entryMonthAlpha = entryDay[1];
        var exitMonthAlpha = exitDay[1];
        var entryYear = '20' + entryDay[2];
        var exitYear = '20' + exitDay[2];
        entryDay = entryDay[0];
        exitDay = exitDay[0];
    }
    
    var entryTime = $('#parkingEntryTime').val();
    var exitTime = $('#parkingExitTime').val();
    var terminal = $('#parkingTerminal').val();


    if (terminal == 'null') messages.push('terminal');
    
    if (exitTime.indexOf(':') > -1){
        var ext = exitTime.split(':');
        var exitHour = parseInt(ext[0], 10); //  + 1;
        var exitMinutes = parseInt(ext[1], 10);
    }
    else messages.push('exitTime');
    
    if (entryTime.indexOf(':') > -1){
        var ent = entryTime.split(':');
        var entryHour = parseInt(ent[0], 10); // + 1;
        var entryMinutes = parseInt(ent[1], 10);
    }
    else messages.push('entryTime');

    $('#parkingForm .errors li').hide();
    if (messages.length > 0){
        for(var i = 0, len = messages.length; i < len; i++)
            $('#parkingForm .errors .'+messages[i]).show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }
    
    var entryDate = new Date(entryYear,entryMonth,entryDay,entryHour,entryMinutes);
    var exitDate = new Date(exitYear, exitMonth, exitDay, exitHour, exitMinutes);
    var currentDate = new Date();

    if (currentDate.getTime() > entryDate.getTime()){
        $('#parkingForm .errors .entryDate').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }
    if (currentDate.getTime() > exitDate.getTime()){
        $('#parkingForm .errors .exitDate').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }
    if (entryDate.getTime() > exitDate.getTime()){
        $('#parkingForm .errors .exitDate').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }
    if (exitDate.getTime() - entryDate.getTime() > 8553600000){
        $('#parkingForm .errors .toolong').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }

    if (entryDate.getTime() - currentDate.getTime() < 3600000) {
        $('#parkingForm .errors .oneHour').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }

    var dArray = DaysArray(12, entryYear);
    if (entryDay > dArray[entryMonth]){
        $('#parkingForm .errors .entryDate').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }
    var dExitArray = DaysArray(12, exitYear);
    if (exitDay > dExitArray[exitMonth]) {
        $('#parkingForm .errors .exitDate').show();
        $('#parkingForm .errors').slideDown('fast');
        error = true;
    }
       
    if (error) return false;
    
    $('#parkingForm #dm').val(entryMonthAlpha);
    $('#parkingForm #rm').val(exitMonthAlpha);
    $('#parkingForm #dy').val(entryYear.substr(2));
    $('#parkingForm #ry').val(exitYear.substr(2));
    $('#parkingForm #dd').val(entryDay);
    $('#parkingForm #rd').val(exitDay);
    $('#parkingForm #dmy').val((++entryMonth)+'/'+entryYear.substr(2));
    $('#parkingForm #rmy').val((++exitMonth)+'/'+exitYear.substr(2));
    $('#parkingForm #t').val(entryTime.replace(':',''));
    $('#parkingForm #rt').val(exitTime.replace(':',''));
    $('#parkingForm #ap').val('LGW'+terminal);
    
    $('#parkingForm .errors').hide();
    
    return true;
}

function findMonth(inName){
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    for(var i in months){ if (months[i] == inName) return i; }
    return 0;
}
function daysInFebruary (year){ return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 ); }
function DaysArray(n,y) {
    var returnArr = [];
    for (var i = 0; i < n; i++) {
        returnArr[i] = 31;
        if (i==3 || i==5 || i==8 || i==10) returnArr[i] = 30;
        if (i==1) returnArr[i] = daysInFebruary(y);
   } 
   return returnArr
}
