var boxCurrent = "buttons";
var boxHeight = [];

function eventNext(e){
  nextStep((e.target) ? e.target : e.srcElement);
}

function eventBack(e, extra){
  stepBack(((e.target) ? e.target : e.srcElement), extra);
}

function stepBack(self, extra){
  var parent = self.parentNode;
  var head = "";
  var elScaleTo = 0;
  var elScaleFrom = 0;
  
  if(boxCurrent != parent.id){
    // Roll up current box
    head = parent.firstChild;
    while(head.tagName != "H6")
      head = head.nextSibling;
    elScaleTo = (self.offsetHeight / $(boxCurrent).offsetHeight) * 100;
    new Effect.BlindUp(boxCurrent, {duration:1});
    $(boxCurrent).style.height = boxHeight[boxCurrent];
    // Roll down new box
    elScaleFrom = (parent.offsetHeight / boxHeight[parent.id]) * 100;
    new Effect.Scale(parent, 100, 
      { duration: 1,
        scaleContent: false, 
        scaleX: false,
        scaleMode: { originalHeight: boxHeight[parent.id] },
        scaleFrom: elScaleFrom,
        afterSetup: function(effect) {
          effect.element.makeClipping();
          effect.element.show(); 
        },  
        afterFinishInternal: function(effect) {
          effect.element.undoClipping();
        }
      }
    );
    
    if(extra == "reset")
      document.forms[0].reset();
  }
  boxCurrent = parent.id;
}

function nextStep(self){
  var parent = self.parentNode;
  var head = "";
  var elScaleTo = 0;
  var target = "";
  var disabledTd = [];
  var i = 0;
  var elScaleTo = 0;
  var action = "";
  
  while(parent.className != "box")
    parent = parent.parentNode;
  
  head = parent.firstChild;
  while(head.tagName != "H6")
    head = head.nextSibling;
  
  elScaleTo = (head.offsetHeight / parent.offsetHeight) * 100;
  
  switch(self.id){
  case "single":
    target = "dates";
    updateCalendar("start_date", "Start Date", 0);
    $("container").style.width = "157px";
    $("calendar_start_date").style.display = "inline";
    $("display_end_date").style.display = "none";
    $("lbl_end_date").style.display = "none";
    $("lbl_start_date").innerHTML = "Event Date";
    break;
  case "multiple":
    target = "dates";
    updateCalendar("start_date", "Start Date", 0);
    updateCalendar("end_date", "End Date", 0);
    $("container").style.width = "324px";
    $("calendar_start_date").style.marginRight = "10px";
    $("calendar_start_date").style.display = "inline";
    $("calendar_end_date").style.display = "inline";
    Element.addClassName("calendar_end_date", "disabled");
    $("display_end_date").style.display = "inline";
    $("lbl_end_date").style.display = "inline";
    $("lbl_start_date").innerHTML = "Event Starts";
    break;
  default:
    target = "form";
    break;
  }
  
  new Effect.customBlindUp(parent.id, {duration:1, scaleTo: elScaleTo});
  action = "Effect.BlindDown('" + target + "', {duration:1})";
  window.setTimeout(action, 1000);
  action = "location = '#" + target + "'";
  window.setTimeout(action, 1000);
  
  boxCurrent = target;
}

function updateCalendar(target, label, today, onComplete){
  new Ajax.Updater("calendar_" + target, "php.include/calendar.forms.php", {
      method: "post",
      /*(onComplete != "" ? onComplete: disableCalendar() */
      parameters: "target=" + target + (label != "" ? "&label=" + label : "") + (today != "" ? "&today=" + today : "")
    });
}

function selectDate(stamp, display, target){
  var disabledTd = [];
  var i = 0;
  $(target).value = stamp;
  $("display_" + target).innerHTML = display;
  if($("calendar_end_date").style.display != "inline")
    $("end_date").value = stamp;
  if(target != "end_date" && $("calendar_end_date").style.display == "inline"){
    Element.addClassName("calendar_start_date", "disabled");
    ['td', 'th'].each(function(e){ disableClick('calendar_start_date', e) });
    
    updateCalendar("end_date", "End Date", stamp);
    Element.removeClassName("calendar_end_date", "disabled");
  }
  else
    nextStep($("calendar_" + target));
}

function disableClick(parent, tag){
  var elements = $(parent).getElementsByTagName(tag);
  for(var i = 0; i < elements.length; i++){
    elements[i].setAttribute("onclick_bak", elements[i].getAttribute("onclick"));
    elements[i].removeAttribute("onclick");
  }
}

function enableClick(parent, tag){
  elements = $(parent).getElementsByTagName(tag);
  for(var i = 0; i < elements.length; i++){
    elements[i].setAttribute("onclick", elements[i].getAttribute("onclick_bak"));
    elements[i].removeAttribute("onclick_bak");
  }
}

function doValidate(){
  var x = document.forms[0];
  if(x.name.value == ""){
    alert("Please enter the name of the event");
    document.forms[0].name.focus();
    return false;
  }
  else if(x.town.value == ""){
    alert("Please enter the host town");
    document.forms[0].town.focus();
    return false;
  }
  else if(x.county.value == ""){
    alert("Please enter the host county");
    document.forms[0].county.focus();
    return false;
  }
  else if(x.checkcode.value == "" || hex_md5(x.checkcode.value) != x.codemd5.value){
    alert("Please enter the correct validation number");
    x.checkcode.focus();
    return false;
  }
  else
    return true;
}

Object.extend(Effect, {
  customBlindUp: function(element) {
    element = $(element);
    element.makeClipping();
    return new Effect.Scale(element, 0, 
      Object.extend({ scaleContent: false, scaleX: false }, arguments[1] || {})
    );
    }
});