function isValidEmail(myEmail) {

  var isValidE = true;
  
  var regEx = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
  isValidE = myEmail.match(regEx);

  return isValidE;

}

var STEP_FORM = function(form,initButton){
  this.init(form,initButton);
}

STEP_FORM.prototype = {
  form : {},
  validateStep : null,
  
  init : function (form,initButton){
    var $this = this;
  	this.form = form;
  	if(initButton == undefined)  initButton = true;
  	if(initButton){
	  	$("a.step_title,input.next_step",this.form).click(function(){
				$('input[name="step_index"]',$this.form).val($(this).attr("step_index"));
				if($this.validateStep == null || ($this.validateStep != null && $this.validateStep())) 
					$this.submit($(this).attr("name"));
				else alert("Please fill in all required fields!");
				return false;
			});	
		}
  },
  
  submit : function(name){
  	$('input[type="checkbox"]',this.form).each(function(){
  	  var $name = $(this).attr("name");
  	  var val = $(this).attr("checked") ? 1 : 0;
  	  $(this).attr("name","");
  	  var hidden = $("input[type='hidden'][name='"+$name+"']",this.form);
  	  if(hidden.length > 0) hidden.val(val);
  		else $(this).after('<input type="hidden" name="'+$name+'" value="'+val+'" />');
  	});
  	if(!name) name = "step"+this.getInput("step_index").val();
  	this.form.attr("action","#"+name)
  	this.form.submit();
  	$('input[type="checkbox"]',this.form).each(function(){
  		$(this).attr("name",$(this).next().attr("name"));
  	});
  },
  
  getLabel : function(obj){
  	var name = obj.attr("name");
  	if($("#"+name+"_label").length != 0)
  		return $("#"+name+"_label").eq(0);
  	var i = 0;
    while($("label",obj).length == 0 && i < 5){
    	obj = obj.parent();
    	i++;
    }
  	return $("label",obj).eq(0);
  },
  
  addRequired : function(obj){
  	var label = this.getLabel(obj);
  	label.addClass("error");
  	obj.addClass("error");
  	setTimeout(function(){
  			obj.removeClass("error");
  	},2000);
  },
  
  removeRequired : function(obj){
  	var label = this.getLabel(obj);
  	label.removeClass("error");
  	obj.removeClass("error");
  },
  
  getInput : function(name){
    var selectors = new Array('input[name="'+name+'"]','select[name="'+name+'"]','textarea[name="'+name+'"]')
    for(var i in selectors){
    	var inp = $(selectors[i],this.form);
    	if(inp.length > 0) return inp.eq(0);
    }
    return null;
  },
  
  requiredText : function(name){
  	var inp = this.getInput(name);
  	var val = "";
  	if(inp.attr("class") == "tinymce") val = tinyMCE.get(inp.attr("name")).getContent();
		else val = inp.val(); 
  	if(val.length == 0){
			this.addRequired(inp);  		
  		return false;
  	}
  	else this.removeRequired(inp);
  	return true;
  },
  
  requiredRadio : function(name){
  	var inp = this.getInput(name);
  	var ok = $('input[name="'+name+'"]:checked',this.form).length != 0;
  	var label = inp.parent();
  	if(ok) label.removeClass("error");
  	else{
  		label.addClass("error");
  		setTimeout(function(){
  			label.removeClass("error");
  	},2000);
  	}
  	return ok;
  }
}