var __filterfocus = null;

document.observe('dom:loaded',function() {
	initLayout_handledButtons();	
	
	/* initialize filter panels (open-close...) */
	var node = $("filter-layer-open");
	var key = "filter-layer-open";
	var trigger = $("filter-layer-closed");
	GLOBAL_LAYER_CONTROLLER[key] = new ContentLayer(node,trigger);
//	TODO: convert to pubLayer  ---> GLOBAL_LAYER_CONTROLLER[key] = new pubLayer(node, trigger, 'filter-layer', layerOptions['filter-layer']);
	
	/* non-js workaround */
	$('filter-layer-open').removeClassName('filter-layer-nojs');
	$('filter-layer-open').addClassName('filter-layer');
	$('filter-layer-closed').show();
	
	//add Events to all input elements of closed layer (variable count!)
	$$('#filter-layer-closed input[type=text]','#filter-layer-closed input[type=input]').each( function( item , n ) {
		$(item).observe("focus", function() {
			__filterfocus = n;
		});
	});
	//add Events to all the 2 dates
	if ($('fd-but-xdate-1c')) {
		$('fd-but-xdate-1c').observe("mousedown", function() {
			__filterfocus = "d1";							   
    	});
	}
	if ($('fd-but-xdate-2c')) {
		$('fd-but-xdate-2c').observe("mousedown", function() {
			__filterfocus = "d2";						   
		});
	}
	
	/* init datepicker */
	var globalDatepickerVars = {
		      "nodrag":1,
	          "mousewheel":0,
	          "showWeeks":true,
	          "noTodayButton":true,
	          "buttontabindex":false,
	          "showWeeks":false
		} ; 

		datePickerController.setGlobalVars(globalDatepickerVars);  

		var opts1 = {                 
	            "formElements":{"date-1":"Y","date-1-mm":"m","date-1-dd":"d"},
	            "noTodayButton":true,
	            "noFadeEffect":true,
	            "positioned" : "pic1"
	            };           
	    opts1.callbackFunctions = {"dateset":[bookingPod.checkReturnDate]};
	    datePickerController.createDatePicker(opts1);

	    var opts2 = {      
	            "formElements":{"date-2":"Y","date-2-mm":"m","date-2-dd":"d"},
	            "noTodayButton":true,
	            "noFadeEffect":true,
	            "positioned" : "pic2"            
	            };           
	    opts2.callbackFunctions = {"create":[bookingPod.checkOutwardDate],"dateset":[bookingPod.checkOutwardDate]};

	    datePickerController.createDatePicker(opts2);
	    bookingPod.checkReturnDate();
	
});

function initLayout_handledButtons()
{
    $$("button.handledGeneric").each(function(elt) {
            if(!elt.form.id) {
                elt.form.id=Helper.getUniqueId();
            }
            var handle="";
            var reg=/^return/;
            $A(elt.form.attributes).each(function(item) {
            	if(item.nodeName=='onsubmit') {
                    handle="if("+item.nodeValue.replace(reg,"").replace(/;$/,"")+")";
                }
            });
            var caption=$(elt).innerHTML;
            var jsCode="javascript:"+handle+" document.forms['"+elt.form.id+"'].submit();";
            var cssClassName="generic-button";
           
            linkAsButton = new Element('a');
            linkAsButton.className = cssClassName;
            linkAsButton.href = jsCode;
            
            var btnElement = new Element('span');
            var btnInnerElement = new Element('span').update(caption);
            btnElement.update(btnInnerElement);
            linkAsButton.update(btnElement);
            
            $(elt).parentNode.replaceChild($(linkAsButton),$(elt));
     });
}

var bookingPod = window.bookingPod = {
        createYYYYMMDDString: function(dt) {
        	return dt ? dt.getFullYear() + String(dt.getMonth() + 1 < 10 ? "0" + (dt.getMonth() + 1) : dt.getMonth() + 1) + (dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate()) : "";                                                             
        },

        checkOutwardDate: function(cbObj) {              
            datePickerController.setRangeHigh("date-1", bookingPod.createYYYYMMDDString(new Date(cbObj.yyyy, cbObj.mm -1, cbObj.dd)));
        },

        checkReturnDate: function(cbObj) {
            if(typeof cbObj == "undefined") 
            {                          
                var depDate = datePickerController.getSelectedDate("date-1") || new Date();
                datePickerController.setRangeLow("date-2", bookingPod.createYYYYMMDDString(new Date(depDate.getFullYear(), depDate.getMonth(), depDate.getDate())));                
            }
            else
            {
                datePickerController.setRangeLow("date-2", bookingPod.createYYYYMMDDString(new Date(cbObj.yyyy, cbObj.mm -1, cbObj.dd)));
            }                                                  
        }
}
