//Date Picker - start

function CheckDate(obj){
	var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity 'dd/mm/yyyy'
	var returnval=false
	if (!(validformat.test(obj.value))){
		//alert("Invalid Date Format. Please correct and submit again.")
	}
	else{ //Detailed check for valid date ranges
		var dayfield=obj.value.split("/")[0]
		var monthfield=obj.value.split("/")[1]
		var yearfield=obj.value.split("/")[2]
		var dayobj = new Date(yearfield, monthfield-1, dayfield)
		if ((dayobj.getDate()!=dayfield)||(dayobj.getMonth()!=monthfield-1)||(dayobj.getFullYear()!=yearfield)){
			//alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
		}
		else
			returnval=true
	}
	if (returnval==false) obj.select()
	return returnval
}

function getUrlVar(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return unescape(results[1]);
}

function getUrlVarWithDflt(name, dfltVal)
{
	var strVal = getUrlVar(name);
	if (strVal == '') 
		return dfltVal;
	else
		return strVal;
}

var DatePickerInit = function(strContainerID, strInputID, strRefineID, strDfltDate){
	if ( window.jQuery ){	
		//alert('bDatePickerFormSubmit='+bDatePickerFormSubmit);
		//replace start date select drop down lists with a text field and a calendar   
    $('#'+strContainerID).ready(function(){
			$('#'+strContainerID).html('<input name="'+strInputID+'" id="'+strInputID+'" value="'+getUrlVarWithDflt(strInputID,strDfltDate)+'" class="date-pick dp-applied"/><span class="error"></span>').find('.date-pick').datePicker({clickInput:true});	 
		});
		
		$(document).ready(function(){
			//alert('strContainerID='+strContainerID)
			var error = $('#'+strContainerID).find('.error');
			//validate start date on change
			$('#'+strInputID).bind("change", function(e){
	    		 if (CheckDate($('#'+strInputID).get(0))){
	    		 			error.text("");
	    		 			error.css("padding","0");
	    		 			bDatePickerFormSubmit = true;
	    		 			bDatePickerDateValidated = strContainerID;
	    		 	}	
	    			else {
	    				error.text("Please choose a date");
	    				error.css("padding","2px");
	    				bDatePickerFormSubmit = false;
	    			}
	   	});
	  
			//validate start date on form submit
			$('#'+strContainerID).parents('form').bind("submit", function(e){
						
				//alert($('#'+strRefineID).length);
				var bValidPreCheck = true;
				if ($('#'+strRefineID).length > 0){
					if ($('#'+strRefineID).get(0).checked !== true) 
						{bValidPreCheck = false}
				};
				//alert(strInputID);
				//alert(CheckDate($('#'+strInputID).get(0)));	
				//alert('bValidPreCheck='+bValidPreCheck);
				if (bValidPreCheck){
					e.preventDefault();
					if (CheckDate($('#'+strInputID).get(0))&& bDatePickerFormSubmit) this.submit();
					else {
	    				//alert('strContainerID='+strContainerID);
	    				if (bDatePickerDateValidated !== strContainerID){
	    						error.text("Please choose a date");
	    						error.css("padding","2px");
	    				}
	    				bDatePickerFormSubmit = false;
	    			}
				};
			});
		
		});
	};
};

//this function uses the Date constructor and .getDate() to pass in a 32nd day of the month
//this overflows into the next month
//parameters: month and year of the date you want to check (month is 0 to 11)
//example: 2,2009: 32nd March overflows to become 1st April = 32-1 = 31 days in March
//example: 1,2009: 32nd Feb overflows to become 4th March (3rd on a leap year) = 32-4 = 28 days in Feb or 29 for leap year
function getDaysInMonth(iMonth, iYear){
	return 32 - new Date(iYear, iMonth, 32).getDate();
}

function DatePickerInitialise (){
if ( window.jQuery ){	
	bDatePickerFormSubmit = true;
	//Init Avail Calendar Start Date
	DatePickerInit('calStayDate','isostartdate','refine-availability','dd/mm/yyyy');
	
	//Init Events Start and End Dates 
	bDatePickerFormSubmit = true;
	var today = new Date();
	var dd = today.getDate();
	var nextdd = dd;
	var mm = today.getMonth()+1;//January is 0!
	var nextmm = mm + 1;
	var yyyy = today.getFullYear();
	var nextyyyy = yyyy;
	
	if (nextmm > 12){
		nextmm = 1;
		nextyyyy = nextyyyy+1;
	}
	//nextmm - 1 because getDaysInMonth requires 0 based arg
	var daysInNextMonth = getDaysInMonth(nextmm - 1,nextyyyy);
	
	//if the next day is larger than the number of days in the next month 
	//then set it to match the number of days in the next month
	if(daysInNextMonth < nextdd) { nextdd = daysInNextMonth; }
	
	if(dd<10){dd='0'+dd;}
	if(mm<10){mm='0'+mm;}
	if(nextdd<10) {nextdd='0'+nextdd;}
	if(nextmm<10){nextmm='0'+nextmm;}
	var strTodayDate = dd+'/'+mm+'/'+yyyy;
	var strNextMonthDate = nextdd+'/'+nextmm+'/'+ nextyyyy;
	//alert (strTodayDate);
	//alert (strNextMonthDate);
	DatePickerInit('calStartDate','isostartdate','refine-date',strTodayDate);
	DatePickerInit('calEndDate','isoenddate','refine-date',strNextMonthDate);
				
	}
}
var bDatePickerFormSubmit;
var bDatePickerDateValidated;
DatePickerInitialise();

//Date Picker - end 