// **************************************************
// *
// * celebrant form submission
// *
// **************************************************

function searchCelebrant(frm) {
  var dtAppointment = document.getElementById("dtAppointment");
  if ( dtAppointment ) {
    if ( dtAppointment.value == "" ) {
      alert("Please select the ceremony date !!");
      return false;
    }

    var bChecked = false;
    
    var tmAppointment = frm.tmAppointment;
    if ( tmAppointment.length ) {    	
    	for (var i=0; i<tmAppointment.length; i++)
    		if ( tmAppointment[i].checked ) {
    			bChecked = true;
    			break;
    		}
    } else {
    	bChecked = tmAppointment.checked;
    }

  	if ( !bChecked ) {
    	alert("Please select the ceremony time !!");
    	return false;
  	}    
    
    frm.submit();
    return true;
  } else {
    return false;
  }
}

var _mdPrefix = "md";
var _mdTagName = "td";
var _mdTotalCell = 42;
var _mdBlank = " ";
var _mdSpecials = Array();
 
function mdObject(idx) {
  return document.getElementById(_mdPrefix + idx);
}

function mdSpecial(dateStr) {
  for (var i=0;i<_mdSpecials.length;i++)
    if ( dateStr == _mdSpecials[i] )
      return true;
  return false;
}

function mdSpecialDayArrangement() {
	// do something here
}

function mdFillCalendar(dtmWkday, numberOfDays) {
  var obj = null;  
  for (var i=0;i<_mdTotalCell;i++)
    if (( obj = mdObject(i) ) != null ) 
      obj.innerHTML = _mdBlank;  
  for (var i=0;i<numberOfDays;i++)
    if (( obj = mdObject(i + dtmWkday) ) != null ) 
      obj.innerHTML = i+1;  
  mdClear();
  mdSelected();
}

function mdSelectPeriod() {
  var optMonth = cboMonth.options[cboMonth.selectedIndex].value;
  var optYear = cboYear.options[cboYear.selectedIndex].value;
  var dateStr = "1 " + optMonth + " " + optYear;    
  var dateObj = new Date(dateStr);
  
  var dtmYear = ( dateObj.getYear() < 1900 ) ? dateObj.getYear() + 1900 : dateObj.getYear();
  var dtmMonth = dateObj.getMonth() + 1;
  var dtmDay = dateObj.getDate();
  var dtmWkday = dateObj.getDay();
    
  switch ( dtmMonth ) {
    case 2:
      mdFillCalendar(dtmWkday, 28);
      break;
    case 4:
    case 6:
    case 9:
    case 11:
      mdFillCalendar(dtmWkday, 30);
      break;
    default:
      mdFillCalendar(dtmWkday, 31);
      break;
  }
}

function mdPrevMonth() {
  var mIdx = cboMonth.selectedIndex;
  var yIdx = cboYear.selectedIndex;
  if ( mIdx <= 0 ) {
    if ( yIdx <= 0 ) return;
    cboMonth.selectedIndex = cboMonth.options.length - 1;
    cboYear.selectedIndex = yIdx - 1;
  } else {
    cboMonth.selectedIndex = mIdx - 1;
  }
  mdSelectPeriod();
}

function mdNextMonth() {
  var mIdx = cboMonth.selectedIndex;
  var yIdx = cboYear.selectedIndex;
  if ( mIdx >= cboMonth.options.length - 1 ) {
    if ( yIdx >= cboYear.options.length - 1 ) return;
    cboMonth.selectedIndex = 0;
    cboYear.selectedIndex = yIdx + 1;
  } else {
    cboMonth.selectedIndex = mIdx + 1;
  }
  mdSelectPeriod();
}

function mdClassOf(obj) {
  var md = _mdPrefix;
  var className = "";
  if ( obj != null ) {
    var oId = obj.id;
    if ( oId.indexOf(md) >= 0 ) {      
      var innerHTML = obj.innerHTML
      if ( innerHTML != _mdBlank ) {
        var optDay = innerHTML;
        var optMonth = cboMonth.options[cboMonth.selectedIndex].value;
        var optYear = cboYear.options[cboYear.selectedIndex].value;
        var dateStr = optDay + " " + optMonth + " " + optYear;
      
        var bSpecial = mdSpecial(dateStr);     	
        var bHoliday = ( parseInt(oId.replace(md, "")) % 7 == 0 ) ? true : false;
        className = ( bSpecial )
        	? ( bHoliday ) ? "calendar_gholiday" : "calendar_gweekday"
        	: ( bHoliday ) ? "calendar_holiday" : "calendar_weekday";
      } else {
        className = "calendar_weekday";
      }
    }
  }
  return className;
}

function mdClear() {
  var md = _mdPrefix;
  var col = document.getElementsByTagName(_mdTagName);
  if (( col != null ) && ( col.length > 0 )) {
    for (var i=0;i<col.length;i++)
      if ( col[i].id.indexOf(md) >= 0 )
        col[i].className = mdClassOf(col[i]);
  }
}

function mdSelected() {
  var dateStr = dtAppointment.value; // dtm2str_v(dtAppointment.value);
  if ( dateStr == "" ) return;    

  var col = dateStr.split(" ");
  var optDay = col[0];
  var optMonth = col[1];
  var optYear = col[2];
  
  if (( optMonth == cboMonth.options[cboMonth.selectedIndex].value ) &&
      ( optYear == cboYear.options[cboYear.selectedIndex].value )) {

    var dateObj = new Date(dateStr);
    var dtmYear = ( dateObj.getYear() < 1900 ) ? dateObj.getYear() + 1900 : dateObj.getYear();
    var dtmMonth = dateObj.getMonth() + 1;
    var dtmDay = dateObj.getDate();
    var dtmWkday = dateObj.getDay();
    var ndtmWkday = ( dtmWkday + 1 - dtmDay ) % 7;
    if ( ndtmWkday < 0 ) ndtmWkday += 7;
    
    var obj = null;
    if (( obj = mdObject(dtmDay - 1 + ndtmWkday) ) != null )
      obj.className = "calendar_selectday";

    switch ( dtmYear * 10000 + dtmMonth * 100 + dtmDay ) {
    	case 20111111:
    		mdSpecialDayArrangement();
    	  break;
   	}
  }
}

function mdHovered(obj) {
  obj.className = "calendar_hoverday";
}

function mdClick(obj) {
  var innerHTML = obj.innerHTML
  if ( innerHTML == _mdBlank ) return;

  var optDay = innerHTML;
  var optMonth = cboMonth.options[cboMonth.selectedIndex].value;
  var optYear = cboYear.options[cboYear.selectedIndex].value;
  var dateStr = optDay + " " + optMonth + " " + optYear;

  dtAppointment.value = dateStr; // dtm2str_v(dateStr);  
  mdClear();
  mdSelected();
} 

function mdOver(obj) {
  var innerHTML = obj.innerHTML
  if ( innerHTML == _mdBlank ) return;
  var className = obj.className;
  if (( className == "calendar_holiday" ) || ( className == "calendar_weekday" ))
    mdHovered(obj);
}

function mdOut(obj) {
  var innerHTML = obj.innerHTML
  if ( innerHTML == _mdBlank ) return;
  var className = obj.className;
  if ( className == "calendar_hoverday" )
    obj.className = mdClassOf(obj);
}

