function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
			while (obj.offsetParent)
			{
					curleft += obj.offsetLeft
					obj = obj.offsetParent;
			}
	}
	else if (obj.x)
			curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
			while (obj.offsetParent)
			{
					curtop += obj.offsetTop
					obj = obj.offsetParent;
			}
	}
	else if (obj.y)
			curtop += obj.y;
	return curtop;
}

  var cal1;
  var cal2;
  var cal3;  
   	
  function init() {
    this.today = new Date();

    var thisMonth = this.today.getMonth();
    var thisDay = this.today.getDate();
    var thisYear = this.today.getFullYear();

    this.link1 = document.getElementById('dateLink1');
    this.link2 = document.getElementById('dateLink2');
    this.link3 = document.getElementById('dateLink3');


    this.datefield1 = document.getElementById('gdate')

    this.graddate = new Date();
    if (validDate(this.datefield1.value)) { this.graddate = new Date(this.datefield1.value); } else { this.graddate = new Date();};

    var thisMonth1 = this.graddate.getMonth();
    var thisDay1 = this.graddate.getDate();
    var thisYear1 = this.graddate.getFullYear();

    this.datefield2 = document.getElementById('sdate')

    this.startdate = new Date();
    if (validDate(this.datefield2.value)) { this.startdate = new Date(this.datefield2.value); } else { this.startdate = new Date();};
    var thisMonth2 = this.startdate.getMonth();
    var thisDay2 = this.startdate.getDate();
    var thisYear2 = this.startdate.getFullYear();

    this.datefield3 = document.getElementById('edate')

    this.enddate = new Date();
    if (validDate(this.datefield3.value)) { this.enddate = new Date(this.datefield3.value); } else { this.enddate = new Date();};
    var thisMonth3 = this.enddate.getMonth();
    var thisDay3 = this.enddate.getDate();
    var thisYear3 = this.enddate.getFullYear();


    cal1 = new YAHOO.widget.Calendar2up("cal1","container1",(thisMonth1+1)+"/"+thisYear1,(thisMonth1+1)+"/"+thisDay1+"/"+thisYear1);
    cal1.title = "Select the expected date of graduation";
    cal1.setChildFunction("onSelect",setDate1);
    cal1.formfield = this.datefield1;
    cal1.render();

    cal2 = new YAHOO.widget.Calendar2up("cal2","container2",(thisMonth2+1)+"/"+thisYear2,(thisMonth2+1)+"/"+thisDay2+"/"+thisYear2);
    cal2.title = "Select the internship start date";
    cal2.setChildFunction("onSelect",setDate2);
    cal2.formfield = this.datefield2;
    cal2.render();

    cal3 = new YAHOO.widget.Calendar2up("cal3","container3",(thisMonth3+1)+"/"+thisYear3,(thisMonth3+1)+"/"+thisDay3+"/"+thisYear3);
    cal3.title = "Select the internship end date";
    cal3.setChildFunction("onSelect",setDate3);
    cal3.formfield = this.datefield3;
    cal3.render();
  }

  function showCalendar1() {
    changeDate1();
	cal2.hide();
	cal3.hide();
    cal1.outerContainer.style.top = (findPosY(link1)+link1.height-1) + "px";
    cal1.outerContainer.style.left = (findPosX(link1)) + "px";

    cal1.outerContainer.style.display='block';
  }

  function showCalendar2() {
    changeDate2();
	cal1.hide();
	cal3.hide();
    cal2.outerContainer.style.top = (findPosY(link2)+link2.height-1) + "px";
    cal2.outerContainer.style.left = (findPosX(link2)) + "px";
    cal2.outerContainer.style.display='block';
  }

  function showCalendar3() {
    changeDate3();
	cal1.hide();
	cal2.hide();
    cal3.outerContainer.style.top = (findPosY(link3)+link3.height-1) + "px";
    cal3.outerContainer.style.left = (findPosX(link3)) + "px";
    cal3.outerContainer.style.display='block';
  }

  function setDate1() {
    var date1 = cal1.getSelectedDates()[0];
    datefield1.value = (date1.getMonth() + 1) + '/' + date1.getDate() + '/' + date1.getFullYear();
    cal1.hide();
  }

  function setDate2() {
    var date2 = cal2.getSelectedDates()[0];
    datefield2.value = (date2.getMonth() + 1) + '/' + date2.getDate() + '/' + date2.getFullYear();
    cal2.hide();
  }

  function setDate3() {
    var date3 = cal3.getSelectedDates()[0];
    datefield3.value = (date3.getMonth() + 1) + '/' + date3.getDate() + '/' + date3.getFullYear();
    cal3.hide();
  }

  function validDate(entry){
    var rex=/\b(1[0-2]|0?[1-9])\/(0?[1-9]|[12][0-9]|3[01])\/\d\d\d\d/
    return rex.test(entry)
  }

  function changeDate1() {
    var datestring;
    if (validDate(cal1.formfield.value)) {
      datestring = new Date(cal1.formfield.value);
    } else {
      datestring = new Date();
    }
    var month = datestring.getMonth();
    var day = datestring.getDate();
    var year = datestring.getFullYear();

    cal1.select((month+1) + "/" + day + "/" + year);
    cal1.setMonth(month);
    cal1.setYear(year);
    cal1.render();
  }

  function changeDate2() {
    var datestring;
    if (validDate(cal2.formfield.value)) {
      datestring = new Date(cal2.formfield.value);
    } else {
      datestring = new Date();
    }
    var month = datestring.getMonth();
    var day = datestring.getDate();
    var year = datestring.getFullYear();

    cal2.select((month+1) + "/" + day + "/" + year);
    cal2.setMonth(month);
    cal2.setYear(year);
    cal2.render();
  }
  
  function changeDate3() {
    var datestring;
    if (validDate(cal3.formfield.value)) {
      datestring = new Date(cal3.formfield.value);
    } else {
      datestring = new Date();
    }
    var month = datestring.getMonth();
    var day = datestring.getDate();
    var year = datestring.getFullYear();

    cal3.select((month+1) + "/" + day + "/" + year);
    cal3.setMonth(month);
    cal3.setYear(year);
    cal3.render();
  }
  