/**
 * DialogArrangeVisit
 */
var DialogArrangeVisit = Class.create({
  /**
   * Init DialogArrangeVisit
   */
  initialize: function() {
	this.options = Object.extend({
	  elemContent : null
	}, arguments[0] || { });		
	
	this.strDialog = "";
	this.fade = new EggFade({elemContent:this.options.elemContent});
    this.elemErr = this.options.elemContent.select('.err')[0];

	this.elemDateTimeBlock = this.options.elemContent.down('.datetimeblock'); 
	this.elemUpdatesField = this.options.elemContent.down('.updatesblock .updates');
	this.elemMsgField = this.options.elemContent.down('.updatesblock .msg');
	this.elemCloseLink = this.options.elemContent.down('.close');
	this.elemCheckBack = this.options.elemContent.down('.check .back');
	// we fade a dummy checkbox as IE cannot fade the uniform checkbox
	if (Prototype.Browser.IE) {	
	  this.fadeCheckBack = new EggFade({elemContent:this.elemCheckBack});
		
	  this.elemCheck = this.options.elemContent.down('.check .btn');
	  this.elemCheck.style.visibility = "hidden";
	}
	else {
	  this.elemCheckBack.style.display = "none";
	}

	this.strServerURL = "server/index.php?contenttype=sendemail";
	
    // add field validation
    var location = new Spry.Widget.ValidationTextField("location", "none", {validateOn:["change"], additionalError: 'Callback_additionalErrorZone_complete'});
    var lastname = new Spry.Widget.ValidationTextField("lastname", "none", {validateOn:["change"], additionalError: 'Callback_additionalErrorZone_complete'});
    var email = new Spry.Widget.ValidationTextField("email", "none", {validateOn:["change"], additionalError: 'Callback_additionalErrorZone_complete'});
    var phone = new Spry.Widget.ValidationTextField("phone", "none", {validateOn:["change"], additionalError: 'Callback_additionalErrorZone_complete'});
	var msg = new Spry.Widget.ValidationTextarea("msg", {validateOn:["blur", "change"]});
    var date = new Spry.Widget.ValidationTextField("date", "none", {validateOn:["change"], additionalError: 'Callback_additionalErrorZone_complete'});    
    var time = new Spry.Widget.ValidationTextField("time", "time", {format:"HH:mm", useCharacterMasking:true, validateOn:["change"], additionalError: 'Callback_additionalErrorZone_complete'});
  },
  
  show: function(strDialog, strCode) {
	this.strDialog = strDialog;  

	// set code
	$('form_code').value = strCode;

	// hide titles
    var elemItems = this.options.elemContent.select('.dialogtitle');    
    for (var nItem = 0; nItem < elemItems.length; nItem++) {
      elemItems[nItem].style.display = "none";
    }	
	
	// show dialog title
	var elemTitle = this.options.elemContent.down('.dialogtitle.'+strDialog); 
	elemTitle.style.display = "inline";
	
    this.elemErr.style.visibility = "hidden";
	  
    switch (this.strDialog) {
      case "visit":
   		this.bShowDateTime = true;  
    	  
   	    this.elemDateTimeBlock.style.visibility = "visible";
    	this.elemDateTimeBlock.style.display = "inline";
    	
       	this.elemUpdatesField.style.visibility = "visible";
       	this.elemUpdatesField.style.display = "inline";

       	this.elemMsgField.style.visibility = "hidden";
       	this.elemMsgField.style.display = "none";
       	
       	this.elemCloseLink.style.visibility = "visible";
       	this.elemCloseLink.style.display = "inline";
    	break;
    	
      case "enquiry":
   	    this.elemDateTimeBlock.style.visibility = "hidden";
    	this.elemDateTimeBlock.style.display = "none";
    	
       	this.elemUpdatesField.style.visibility = "visible";
       	this.elemUpdatesField.style.display = "inline";

       	this.elemMsgField.style.visibility = "hidden";
       	this.elemMsgField.style.display = "none";
       	
       	this.elemCloseLink.style.visibility = "visible";
       	this.elemCloseLink.style.display = "inline";
      	break;
      	
      case "signup":
   	    this.elemDateTimeBlock.style.visibility = "hidden";
       	this.elemDateTimeBlock.style.display = "none";
       	
       	this.elemUpdatesField.style.visibility = "hidden";
       	this.elemUpdatesField.style.display = "none";
       	
       	this.elemMsgField.style.visibility = "hidden";
       	this.elemMsgField.style.display = "none";
       	
       	this.elemCloseLink.style.visibility = "hidden";
       	this.elemCloseLink.style.display = "none";
      	break;
    }
    this.showNow.bind(this).delay(1);    
  },
  
  showNow: function() {  
	this.fade.show();
	if (Prototype.Browser.IE) {	
	  this.fadeCheckBack.show();
      this.showCheckNow.bind(this).delay(1);
	}
  },
  
  showCheckNow: function() {
    this.elemCheck.style.visibility = "visible";
    this.elemCheckBack.style.visibility = "hidden";
  },
  
  hide: function() {
	this.fade.hide();
	if (Prototype.Browser.IE) {		
      this.elemCheckBack.style.visibility = "visible";
      this.elemCheck.style.visibility = "hidden";
	  this.fadeCheckBack.hide();
	}
  },
  
  sendEmail: function(strFrom) {
    var strURL = this.strServerURL + "&content=email" + this.strDialog;
    new Ajax.Request(strURL, {
      parameters: $(strFrom).serialize(true),
      method:'post',
      onSuccess: function(response) {
      }.bind(this),
      onFailure: function(response) {
      }.bind(this)
    });
  },
  
  submit: function(strForm) {
	// fill in dummy data into date fields
	switch (this.strDialog) {
      case "visit":
    	break;
    	
      default:
    	$('datepicker').value = "01/01/2000";
	    $('timepicker').value = "12:00";
    	break;
	}
	
    var ret = Spry.Widget.Form.validate($(strForm));	
    if (ret) {
      this.elemErr.style.visibility = "hidden";
      this.sendEmail(strForm);
      
  	  switch (this.strDialog) {
  	    case "signup":
     	  this.elemMsgField.style.visibility = "visible";
       	  this.elemMsgField.style.display = "inline";
       	  break;
  	  }
      
      // fire event
  	  this.options.elemContent.fire("dialog:valid");      
	}
	else {
	  this.elemErr.style.visibility = "visible";
	}	 
  }

});

