var EmailPage = new Class.create({
  
  _form: {},
  
  initialize: function(){
  
    this._form = $("email-form");
  //  this._initEmailBtn();
    this._initEmailForm();
  },
   
  _initEmailBtn: function(){
    var emailBtn = $("email-page");
    var formContainer = $("email-form");
    
    formContainer.hide();
    formContainer.removeClassName('hide');
    
    emailBtn.observe("click",function(ev){ 
      ev.stop();
      if(formContainer.visible()){
        new Effect.SlideUp('email-form',{ duration: 0.3 });
      }else{
        new Effect.SlideDown('email-form',{ duration: 0.3 });
      };
    });
    
  },

  _initEmailForm: function(){
    
    var clearText = function(ev){
      var el = ev.findElement('input');
      if(el.value==el.title)el.clear(); 
    };
    
    var restoreText = function(ev){ 
      var el = (typeof ev.tagName!="undefined")?ev:ev.findElement('input');
      if(el.value.blank())el.value=el.title;
    };
    
    $$('#email-form input').each(function(item){
      item.observe('focus',clearText);
      item.observe('blur',restoreText);
    });

 /*   $$(".email-slider-button-close")[0].observe('click',function(ev){
      ev.stop();
      new Effect.SlideUp('email-form',{ duration: 0.3 });
    });  */
    
    this._form.observe('submit',function(ev){ 
      ev.stop();
      this._submitForm();
    }.bind(this));

  },

	_getCurrentDate: function() {
		var currentDate = new Date();
		var month = currentDate.getMonth();
		var day = currentDate.getDay();
		var date = currentDate.getDate();
		var year = currentDate.getFullYear();
		var weekday=new Array(7);
		weekday[0]="Sunday";
		weekday[1]="Monday";
		weekday[2]="Tuesday";
		weekday[3]="Wednesday";
		weekday[4]="Thursday";
		weekday[5]="Friday";
		weekday[6]="Saturday"; 
		var monthName=new Array(7);
		monthName[0]="January";
		monthName[1]="February";
		monthName[2]="March";
		monthName[3]="April";
		monthName[4]="May";
		monthName[5]="June";
		monthName[6]="July"; 
		monthName[7]="August"; 
		monthName[8]="September"; 
		monthName[9]="October"; 
		monthName[10]="November"; 
		monthName[11]="December"; 
		currentDate = weekday[day]+", "+monthName[month]+" "+date+", "+year;
		return currentDate;
	},
  
  _submitForm: function(){
    // this.showPopup("<p>You successfully sent an email</p>";
    if(!this._validate()) return;
    var theDate = this._getCurrentDate();
    var properties = {yname:this._form.yname.value,
                      ymessage:this._form.ymessage.value,
                      rname:this._form.rname.value,
											date:theDate,
											link:this._form.referer.value};
                      //ptitle:this._form.pageTitle.value};
    this._form.properties.value = Object.toJSON(properties);
		this._form.subject.value = this._form.yname.value+" has sent you a message from biooncology.com";
    this._form.request({
      method: 'POST',
      parameters: this._form.serialize(),
      onComplete: this._onSubmit.bind(this)
    })
    
  },
  
  _onSubmit: function(res){
    var msg = "";
    //console.info(res);
    if(res.status==200){
      msg = "You successfully sent an email";
    }else{
      msg = "Error: Sorry please try again later.";
    }
    //this._form.reset();
		window.location=this._form.referer.value;
    //this._showPopup(msg);
  },
  
  _validate: function(){
    
    var valid = true;
    
    var validator = {
      "rname": {
        re: new RegExp("[a-zA-Z ]"),
        msg: "Enter a valid name." },
      "to": {
        re: new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"),
        msg: "Enter a valid email address." },
      "from": {
        re: new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"),
        msg: "Enter a valid email address." },
      "ymessage": {
        re: new RegExp("[a-zA-Z0-9]{3,20}"),
        msg: "The message is too long." },
      "yname": {
        re: new RegExp("[a-zA-Z ]"),
        msg: "Enter a valid name." }
    };
    
    this._form.getElements().each(function(item){
      
      if(typeof validator[item.name] != 'undefined'){
        var val = validator[item.name];
        if(!val.re.test(item.value) || item.value == item.title){
          //item.value = val.msg;
          //item.title = val.msg;
          item.addClassName('invalid');
          item.siblings()[1].setStyle({"display":"block"});
          valid = false;
        }else{
          item.removeClassName('invalid');
          item.siblings()[1].setStyle({"display":"none"});
        };
      };
      
    });
    
    return valid;
  },
  
  _showPopup: function(msg){
    alert(msg);
 /*   
    var message = msg;

    var onOk = function(){ 
      jq$("#dialog-content").dialog("close");
    };
    
    jq$("#dialog-content").one("dialog:created",function(){
      var ok = jq$("<input type='button' value='Ok' />");
      jq$("#dialog-content div").append(ok);
      jq$(ok).click(onOk);
    });
    
    var cfg = { 
      title: "Email sent",
      dialogClass: "email-sent"
    };

    site.showDialog(message,cfg);
    */
  }
  
  
  
  
})