jQuery(document).ready( function() {
	
	jQuery.validator.addMethod("creditcard2", function(value, element, param) {
		var cardName = param;
		
		var cards = new Array();
		cards [0] = {cardName: "Visa", lengths: "13,16", prefixes: "4", checkdigit: true};
		cards [1] = {cardName: "MasterCard", lengths: "16", prefixes: "51,52,53,54,55", checkdigit: true};
		/*
		cards [2] = {cardName: "DinersClub", lengths: "14,16", prefixes: "300,301,302,303,304,305,36,38,55", checkdigit: true};
		cards [3] = {cardName: "CarteBlanche", lengths: "14", prefixes: "300,301,302,303,304,305,36,38", checkdigit: true};
		cards [4] = {cardName: "AmEx", lengths: "15", prefixes: "34,37", checkdigit: true};
		cards [5] = {cardName: "Discover", lengths: "16", prefixes: "6011,650", checkdigit: true};
		cards [6] = {cardName: "JCB", lengths: "15,16", prefixes: "3,1800,2131", checkdigit: true};
		cards [7] = {cardName: "enRoute", lengths: "15", prefixes: "2014,2149", checkdigit: true};
		cards [8] = {cardName: "Solo", lengths: "16,18,19", prefixes: "6334, 6767", checkdigit: true};
		cards [9] = {cardName: "Switch", lengths: "16,18,19", prefixes: "4903,4905,4911,4936,564182,633110,6333,6759", checkdigit: true};
		cards [10] = {cardName: "Maestro", lengths: "16,18", prefixes: "5020,6", checkdigit: true};
		cards [11] = {cardName: "VisaElectron", lengths: "16", prefixes: "417500,4917,4913", checkdigit: true};
		*/			   
		var cardType = -1;
		for (var i=0; i<cards.length; i++) {
			if (cardName.toLowerCase() == cards[i].cardName.toLowerCase()) {
				cardType = i;
				break;
			}
		}
		if (cardType == -1) { return false; } // card type not found

		value = value.replace (/[\s-]/g, ""); // remove spaces and dashes
		if (value.length == 0) { return false; } // no length

		var cardNo = value;
		var cardexp = /^[0-9]{13,19}$/;
		if (!cardexp.exec(cardNo)) { return false; } // has chars or wrong length
		
		cardNo = cardNo.replace(/\D/g, ""); // strip down to digits

		if (cards[cardType].checkdigit){
			var checksum = 0;
			var mychar = "";
			var j = 1;

			var calc;
			for (i = cardNo.length - 1; i >= 0; i--) {
				calc = Number(cardNo.charAt(i)) * j;
				if (calc > 9) {
					checksum = checksum + 1;
					calc = calc - 10;
				}
				checksum = checksum + calc;
				if (j ==1) {j = 2} else {j = 1};
			} 

			if (checksum % 10 != 0) { return false; } // not mod10
		}  

		var lengthValid = false;
		var prefixValid = false; 
		var prefix = new Array ();
		var lengths = new Array ();

		prefix = cards[cardType].prefixes.split(",");
		for (i=0; i<prefix.length; i++) {
			var exp = new RegExp ("^" + prefix[i]);
			if (exp.test (cardNo)) prefixValid = true;
		}
		if (!prefixValid) { return false; } // invalid prefix

		lengths = cards[cardType].lengths.split(",");
		for (j=0; j<lengths.length; j++) {
			if (cardNo.length == lengths[j]) lengthValid = true;
		}
		if (!lengthValid) { return false; } // wrong length

		return true;
	}, jQuery.validator.messages.creditcard);

	
	
	jQuery('#form').validate( {
		submitHandler : function(form) {
			displayDialog();
		},

		rules : {
			Name : "required",
			Email : {
				required : true,
				email : true
			},
			Country : "required",
			ArrivalDate : {
				required : true,
				dateFix :true
			},
			DepartureDate : {
				required : true,
				dateFix :true
			},
			
			RoomType : "required",
			CreditCardName:"required",
			
			cardnum: {
				required : true,
                creditcard2: function(){ return jQuery('#cardType').val(); }
            },
            
            CreditCardSecurity : {
            	required : true,
            	number : true,
            	minlength: 3,
            	range: [1, 999]
            },
            
            ArriveHour : {
            	number : true,
            	range: [1, 24]
            },
            ArriveMinute : {
            	number : true,
            	range: [1, 60]
            }

		},
		messages : {
			Name : msgRequired,
			Email : {
				required : msgRequired,
				email : msgEmail
			},
			Country : msgRequired,
			Telephone : {
				required : msgRequired
			},
			ArrivalDate : {
				required : msgRequired,
				dateFix: msgDate
			},
			DepartureDate : {
				required : msgRequired,
				dateFix: msgDate
			},
			
			RoomType : msgRequired,
			CreditCardName : msgRequired,
			
			CreditCardSecurity : {
				required : msgRequired,
				number: msgNumber,
				minlength : jQuery.validator.format(msgMinlength),
				range : jQuery.validator.format(msgRange)
			},
			
			cardnum: {
				required : msgRequired,
				creditcard2 : msgCreditCard 
            },
            
            ArriveHour : {
            	number: msgNumber,
            	range : jQuery.validator.format(msgRange)
            },
            ArriveMinute : {
            	number: msgNumber,
            	range : jQuery.validator.format(msgRange)
            }
		}
	});
	
    jQuery('#cardType').change(function(){
    	jQuery("#form").validate().element('#cardnum');
    });

	
	
	jQuery("#ArrivalDate").datepicker(
		{ 
			dateFormat: 'dd/mm/yy',
			minDate: '-0d',
			regional: 'tr',
			onSelect: function(dateText, inst) {
				jQuery("#DepartureDate").datepicker('destroy' );
				//alert(dateText);
				var selectDaydate = dateText.substring(0, 2);
				var selectMonth = dateText.substring(3, 5);
				var selectYear = dateText.substring(6, 10);	
				var newDay = (parseInt(selectDaydate)+1)
				var mt = mktime(0, 0, 0, selectMonth, newDay, selectYear) 
				var newDate = date('d/m/Y',mt);
				var toDate = new Date();
				var one_day=1000*60*60*24

				var newDate2 = new Date();
				newDate2.setFullYear(selectYear,selectMonth-1,selectDaydate);
					
				var fark = ((newDate2 - toDate) / one_day) +1 ; 

				jQuery("#DepartureDate").datepicker({ 
					dateFormat: 'dd/mm/yy',

					regional: 'tr',
					setDate: dateText,
					minDate: '+'+fark+'d'
					
				});
				
				jQuery("#DepartureDate").val(newDate);
				//olustur
			}
					
		}
	);
	
	jQuery("#DepartureDate").datepicker({ 
		dateFormat: 'dd/mm/yy', 
		regional: 'tr',
		minDate: jQuery("#ArrivalDate").val()
	});
	
	HideCreditCard();
	
});

