Colourways.Membership = {};

Colourways.Membership.Business = new Class({
	
	control: null,
	
	representatives: [],
	
	initialize: function() {
		this.control = $("AddExtraRepresentative");
		
		var representatives = $$(".extraRepresentative");

        var show = false;

		for (var i = 0; i < representatives.length; i++) {
			var item = new Colourways.Membership.Business.Representative(representatives[i]);
			this.representatives.push(item);
			if (!item.isVisible() && !show) {
				show = true;
			}
			
			if (item.isVisible()) {
				item.mark();
			}
		}
		
		if (show) {
			this.control.setStyle("display", "inline");
		}
		
		this.controls = $$(".removeExtraRepresentative");
		
		this.control.addEvent("click", function() {
			var last = false;
			var representative = null;
	        for(var i = 0; i < this.representatives.length; i++) {
				if (!this.representatives[i].isVisible()) {
					representative = this.representatives[i];
					last = this.representatives.length - 1 == i;
					break;
				}
			}
			
			if (representative) {
				
				representative.populate();
				representative.show();
			}
			if (last) {
				this.control.setStyle("display", "none");
			}
			
		}.bind(this));
	}
	
});

Colourways.Membership.Business.Representative = new Class({
	
	element: null,
	
	control: null,
	
	initialize: function(element) {
		this.element = element;
		this.control = element.getElement(".removeExtraRepresentative");
		
		this.control.addEvent("click", this.hide.bind(this));
	},
	
	isVisible: function() {
		return this.element.hasClass("visible");
	},
	
	show: function() {
		this.element.addClass("visible");
		var elements = this.element.getElements(".field");
        for (var i = 0; i < elements.length; i++) {
			elements[i].removeClass("disabled");
        }
		elements = this.element.getElements("select");
		elements.combine(this.element.getElements(".text"));
		elements.combine(this.element.getElements(".statetext"));
        elements.combine(this.element.getElements("textarea"));
        for (var i = 0; i < elements.length; i++) {
            elements[i].getParent().removeClass("disabled");
            elements[i].removeClass("disabled");
            elements[i].disabled = "";
        }
		this.element.reveal();
		new Fx.Scroll(window).toElement(this.element).start();
		this.mark();
	},
	
	hide: function() {
		$("AddExtraRepresentative").setStyle("display", "inline");
		this.element.removeClass("visible");
		var elements = this.element.getElements(".field");
		for (var i = 0; i < elements.length; i++) {
			elements[i].addClass("disabled");
		}
		
		elements = this.element.getElements("select");
		elements.combine(this.element.getElements(".text"));
		elements.combine(this.element.getElements(".statetext"));
		elements.combine(this.element.getElements("textarea"));
		for (var i = 0; i < elements.length; i++) {
			elements[i].getParent().addClass("disabled");
            elements[i].addClass("disabled");
            elements[i].disabled = "disabled";
			elements[i].value = "";
        }
		this.unmark();
		this.element.dissolve();
	},
	
	unmark: function() {
		var email = this.element.getElement("input[id$=Email]");
        email.getParent().getParent().removeClass("required");
        email.removeClass("required");
        email.removeClass("validate-email");
       
        var name = this.element.getElement("input[id$=Name]")
       name.getParent().getParent().removeClass("required");
        name.removeClass("required");
	},
	
	mark: function() {
		var email = this.element.getElement("input[id$=Email]");
		email.addClass("required");
		email.getParent().getParent().addClass("required");
		email.addClass("validate-email");
       
	    var name = this.element.getElement("input[id$=Name]")
	    name.getParent().getParent().addClass("required");
        name.addClass("required");
	},
	
	populate: function() {
	   var street = $$("textarea[id=Member_Address_Street]")[0].value;
	   var suburb = $$("input[id=Member_Address_Suburb]")[0].value;
	  // var state  = $$("select#Member_Address_State")[0].value;
	   
	   var postcode = $$("input[id=Member_Address_Postcode]")[0].value;
	   var country = $$("select[id=Member_Address_Country]")[0].value;
	   
	   this.element.getElement("textarea[id$=Address_Street]").value = street;

	   this.element.getElement("input[id$=Address_Suburb]").value = suburb;
	  // this.element.getElement("select[id$=Address_State]").value = state;
	  
	  this.element.getElement("input[id$=Address_Postcode]").value = postcode;
	  this.element.getElement("select[id$=Address_Country]").value = country;
	}
	
});

Colourways.Membership.Confirmation = new Class({
	
	form: null,
	
	confirmed: false,
	
	element: null,
	
	dialog: null,
	
	
	background: null,
	
	initialize: function() {
		this.form = $("MembershipForm_applications");
		
		var hidden = new Element("input", {
			"name": "action_confirm",
			"value": "Confirm",
			"type": "hidden"
		});
		hidden.inject(this.form);
		
		this.form.addEvent("submit", function(event) {
			if (this.confirmed) {
				return;
			}
			event.stop();
			this.show();
			
		}.bind(this));
	},
	
	show: function() {
		if (!this.element) {
		   var size = window.getScrollSize();
		   this.background = new Element("div", {
		   	  "id": "Background"
		   });
		   this.background.setStyle("opacity", 0.5);
		   this.background.setStyle("height", size.y);
		   this.background.inject(document.body);
		   
		
			this.element = new Element("div", {
				"id": "Confirm"
			});
			
			this.element.setStyle("top", 10);
			this.element.setStyle("left", size.x / 2 -370);
			
			this.element.inject(document.body);
			
			this.dialog = new Element("div", {
				"class": "dialog loading"
			});
			this.dialog.setOpacity(0);
			this.dialog.inject(this.element);
			this.dialog.set("load", {
				"onComplete": function() {
					this.dialog.removeClass("loading");
					var button = new Element("input", {
		                "type": "button",
		                "class": "action",
		                "value": "Accept Intellectual Property Agreement"
		            });
					button.addEvent("click", this.hide.bind(this));
		            button.inject(this.element);
				}.bind(this)
			});
			this.dialog.load("/intellectual-property-agreement/");
			new Fx.Scroll(window).toTop();
			
			
			this.dialog.fade.delay(100, this.dialog, ["in"]);
			
			
			
			
		}
	},
	
	hide: function() {
		this.confirmed = true;
		this.form.submit();
	}
});

window.addEvent("load", function() {
	if ($("AddExtraRepresentative")) {
		new Colourways.Membership.Business();
	}
	
	if ($("confirmation")) {
		new Colourways.Membership.Confirmation();
	}
});



