var cal;
var over_cal = false;
var cals = new Array();
var cur_cal;

(function() {
	if (typeof YAHOO != "undefined" && YAHOO.util) {
		var loader = new YAHOO.util.YUILoader({ 
			base: '/common/yui/build/', 
			require: ["calendar"], 
			loadOptional: false, 
			combine: false, 
			filter: "MIN", 
			allowRollup: true, 
			onSuccess: function() { 
				YAHOO.util.Event.onDOMReady(initCal);
			} 
		}); 
	 
// Load the files using the insert() method. 
		loader.insert();
	} else if (typeof google != "undefined") {
		djConfig.parseOnLoad = true;
		google.load("dojo", "1");
		
		google.setOnLoadCallback(function() {
			dojo.require("dijit.form.DateTextBox");
			dojo.require("dojo.parser");  
		});
	}
})(); 

function initCal() {
	var els = YAHOO.util.Dom.getElementsByClassName('sw3date');
	if (els.length > 0) {
		cal = new YAHOO.widget.Calendar('cal', 'calContainer');
		cal.cfg.setProperty('DATE_FIELD_DELIMITER', '/');
		cal.cfg.setProperty('MDY_DAY_POSITION', 1);
		cal.cfg.setProperty('MDY_MONTH_POSITION', 2);
		cal.cfg.setProperty('MDY_YEAR_POSITION', 3);

		cal.cfg.setProperty('MONTHS_SHORT', sw3lang.lib_mon);
		cal.cfg.setProperty('MONTHS_LONG', sw3lang.lib_month);
		cal.cfg.setProperty('WEEKDAYS_1CHAR', sw3lang.lib_d);
		cal.cfg.setProperty('WEEKDAYS_SHORT', sw3lang.lib_dd);
		cal.cfg.setProperty('WEEKDAYS_MEDIUM', sw3lang.lib_ddd);
		cal.cfg.setProperty('WEEKDAYS_LONG',  sw3lang.lib_day);

		cal.selectEvent.subscribe(getDateCal, cal, true);
		cal.renderEvent.subscribe(setupListeners, cal, true);
		hideCal();
		cal.render();
		for (var i = 0; i < els.length; i++) {
			YAHOO.util.Event.addListener(els[i].id, 'focus', showCal);
			YAHOO.util.Event.addListener(els[i].id, 'blur', hideCal);
			if (sw3.fldfirst && sw3.fldfirst == els[i].id) {
				els[i].blur();
				els[i].focus();
			}
		}
	}
}

function setupListeners() {
    YAHOO.util.Event.addListener('calContainer', 'mouseover', overCal);
    YAHOO.util.Event.addListener('calContainer', 'mouseout', outCal);
}

function getDateCal() {
	var calDate = this.getSelectedDates()[0];
	calDate = calDate.getDate() + '/' + (calDate.getMonth() + 1) + '/' + calDate.getFullYear();
	cur_cal.value = calDate;
	over_cal = false;
	hideCal();
}

function showCal() {
	cur_cal = this;
    var xy = YAHOO.util.Dom.getXY(cur_cal);
    var s = YAHOO.util.Dom.get(cur_cal).value;
	var x = new String(s);
	var a = x.split('/');
	if (a.length == 3) {
		var tmp = a[0];
		a[0] = a[1];
		a[1] = tmp;
		x = a.join('/')
		date = Date.parse(x);
		if (date) {
			cal.cfg.setProperty('selected', s);
			cal.cfg.setProperty('pagedate', a[0] + '/' + a[2]);
			cal.render();
		}
    }
    YAHOO.util.Dom.setStyle('calContainer', 'display', 'block');
    xy[1] = xy[1] + 20;
    YAHOO.util.Dom.setXY('calContainer', xy);
}

function hideCal() {
    if (!over_cal) {
        YAHOO.util.Dom.setStyle('calContainer', 'display', 'none');
    }
}

function overCal() {
    over_cal = true;
}

function outCal() {
    over_cal = false;
}

