var ctgCalendars = {};
function showYUICal(sFieldId, oControl, sFormat)
{
	var oField = getElementById2(sFieldId);
	if ( oField ) {
		
		if ( typeof ctgCalendars[sFieldId] == 'object' ) {
			
			if ( ctgCalendars[sFieldId].calOpen ) {
				ctgCalendars[sFieldId].calOpen = false;
				ctgCalendars[sFieldId].hide();
			} else {
				ctgCalendars[sFieldId].calOpen = true;
				ctgCalendars[sFieldId].show();
			}
			
		} else {
			
			var ctr1 = document.createElement('div');
			ctr1.className = 'yui-skin-sam';
			ctr1.style.fontSize = 'small';
			var ctr2 = document.createElement('div');
			ctr2.id = sFieldId + '_div';
			document.body.appendChild(ctr1);
			ctr1.appendChild(ctr2);
			
			ctgCalendars[sFieldId] = new YAHOO.widget.Calendar(sFieldId+'_cal', sFieldId+'_div', {'navigator':true});
			ctgCalendars[sFieldId].selectEvent.subscribe(selectDate, ctgCalendars[sFieldId], true);
			ctgCalendars[sFieldId].render();
			
			ctgCalendars[sFieldId].calOpen = true;
			ctgCalendars[sFieldId].dateFormat = sFormat;
			ctgCalendars[sFieldId].targetId = sFieldId;
			ctgCalendars[sFieldId].show();
			
			var position = getPosition(oField, 0, oField.offsetHeight);
			if ( position[0] == '0px' && position[1] == '0px' ) {
				position = getPosition(oControl, 0, oControl.offsetHeight);
			}
			ctr2.style.position = 'absolute';
			ctr2.style.left = position[0];
			ctr2.style.top = position[1];
			
		}
		
	}
	
	return;
}
function selectDate(type, args, obj)
{
	var y = args[0][0][0].toString();
	var m = args[0][0][1].toString();
	var d = args[0][0][2].toString();
	
	if ( m.length == 1 ) {
		m = '0' + m;
	}
	if ( d.length == 1 ) {
		d = '0' + d;
	}
	
	var sFormat = obj.dateFormat;
	var sDate = obj.dateFormat.replace(/d/i, d);
	sDate = sDate.replace(/m/i, m);
	sDate = sDate.replace(/y/i, y);
	
	var oField = getElementById2(obj.targetId);
	if ( oField ) {
		var bChanged = ( oField.value == sDate ) ? false : true;
		oField.value = sDate;
		try {
			oField.focus();
		} catch (e) { }
		
		if ( bChanged && typeof oField.onchange == 'function' ) {
			oField.onchange();
		}
	}
	
	obj.calOpen = false;
	obj.hide();
	
	return;
}
function getPosition(oNode, iHorz, iVert)
{
	var sHorz = 0;
	var sVert = 0;
	if ( typeof iHorz == 'number' ) {
		sHorz = iHorz;
	}
	if ( typeof iVert == 'number' ) {
		sVert = iVert;
	}
	if ( oNode.offsetParent ) {
		while ( oNode.offsetParent ) {
			sHorz += oNode.offsetLeft;
			sVert += oNode.offsetTop;
			oNode  = oNode.offsetParent;
		}
		sHorz += oNode.offsetLeft;
		sVert += oNode.offsetTop;
	} else if ( oNode.x && oNode.y ) {
		sHorz += oNode.x;
		sVert += oNode.y;
	}
	
	return [sHorz.toString() + 'px', sVert.toString() + 'px'];
}
function getElementById2(sID)
{
	var oElement = document.getElementById(sID);
	if ( oElement && oElement.id != sID ) {
		oElement = null;
		if ( document.all ) {
			for (var i = 0; i < document.all[sID].length; i++) {
				if ( document.all[sID][i].id == sID ) {
					oElement = document.all[sID][i];
					break;
				}
			}
		}
	}
	
	return oElement;
}
