document.observe("dom:loaded", function() {
	new_user = new Signup();			
});
var Signup = Class.create();
Signup.prototype = {
	initialize: function() {
		this.main = $('main');
		
		var access_clone = $('tmp_holder').innerHTML; 
		$('tmp_holder').remove()
		//access_clone.id = "access_id";
		//access_clone = Object.toString(access_clone);
		//alert(access_clone);
		
		this.form = new Element("form", {"class": "pro_form", "action": "#", "onsubmit": "return false"});
		this.fieldset = new Element("fieldset")
		
		this.form.insert(this.fieldset);
		this.fieldset.insert(new Element("legend").update("Cougar Signup"));
		
		this.error = new Element("div", {"class": "error"}).hide();
		this.fieldset.insert(this.error);
		
		var ul = new Element("ul");
		
		this.fieldset.insert(ul);
		
		var elements = $H({"first_name": {"label": "First Name", "validate": "validate presence", "type": "text"}, "last_name": {"label": "Last Name", "validate": "validate presence", "type": "text"}, "user_name": {"label": "User Name", "validate": "validate presence", "type": "text"}, "user_pass": {"label": "Password", "validate": "validate presence", "type": "password"}, "user_pass_confirm": {"label": "Confirm Password", "validate": "validate presence confirm", "type": "password"}, "email": {"label": "Email Address", "validate": "validate presence email", "type": "text"}, "home_phone": {"label": "Home Phone", "validate": "", "type": "text"}, "cell_phone": {"label": "Cell Phone", "validate": "", "type": "text"}});
		
		elements.each(function(input){
			var li = new Element("li");
			ul.insert(li);
			
			var label = new Element("label", {"for": input.key}).update(input.value.label);
			var input = new Element("input", {"id": input.key, "name": input.key, "class": input.value.validate, "type": input.value.type, "value": ""});
			
			li.insert(label).insert(input);
		});
		
		var li = new Element("li");
		ul.insert(li);
		
		var label = new Element("label", {"for": "access_id"}).update("Account Type");
			
		li.insert(label).insert(access_clone);
		
		var li = new Element("li");
		ul.insert(li);
		
		var label = new Element("label").update("&nbsp;");
		var input = new Element("input", {"type": "submit", "value": "Signup"});
		
		li.insert(label).insert(input);
		
		this.main.insert(this.form);
		
		this.val = new Required(this.form);
		
		this.form_submit_click = this.form_submit.bindAsEventListener(this);
		Event.observe(this.form, "submit", this.form_submit_click);
	},
	form_submit: function(event){
		Event.stop(event);
		if(this.val.massValidate()){
			this.error.hide().update();
			var params = this.form.serialize(true);
			params.cmd = "save_new_user";
			$(document.body).startWaiting();
			new Ajax.Request('index.php',{
				parameters: params,
				onComplete: function(transport) {
					$(document.body).stopWaiting();
					var response = transport.responseText.evalJSON();
					
					if(response.error){
						switch(response.type){
							case "email_exists":
								this.email_exists(response);
							break;
							case "user_exists":
								this.user_exists(response);
							break;
							default:
								this.error.update(response.message).show().highlight();
							break;
						}
					}
					else{
						this.val.destroy();
						this.fieldset.update(response.message);
					}
					
				}.bind(this)
			});
		}
	},
	user_exists: function(response){
		this.error.insert(new Element("div").update(response.message));
		var send = new Element("a", {"href": "#"}).update("If you have forgotten your username or password, click here to email login information");
		this.error.insert(send);
		
		this.error.show().highlight();
		
		send.observe("click", function(event){
			$(document.body).startWaiting();
			Event.stop(event);
			params = {"cmd": "send_login_info", "user_name": response.user_name};
			new Ajax.Request('index.php',{
				parameters: params,
				onComplete: function(transport) {
					$(document.body).stopWaiting();
					var nresponse = transport.responseText.evalJSON();
					
					if(nresponse.error){
						this.error.insert(new Element("div").update(nresponse.message)).highlight();
					}
					else{
						this.error.update(new Element("div").update(nresponse.message)).highlight();
					}
				}.bind(this)
			});
		}.bind(this))
	},
	email_exists: function(response){
		this.error.insert(new Element("div").update(response.message));
		var send = new Element("a", {"href": "#"}).update("If you have forgotten your username or password, click here to email login information");
		this.error.insert(send);
		
		this.error.show().highlight();
		
		send.observe("click", function(event){
			$(document.body).startWaiting();
			Event.stop(event);
			params = {"cmd": "send_login_info", "email": response.email};
			new Ajax.Request('index.php',{
				parameters: params,
				onComplete: function(transport) {
					$(document.body).stopWaiting();
					var nresponse = transport.responseText.evalJSON();
					
					if(nresponse.error){
						this.error.insert(new Element("div").update(nresponse.message)).highlight();
					}
					else{
						this.error.update(new Element("div").update(nresponse.message)).highlight();
					}
				}.bind(this)
			});
		}.bind(this))
	}
}
