﻿
function IsInt(value) 
{
    return parseInt(value) == value;
}

function IsIntegerInRange(value, min, max) 
{
    return IsInt(value) && (value >= min) && (value <= max);
}

function RemoveZero(value) 
{
    return value / 1;
}

function IsEmpty(value) 
{
    val = Trim(value, 'both')
    return val.length == 0;
}

function Trim(arg, func) 
{
    var trimvalue = '';
    arglen = arg.length;

    if (arglen < 1)
        return trimvalue;

    if (func == 'left' || func == 'both') 
    {
        i = 0;
        pos = -1;

        while (i < arglen) 
        {
            if (arg.charCodeAt(i) != 32 && !isNaN(arg.charCodeAt(i))) 
            {
                pos = i;
                break;
            }

            i++;
        }
    }

    if (func == 'right' || func == 'both') 
    {
        var lastpos = -1;
        i = arglen;

        while (i >= 0) {
            if (arg.charCodeAt(i) != 32 && !isNaN(arg.charCodeAt(i))) 
            {
                lastpos = i;
                break;
            }

            i--;
        }
    }

    if (func == 'left') 
    {
        trimvalue = arg.substring(pos, arglen - 1);
    }

    if (func == 'right') 
    {
        trimvalue = arg.substring(0, lastpos + 1);
    }

    if (func == 'both') 
    {
        trimvalue = arg.substring(pos, lastpos + 1);
    }

    return trimvalue;
}

function IsEmail(value) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    if (reg.test(value) == false) {
        return false;
    }
    else {
        return true;
    }
}


$(document).ready(function() {

	$("#airline, #flight-no").focus(function(){ $(this).val(""); });
    
	$("#airline").blur(function() {
		var eg = $("#eg-translate").val();
		
		if(Trim($(this).val(), 'both') == "")
		{
			$(this).val(eg + " Delta Airlines");
		}
	});
	
	$("#flight-no").blur(function() {
		var eg = $("#eg-translate").val();
		
		if(Trim($(this).val(), 'both') == "")
		{
			$(this).val(eg + " DA12345");
		}
	});
    
    $("#confirmSubmit").click(function() {
        if(doValidation())
        {
        	$("#reservation-form").submit();
        } 	
        else
        {
        	return false;
        }
    });
});


