/**
 *	Parking Widget Defaults
 */
    
var parkingWidgetDateFormat = 'dd/mm/yy';


//	Initialise date pickers and bind exit date constraints
function carParkingDatePickers() {
	
	var datepickerDefaults = {
		dateFormat: parkingWidgetDateFormat,
		firstDay: 1, /* Monday */
		minDate: +1,
		maxDate: +364,
		//	The following locks the "exit" date to 1 day ahead of the "entry" date automatically
		onSelect: function(dateText) {
			
			var exitIndex = $(this).attr('id').indexOf('_carParkExitDate');
				
			if ( exitIndex == -1 ) {
				var entryDate = new Date( $.datepicker.parseDate(parkingWidgetDateFormat, dateText) );
				var exitDate = new Date( entryDate );
					exitDate.setDate( entryDate.getDate() );//same day exit at a minimum
				$("input[id$=_carParkExitDate]").datepicker( 'option', 'minDate', exitDate );
			}
			
		}
		
	}
	
	$(function() {
		$("input[id$=_carParkEntryDate]").datepicker( datepickerDefaults );
		$("input[id$=_carParkExitDate]").datepicker( datepickerDefaults );
	});
	
}

function cloudNineDialog() {
	
	// Modified to always show promo code box
	$('#cloudNineCode').show();
	$('#cloudNineJoin').hide();
    
    //	Set dialog options and behaviour
    var dialogOptions = {
        'autoOpen': false,
        'draggable': false,
        'modal': false,
        'resizable': false,
        'width': 288,
		'bgiframe': true
    };
	
	$('#cloudNineDialog').dialog( dialogOptions );
	
	//	Template-specific dialog placement [prep]
	var bodyClass = $('body').attr('class');
	
	//console.log(bodyClass);
	
	//	Reveal dialog
	$('#cloudNineJoin a#cloudNineDialogTrigger').click( function() {
		
		var cloudNineDialogX = $(this).position().left - $('#cloudNineDialog').css('marginLeft').split('px')[0];
		var cloudNineDialogY = $(this).position().top - ( $(document).scrollTop() + $('.ui-dialog').outerHeight() ) - ( $(this).outerHeight() * 1.6 );
        
        //  Reveal dialog in order to evaluate dimensions for placement
        $('#cloudNineDialog').dialog( 'open' );
		
		//	Template-specific dialog placement overrides
		switch(bodyClass) {
			
			case 'standardContent':
			case 'expandableListing':
				cloudNineDialogX = $('#mainInner').outerWidth() - ( $('.ui-dialog').outerWidth() - $('#cloudNineDialog').css('marginRight').split('px')[0] );
				$('.ui-dialog').css('background-position', '50% bottom');
				break;
			
			default:
			
		}
		
        //  Position dialog relative to link clicked
        $('#cloudNineDialog').dialog( 'option', 'position', [cloudNineDialogX, cloudNineDialogY] );
        
        //  Prevent default hyperlink action
        return false;
		
	});
	
	//	Close dialog and update widget code if 'Enter' or 'Return' hit in the dialog code input
	$('input[id$=_cloudNineDialogCode]').keypress( function(event) {
		if (event.keyCode == '13') {/* 'Enter' or 'Return' */
			updateCloudNineWidgetCode();
		}
	});
	
	// Dialog 'Save' button behaviour
	$('#cloudNineDialogButton').click( function() {
		updateCloudNineWidgetCode();
	});
	
	//	Skip dialog pop-up and reveal manual code entry
	$('#cloudNineJoin a#cloudNineCodeTrigger').click( function() {
		
		//	Close dialog (just in case)
		$('#cloudNineDialog').dialog( 'close' );
		
		//	Reveal manual code entry
		switchCloudNineCode();
		
		$('#cloudNineWidgetCode').focus();
		
		return false;
		
	});
	
	//	Copy discount code from pop-up dialog to form code input
	function updateCloudNineWidgetCode() {
		
		//	Pass entered code value into parking widget
		$('input[id$=_cloudNineWidgetCode]').attr( 'value', $('input[id$=_cloudNineDialogCode]').val() );
		
		//	Close dialog
		$('#cloudNineDialog').dialog( 'close' );
		
		//	Reveal manual code entry
		switchCloudNineCode();
		
		return false;
		
	}
	
	//	Switch Cloud Nine description to code entry
	function switchCloudNineCode() {
		$('#cloudNineCode').show();
		$('#cloudNineJoin').hide();
	}
	
}


/**
 *	Parking Times
 *	Rudimentary function to check the exit time is at least one hour
 *	after the entry time.
 *	Last modified: 2010-06-14 {pf}
 */
function carParkingTimes() {
	
	var valid;
	
	$('#carParkingWidget input[type=submit]').click( function() {
		
		var entryDate = new Date( $.datepicker.parseDate(parkingWidgetDateFormat, $("input[id$=_carParkEntryDate]").val() ) );
		var entryTime = $("select[id$=_carParkEntryTime]").val();
			entryDate.setHours(entryTime.split(':')[0]);
			entryDate.setMinutes(entryTime.split(':')[1]);
		var entryStamp = entryDate.getTime();
		
		var exitDate = new Date( $.datepicker.parseDate(parkingWidgetDateFormat, $("input[id$=_carParkExitDate]").val() ) );
		var exitTime = $("select[id$=_carParkExitTime]").val();
			exitDate.setHours(exitTime.split(':')[0]);
			exitDate.setMinutes(exitTime.split(':')[1]);
		var exitStamp = exitDate.getTime();
		
		if ( exitStamp > entryStamp ) {
			//	Exit later than entry, so pass to NCP
			valid = true;
		}
		else if ( exitStamp <= entryStamp ) {
			//	Exit is not greater than entry
			if ( !$("select[id$=_carParkEntryTime]").parent().hasClass('error') ) {
                $("select[id$=_carParkEntryTime]").wrap('<div class="error"></div>');
				console.log('tick');
            }
			if ( !$("select[id$=_carParkExitTime]").parent().hasClass('error') ) {
                $("select[id$=_carParkExitTime]").wrap('<div class="error"></div>');
				console.log('tick');
            }
			valid = false;
		}
		
		return valid;
		
	});
	
}


$(document).ready( function() {
	carParkingDatePickers();
	carParkingTimes();
	cloudNineDialog();
	$('.chkJS').val(1);// necessary grimness for NCP's system
});
