$j(document).ready(function(){
	$j("#step1").show();
	$j("#step2").hide();
	$j("#step3").hide();

	$j("#st1").addClass("active");
	$j("#apply_tabs").show();
	
	var formRules = {
		rules: {
			/* Step 1 */
			firstname: "required",
			lastname: "required",
			/* Step 2 */
			housenumber: "required",
			town: "required",
			county: "required",
			postcode: "required",
			phone: {
				required: true,
				digits: true
			},
			email: {
				required: true,
				email: true
			},
			emailconfirm: {
				required: true,
				email: true,
				equalTo: "#email"
			},
			/* Step 3 */
			aob: "required",
			introducer: "required",
			volume: "required",
			linked: "required",
			owner: "required",
			resi: "required",
			btl: "required",
			terms_accept: "required"
		}
	};

//Forwards to step two
	$j(".toStepTwo").click(function(){
		$j("#apply_now").validate(formRules);
		var st1Val = $j("#firstname, #lastname,").valid();
		if(st1Val){
			$j("#st1").removeClass("active");
			$j("#st2").addClass("active");
			showTwo();
			return false;
		} else {
			return false;
		}
	});
//Forwards to step three
	$j(".toStepThree").click(function(){
		$j("#apply_now").validate(formRules);
		var st2Val = $j("#housenumber, #town, #county, #postcode, #phone, #email, #emailconfirm").valid();
		if(st2Val){
			$j("#st2").removeClass("active");
			$j("#st3").addClass("active");
			showThree();
			return false;
		} else {
			return false;
		}
	});
//Forwards to Submit
	$j("#apply_submit").click(function(){
		var st3Val = $j("#aob, #introducer, #volume, #linked, #owner, #resi, #btl").valid();
		if(!st3Val){
			return false;
		}
	});
//Back to step one
	$j(".backStepOne").click(function(){
		showOne();
		$j("#st2").removeClass("active");
		$j("#st1").addClass("active");
		return false;
	});
//Back to step two
	$j(".backStepTwo").click(function(){
		showTwo();
		$j("#st3").removeClass("active");
		$j("#st2").addClass("active");
		return false;
	});
	
//Step 1 anchor
	$j("#st1 a").click(function(){
		showOne();
		$j("#st2").removeClass("active");
		$j("#st3").removeClass("active");
		$j("#st1").addClass("active");
		return false;
	});
//Step 2 anchor
	$j("#st2 a").click(function(){
		$j("#apply_now").validate(formRules);
		var st1Val = $j("#firstname, #lastname").valid();
		if(st1Val){
			showTwo();
			$j("#st1").removeClass("active");
			$j("#st3").removeClass("active");
			$j("#st2").addClass("active");
		return false;
		} else {
			return false;
		}
	});
//Step 3 anchor
	$j("#st3 a").click(function(){
		$j("#apply_now").validate(formRules);
		var st1Val = $j("#firstname, #lastname, #dob").valid();
		var st2Val = $j("#housenumber, #town, #county, #postcode, #phone, #email, #emailconfirm").valid();
		if(st1Val && st2Val){
			showThree();
			$j("#st1").removeClass("active");
			$j("#st2").removeClass("active");
			$j("#st3").addClass("active");
			return false;
		} else {
			return false;
		}
	});
	function showOne(){
		$j("#step1").show();
		$j("#step2").hide();
		$j("#step3").hide();
	}
	function showTwo(){
		$j("#step1").hide();
		$j("#step2").show();
		$j("#step3").hide();
	}
	function showThree(){
		$j("#step1").hide();
		$j("#step2").hide();
		$j("#step3").show();
	}
	
function radioEvent() {
	var addressCount = 0;//create the addresscount array.
	if(!document.getElementById("threeyrs_2")) {return;}//check for a no button
	if(!document.getElementById("threeyrs_1")) {return;}//check for a yes button
	var answerNo = document.getElementById("threeyrs_2");//grab the no button
	var answerYes = document.getElementById("threeyrs_1");//grab the yes button
	
	addEvent(answerNo, 'click', function() {
		showAddress();
		addRequiredClass();
		});
	addEvent(answerYes, 'click', function() {
		hideAddress();
		removeRequiredClass();
		});
	
	function addRequiredClass() {
		if(!document.getElementById("additionalAddress")) {return;}
		var additionalAddress = document.getElementById("additionalAddress");
		var addressInputs = additionalAddress.getElementsByTagName("input");
		for(var i=0; i < addressInputs.length; i++) {
			addressInputs[i].setAttribute("class", "required");
		}
	}
	function removeRequiredClass() {
		if(!document.getElementById("additionalAddress")) {return;}
		var additionalAddress = document.getElementById("additionalAddress");
		var addressInputs = additionalAddress.getElementsByTagName("input");
		for(var i=0; i < addressInputs.length; i++) {
			addressInputs[i].setAttribute("class", " ");
		}
	}
	
	var grabAddress = document.getElementsByTagName("div");
	/*Turn all the divs off*/
	for (i=0; i < grabAddress.length; i++) {
		if(grabAddress[i].className == "anotheraddresson"){
			grabAddress[i].className = "anotheraddressoff";
		}
	}
		function showAddress() {
			var linkDiv = document.createElement("div");
			linkDiv.setAttribute("class", "addaddress");
			
			var linkAnchor = document.createElement("a");
			var linkAnchorText = document.createTextNode("Add another address");
			linkAnchor.appendChild(linkAnchorText);
			linkAnchor.setAttribute("href", "#");
			linkAnchor.setAttribute("id", "aID");
			
			var phoneDiv = document.getElementById("phoneDiv");
			var parent = phoneDiv.parentNode;
			
			parent.insertBefore(linkAnchor, phoneDiv);
			
			for (i=0; i < grabAddress.length; i++) {
				if(grabAddress[i].className == "anotheraddressoff"){
					grabAddress[i].className = "anotheraddresson";
					var aID = document.getElementById("aID");
					grabAddress[i].appendChild(linkDiv);
					$j("#aID").click(function(){
						addAddress();
						return false;
					});
				}
			}
		}
		function addAddress() {
			addressCount++;//add to the address number array, php will itterate this many times
			var newAddressDiv = document.createElement("div");
			newAddressDiv.setAttribute("class", "anotheraddresson");
			
			var addressHeader = document.createElement("h4");
			var addressHeaderText = document.createTextNode("Previous Address");
			addressHeader.appendChild(addressHeaderText);
			newAddressDiv.appendChild(addressHeader);
			
			var forArray = ["housenumber", "town", "county","postcode", "timeataddressyears", "timeataddressmonths"];
			var textNodeArray = ["House number & Street:", "Town/City:", "County/Region:", "Post Code:", "Years at this Address:", "Months at this Address:"];
			var idArray = ["", "", "","", "years", "months"];
			
			for (i=0; i < forArray.length; i++) {
				var inputDiv = document.createElement("div");
				
				var newLabel = document.createElement("label");
				newLabel.setAttribute("for", forArray[i]);
				var labelTextNode = document.createTextNode(textNodeArray[i]);
				newLabel.appendChild(labelTextNode);
				inputDiv.appendChild(newLabel);
				
				var newInput = document.createElement("input");
				newInput.setAttribute("type", "text");
				newInput.setAttribute("name", forArray[i]+"_"+addressCount);//adds the address number to the iteration.
				newInput.setAttribute("id", idArray[i]);
				newInput.setAttribute("class", "required");
				newInput.setAttribute("value", "");//no php validation required.
				inputDiv.appendChild(newInput);
				
				newAddressDiv.appendChild(inputDiv);
				}
			
			var phoneDiv = document.getElementById("phoneDiv");
			var parent = phoneDiv.parentNode;
			
			parent.insertBefore(newAddressDiv, phoneDiv);
			
			var numberOfAddressesInput = document.createElement("input");
			var anotherAddressOnLength = document.getElementsByClassName("anotheraddresson").length;
			numberOfAddressesInput.setAttribute("type", "hidden");
			numberOfAddressesInput.setAttribute("name", "numberofaddresses");
			numberOfAddressesInput.setAttribute("value", anotherAddressOnLength);//counts the number of times the address occurs on the page.
			phoneDiv.appendChild(numberOfAddressesInput);
			
			// reload validation obj to catch new required fields
			var valid = new Validation('apply_now', {immediate : true, onFormValidate : formCallback});
		}
		
		function hideAddress() {
			if (!document.getElementById("aID")) {return false;}
			var theAddAddress = document.getElementById("aID");
			theAddAddress.style.display = "none";
			for (i=0; i < grabAddress.length; i++) {
				if(grabAddress[i].className == "anotheraddresson"){
					grabAddress[i].className = "anotheraddressoff";
				}
			}
		}	
}
radioEvent();
});
/*
function enableFormShowHide() {
	if (!document.getElementsByTagName) return;
	if(!$("apply")) return;
	$("step2").className="off";
	$("step3").className="off";
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.className == "link") {
			addEvent(anchors[i], 'click', 
				function() {
					doFormShowHide(this);
				}
			);
		}
	}
}
*/
/*
function doFormShowHide(objectRef){
	var previous_step = 1;
	var contentID = objectRef.toString().substr(objectRef.toString().indexOf("#")+1);
	var tab_list = $$("#apply_tabs li"); // create an array of li elements in div with id of "apply_tabs", using prototype 
	for(x=1;x<5;x++) {// turn all tabs off and hide content
		if($("step"+x).className == "on") previous_step = x; // save previous step
		$("step"+x).className = "off";
		$(tab_list[x-1]).className="";
	}
	
	// validate each section before next / previous 
    // iterate through each fieldset and grab all input based on their id
    // use this next line maybe if next stuff fails?
    //document.getElementByClassName("required", $("step"+x));
    
	var valid = false;
	var next_step = objectRef.toString().substr(objectRef.toString().indexOf("#")+5);// plus 5 because "step" is 4 chars + 1 for "#"

	var validate_input_array = $$("#step"+previous_step+" input");
	for(var i=0;i<validate_input_array.length;i++) {
		valid = Validation.validate(validate_input_array[i]);
		if(!valid) break;
	}
    if(next_step < previous_step) valid = true;
    if(valid) {
		// turn selected tab and content on
		$(contentID).className="on";
		$(tab_list[next_step-1]).className="active";
	} else {
			$("step"+previous_step).className="on";
			$(tab_list[previous_step-1]).className="active";
	}
}

//create function, it expects 2 values.
function insertAfter(newElement,targetElement) {
	//target is what you want it to go after. Look for this elements parent.
	var parent = targetElement.parentNode;
	
	//if the parents lastchild is the targetElement...
	if(parent.lastchild == targetElement) {
		//add the newElement after the target element.
		parent.appendChild(newElement);
		} else {
		// else the target has siblings, insert the new element between the target and it's next sibling.
		parent.insertBefore(newElement, targetElement.nextSibling);
		}
}
*/