function doValidation() {
        var html = "";
        
        html += validateMandatory(".mandatory");
        html += validateInt(".int")
        
        var eg = $("#eg-translate").val();
        /*
        if($("#airline").val() == (eg + " Delta Airlines"))
        {
        	$(this).parent().css("color", "#D63D4D").css("font-weight", "bold");
            
            var field = $("#field-translate").val();
            var mandatoryField = $("#mandatory-field-translate").val();
            
            html +=  field + " - " + label.text().replace(":", "") + " - " + badFormat + ". <br />";
        }*/
        
        $("form .email").each(function() {
            var label = $(this).parent();

            if (!IsEmpty($(this).val())) {
                if (!IsEmail($(this).val())) {
                    label.css("color", "#D63D4D").css("font-weight", "bold");
                    
                    var field = $("#field-translate").val();
                    var badFormat = $("#bad-format-translate").val();
                    
                    html +=  field + " - " + label.text().replace(":", "") + " - " + badFormat + ". <br />";
                }
                else {
                    label.css("color", "white").css("font-weight", "normal");
                }
            }
        });

        if($("#country-select").val() == "None")
        {
        	html += $("#country-select-error-translate").val() + "<br />";
        	$("#country-label").css("color", "#D63D4D").css("font-weight", "normal");
        }
        else
        {
        	$("#country-label").css("color", "white").css("font-weight", "normal");
        }
        
        if($("#expiracy_month").val() == "00" || $("#expiracy_year").val() == "0000")
        {
        	html += $("#expiracy-error-translate").val() + "<br />";
            $("#expiracy-label").css("color", "#D63D4D").css("font-weight", "normal");
        }
        else
        { 	
        	$("#expiracy-label").css("color", "white").css("font-weight", "normal");
        }
        
        html += validateCard();
        
        if (!$("#acceptConditions").is(":checked"))
        {
            html += $("#accept-conditions-translate").val();
            $("#acceptCond").css("color", "#D63D4D").css("font-weight", "normal");
        }
        else
        {
        	$("#acceptCond").css("color", "white").css("font-weight", "normal");
        }
        
        
        
        if (!IsEmpty(html)) 
        {
            $("#errors").show();
            $("#error-messages").html(html);
            return false;
        }
        
        if($("#airline").val() == (eg + " Delta Airlines")) $("#airline").val("");
        if($("#flight-no").val() == (eg + " DA12345")) $("#flight-no").val("");
       
        return true;
    }


    function validateCard() 
    {
        cardType = $("#card_type").val();
        cardNumber = $("#card_number").val();

        switch (cardType) {
            case "EuroCard/MasterCard":
            	
            	if(!(cardNumber.substring(0, 1) == "5" && cardNumber.length == 16)) return cardError(true);
            		
            	/*
                pieces = cardNumber.split("-");

                if (pieces[0].substring(0, 1) == "5") 
                {
                    if (pieces.length == 4)
                    {
                        for (i = 0; i < pieces.length; i++) 
                        {
                            if (pieces[i].length != 4) return cardError(true);
                        }
                    }
                    else return cardError(true);
                }
                else return cardError(true); */

            break;

            case "Visa":
            	if(!(cardNumber.substring(0, 1) == "4" && cardNumber.length == 16)) return cardError(true);
               /*
            	pieces = cardNumber.split("-");

                if (pieces[0].substring(0, 1) == "4") 
                {
                    if (pieces.length == 4) 
                    {
                        for (i = 0; i < pieces.length; i++) 
                        {
                            if (pieces[i].length != 4) return cardError(true);
                        }
                    }
                    else return cardError(true);
                }
                else return cardError(true); */
           
            break;

            case "DinnersClub":
            	if(!(cardNumber.substring(0, 1) == "3" && cardNumber.length == 14)) return cardError(true);
               /*
            	pieces = cardNumber.split("-");

                if (pieces[0].substring(0, 1) == "3") 
                {
                    if (pieces.length == 3) 
                    {
                        if (pieces[0].length != 4 || pieces[2].length != 4 || pieces[1].length != 6) return cardError(true);
                    }
                    else return cardError(true);
                }
                else return cardError(true); */
            break;

            case "Amex":
            	if(!(cardNumber.substring(0, 2) == "37" && cardNumber.length == 15)) return cardError(true);
              /*
            	pieces = cardNumber.split("-");

                if (pieces[0].substring(0, 2) == "37")
                {
                    if (pieces.length == 3) 
                    {
                        if (pieces[0].length != 4 || pieces[2].length != 5 || pieces[1].length != 6) return cardError(true);
                    }
                    else return cardError(true);
                }
                else return cardError(true); */
            break;
        }

        return cardError(false);
    }

    function cardError(isError) {
        var field = $("#field-translate").val();
        var cardBadFormat = $("#card-bad-format-translate").val();

        var label = $("#card_number").parent();

        if (isError) 
        {
            label.css("color", "#D63D4D").css("font-weight", "normal");
            html += field + " - " + label.text().replace(":", "") + " - " + cardBadFormat + ". <br />";
        }
        else 
        {
            label.css("color", "white").css("font-weight", "normal");
        }

        return html;
    }

    function validateMandatory(className) {
    	var field = $("#field-translate").val();
        var mandatoryField = $("#mandatory-field-translate").val();
    	
    	html = "";
        $("form " + className).each(function() {
            var label = $(this).parent();

            if (IsEmpty($(this).val())) {
                label.css("color", "#D63D4D").css("font-weight", "normal");
                html += field + " - " + label.text().replace(":", "") + " - " + mandatoryField + ". <br />";
            }
            else {
                label.css("color", "white").css("font-weight", "normal");
            }
        });

        return html;
    }

    function validateInt(className) {
        html = "";
        
        $("form " + className).each(function() {
            var label = $(this).parent().prev(".tdLabel").children("span");

            if (!IsEmpty($(this).val())) {
                if (!IsInt($(this).val())) {
                    label.css("color", "#D63D4D").css("font-weight", "normal");
                    html += "Položka - " + label.text().replace(":", "") + " - musí být číslo. <br />";
                }
                else {
                    label.css("color", "black").css("font-weight", "normal");
                }
            }
        });

       return html;
   }

