	
/* moved from dpcustom.js
MODIFIED VERSION OF SCRIPT FOR A DOUBLE SPLIT SELECTOR *** ALLOWING ONE DAY RANGE
see original script at http://www.frequency-decoder.com  */
datePickerController.addEvent(window, 'load', datePickerController.create);
datePickerController.addEvent(window, 'unload', datePickerController.destroy);
datePickerController.addEvent(window, 'load', initialiseInputs);
//
//document.addEventListener('mousedown',mouseclick,false);

function grabDatePicker(d,i) {
	// grabs values from date picker and resets the selectors
		widgReset(i,d);
}

function widgReset() {
	// checks validity of new values and resets date value for datepicker
	var startOffset=0; var endOffset=0;
	var sdDay=parseFloat($('sdd').value); var sdMth=$('sdmy').value;
	var edDay=parseFloat($('edd').value); var edMth=$('edmy').value;
	
	if(arguments.length>0) { 
	var wg=arguments[0];
	var dArr=arguments[1].split("/");

		if(wg=='sd') {
		sdDay=parseFloat(dArr[0]);	sdMth=parseFloat(dArr[1])+' '+dArr[2];
		} else if(wg=='ed') {
		edDay=parseFloat(dArr[0]);	edMth=parseFloat(dArr[1])+' '+dArr[2];
		}

	}
	
	// if before first allowed dayNum on first month
	if( sdDay<widgeStartDay && sdMth==widgeStartMY ) {
		sdDay=widgeStartDay;
		sdMth=widgeStartMY;
	}

	// check months years are in order
	if (sdMth!=edMth) {
		var smy=compMY(sdMth);
		var emy=compMY(edMth);	
		if( smy>emy ) {
			edDay=sdDay;
			edMth=sdMth;
			endOffset=1;
			}	
	}
	
	// if same months start day must be equal to or one day before end day
	if(sdMth==edMth && sdDay>edDay) {
		edDay=sdDay;
		sdMth=edMth;
		endOffset=0;
		// last day last month exception
		if($('sdd').selectedIndex==$('sdd').options.length-1 && 
		$('sdmy').selectedIndex==$('sdmy').options.length-1 ) {
		startOffset=-1;
		endOffset=0;
		}
	}

	// reset options
	var newStart=repackAndIncDate(sdDay,sdMth,startOffset);
	var newEnd=repackAndIncDate(edDay,edMth,endOffset);
	resetOptions('sd',newStart);
	resetOptions('ed',newEnd);
	
	// reset form values
	setTimeout("setFieldValues()",100);	
}



function createOptionDays(obj,days,ix) {
	for (var ct=0 ; ct <days ; ct++) {
		var optn = document.createElement("OPTION");
		optn.text = twoChar(ct+1); 
		optn.value = ct+1;
		obj.options[ct] = optn;
	}
	obj.selectedIndex=ix-1;
}

function setMonthYearIndex(obj,len,m,y) {
	for (var ct=0 ; ct<len ; ct++) {
		if(obj.options[ct].value==m+" "+y) { 
		obj.selectedIndex=ct;
		break;	
		} 
	}
}

function resetOptions (set,dateInp) {
// clears options in given selector day set - to or from + reset selectedIndex on monthYear
// resets with given date 06/09/2007
var dateArr=dateInp.split("/");
var dy=parseFloat(dateArr[0]);
var mth=parseFloat(dateArr[1]);
var yr=parseFloat(dateArr[2]);
if(set=='sd') { var opts=new Array($("sdd"),$("sdmy"));} else if (set=='ed') { var opts=new Array($("edd"),$("edmy"));}
	for(var i=0;i<2;i++) {
		var selectBox=opts[i];
		var opLength=selectBox.options.length;
			if(i==0) { 
			for (var ct = opLength-1 ; ct >=0 ; ct--) {	selectBox.options[ct] = null;}
			createOptionDays(selectBox,getDaysInMonth(mth,yr),dy);
			} else if (i==1) {
			selectBox.selectedIndex=0;
			setMonthYearIndex(selectBox,opLength,mth,yr);
			}
	}
}

function getDaysInMonth(mth,yr){
	// accepts month year in numerical form 1-12,2007..
		var daysPerMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        var m = mth-1; 
		var res = daysPerMonth[m];
        if(((0 == (yr%4)) && ((0 != (yr%100)) || (0 == (yr%400)))) && mth == 2) {  
		res = 29; 
		};
        return res;

}

function initialiseInputs() {
        // Clear any old values from the inputs (that might be cached by the browser after a page reload)
        $("sd").value = "";
        $("ed").value = "";
        // Add the onchange event handler to the start date input
        //$("sd").onchange = setReservationDates;
		setTimeout(initDateP,100);
}

function setReservationDates(e) {
        // Check the associated datePicker object is available (be safe)
        if(!("sd" in datePickerController.datePickers)) { return;  }
        // Check the value of the input is a date of the correct format
        var dt = datePickerController.dateFormat(this.value, datePickerController.datePickers["sd"].format.charAt(0) == "m");
        // If the input's value cannot be parsed as a valid date then return
        if(dt == 0) return;
        // Grab the value set within the endDate input and parse it using the dateFormat method
        // N.B: The second parameter to the dateFormat function, if TRUE, tells the function to favour the m-d-y date format
        var edv = datePickerController.dateFormat($("ed").value, datePickerController.datePickers["ed"].format.charAt(0) == "m");
        // Grab the end date datePicker Objects
        var ed = datePickerController.datePickers["ed"];
        ed.setRangeLow( dt );
        // If theres a value already present within the end date input and it's smaller than the start date
        // then clear the end date value
        if(edv < dt) { $("ed").value = "";    }
		
;
}

/// UTILITY FUNCTIONS

function initDateP() {
	// allow interval before initialising these values
		datePickerController.datePickers["sd"].setRangeLow(initSD);
		datePickerController.datePickers["ed"].setRangeLow(initED);
}

function setFieldValues() {
		$("sd").value = packDate($('sdd').value,$('sdmy').value);
        $("ed").value = packDate($('edd').value,$('edmy').value);
		$("sd").text = packDate($('sdd').value,$('sdmy').value);
        $("ed").text = packDate($('edd').value,$('edmy').value);
}

function packDate(d,my) {
// repack date in DD/MM/YYYY format
	var mya=my.split(" ");
	var input=new Date(parseFloat(mya[1]), parseFloat(mya[0])-1, parseFloat(d));
	var output=twoChar(input.getDate())+'/'+twoChar(input.getMonth()+1)+'/'+input.getFullYear();
	return output;
}

function repackAndIncDate(d,my,inc) {
	// repack date in DD/MM/YYYY format and inc x day(s)
	var mya=my.split(" ");
	var input=new Date(parseFloat(mya[1]), parseFloat(mya[0])-1, parseFloat(d));
	input.setDate(input.getDate()+inc);
	var output=twoChar(input.getDate())+'/'+twoChar(input.getMonth()+1)+'/'+input.getFullYear();
	return output;

}

function compMY(inp) {
	// returns YYYYMM integer for comparison
	var tmp=inp.split(' '); var tm=parseFloat(tmp[0]); var ty=parseFloat(tmp[1]);
	return (ty*100)+tm;
}

function twoChar(inp) {
        return String(inp).length < 2 ? "0" + inp : inp;
}

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
		element = document.getElementById(element);
		if (arguments.length == 1)
		return element;
		elements.push(element);
		}
	return elements;
}