function ShowCreditCard(){
	jQuery('.CreditCard').each(function () {
		jQuery(this).show();
	});
	
	jQuery('#CreditCardName').attr("disabled", false); 
	jQuery('#cardnum').attr("disabled", false); 
	jQuery('#cardType').attr("disabled", false); 
	jQuery('#CreditCardExpMon').attr("disabled", false); 
	jQuery('#CreditCardExpYear').attr("disabled", false); 
	jQuery('#CreditCardSecurity').attr("disabled", false); 
	
	jQuery('#PaymentType').val = 'CreditCard';
}


function HideCreditCard(){
	jQuery('.CreditCard').each(function () {
		jQuery(this).hide();
	});
	
	jQuery('#CreditCardName').attr("disabled", true); 
	jQuery('#cardnum').attr("disabled", true); 
	jQuery('#cardType').attr("disabled", true); 
	jQuery('#CreditCardExpMon').attr("disabled", true); 
	jQuery('#CreditCardExpYear').attr("disabled", true); 
	jQuery('#CreditCardSecurity').attr("disabled", true); 
	
	jQuery('#PaymentType').val = 'Nakit';
}

var sure = 10;
function Kontrol() {
	 sure = sure-1;
	 jQuery("span#timer").text(sure);
     if(sure>0)  {
         setTimeout("Kontrol()", 1000);
     }else{
		location.href = '/';
     };
}     




