function getOffsetTop(obj) {
    var offsetTop = obj.offsetTop;
    while ((obj = obj.offsetParent )!=null) {
        offsetTop += obj.offsetTop;
    }
    return offsetTop;
}

function getOffsetLeft(obj) {
    var offsetLeft = obj.offsetLeft;
    while ((obj = obj.offsetParent )!=null) {
        offsetLeft += obj.offsetLeft;
    }
    return offsetLeft;
}

var commandOnClose = '';
var fieldObj;
function showcal(e, field, ySafari, funct)
{
   fieldObj = field;
   eventObj = (e) ? e : event;
      
  calendar1 = document.getElementById('cal1Container');
  
   x = getOffsetLeft(field);
   y = getOffsetTop(field);

  
  calendar1.style.left = x + 'px';
  calendar1.style.top = y + 'px';
  var defaultdt="";
  var dt=new Date();
  if (field.value == ""){
	  	diff=0;
		
		defaultdt=(dt.getMonth()+1)+"/"+dt.getDate()+"/"+dt.getFullYear();
	  	if(field.name=="dob"){			
			defaultdt=(dt.getMonth()+1)+"/30/"+(dt.getFullYear()-18);
		}
		
		field.value=defaultdt;	  
  }
  
  if (field.value != "")
  {
	var dparts=field.value.split("/");
	if(Number(dparts[2])==0){
		var tdate=new Date();
		dparts[0]=1;
		dparts[2]=tdate.getFullYear()-20;		
	}
	 
    YAHOO.eb.calendar.cal1.select(field.value);
	if(defaultdt!=""){
		field.value="";
	}
	
	maxdate=(field.name=="dob") ? (dt.getMonth()+1)+"/30/"+(dt.getFullYear()-18) :  "12/31/2050";
    YAHOO.eb.calendar.cal1.cfg.setProperty("pagedate", dparts[0] + "/" + dparts[2]);
    YAHOO.eb.calendar.cal1.cfg.setProperty("title",    "Select date");
    YAHOO.eb.calendar.cal1.cfg.setProperty("maxdate",  maxdate);
    YAHOO.eb.calendar.cal1.cfg.setProperty("mindate",  "01/01/1940");
    YAHOO.eb.calendar.cal1.cfg.setProperty("close",    "Yes");
    // Enable navigator with a custom configuration
  	var navConfig = {
  		strings : {
    	month: "Choose Month",
    	year: "Enter Year or use arrow up/arrow down ",
    	submit: "OK",
    	cancel: "Cancel",
    	invalidYear: "Please enter a valid year"
    	},
    	monthFormat: YAHOO.widget.Calendar.SHORT,
    	initialFocus: "year"
  		};
    YAHOO.eb.calendar.cal1.cfg.setProperty("navigator",navConfig);

  }
  YAHOO.eb.calendar.cal1.render();
  calendar1.style.visibility = "visible";
  calendar1.style.display = "block";
  
  if (funct != '')
  {
    commandOnClose = funct;
  }
}
YAHOO.namespace("eb.calendar");
YAHOO.eb.calendar.init = function() 
{
  function handleSelect(type,args,obj) 
  {
    var dates = args[0];
    var date = dates[0];
    var year = date[0], month = date[1], day = date[2];
    if (month<10)
      month = '0' + month;
    if (day < 10)
      day = '0' + day;

	  
    fieldObj.value = month + "/" + day + "/" + year;

    cal = document.getElementById('cal1Container');
    cal.style.visibility = "hidden";
    cal.style.display = "none";
    
    if (commandOnClose != '')
    {
      eval(commandOnClose);
      commandOnClose = '';
    }
  }

  function updateCal() 
  {
    if (fieldObj.value != "") 
    {
      YAHOO.eb.calendar.cal1.select(fieldObj.value);
      var selectedDates = YAHOO.eb.calendar.cal1.getSelectedDates();
      var firstDate = selectedDates[0];
      YAHOO.eb.calendar.cal1.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());
      YAHOO.eb.calendar.cal1.render();
    }
  }

  function handleSubmit(e) 
  {
    updateCal();
    YAHOO.util.Event.preventDefault(e);
  }
  
 
  YAHOO.eb.calendar.cal1 = new YAHOO.widget.Calendar("cal1","cal1Container",{HIDE_BLANK_WEEKS: true});
  YAHOO.eb.calendar.cal1.selectEvent.subscribe(handleSelect, YAHOO.eb.calendar.cal1, true);
  YAHOO.eb.calendar.cal1.render();

  YAHOO.util.Event.addListener("update", "click", updateCal);
  YAHOO.util.Event.addListener("dates", "submit", handleSubmit);
}

YAHOO.util.Event.onDOMReady(YAHOO.eb.calendar.init);