// JavaScript Document

//WORK AREA FLOW

function initialiseWorkAreas() {
	var closeme = getElementsByClassName(document, "*", "component_panel");
	var closeme_sub = getElementsByClassName(document, "*", "sub_component_panel");
	for (var i=0; i < closeme_sub.length; i++) {
		closeme.push(closeme_sub[i]);
	}
	for (var i = 1; i < closeme.length; i++) {
		closeme[i].style.display = "none";
	}
	var theforms = document.getElementsByTagName("form");
	for (var i=0; i < theforms.length; i++) {
		theforms[i].reset();
	}
	
	closeTypeGroups();
	
	var first_button = document.getElementById("select_blind_button");
	first_button.style.display = "none";
}

function initialiseSwatches() {
	var closeSwatches = getElementsByClassName(document, "*", "colourswatch");
	for (var i = 0; i < closeSwatches.length; i++) {
		closeSwatches[i].style.display = "none";
	}
}

function openWorkAreas() {
	var openme = getElementsByClassName(document, "*", "startclosed");
	for (var i = 0; i < openme.length-1; i++) {
		openme[i].style.display = "block";
	}
}

//ERROR HANDLING

function initialiseErrors() {
	var errors = getElementsByClassName(document, "div", "error");
	for (var i = 0; i < errors.length; i++) {
		errors[i].style.display = "none";
	}
}

function createError(string,number){ // The error is passed to this function to be 
	var errorDivsArray = getElementsByClassName(document, "div", "error");
	killError(number);
	var error_p = document.createElement("p");
	var error_text = document.createTextNode(string);
	error_p.appendChild(error_text);
	errorDivsArray[number].appendChild(error_p);
	errorDivsArray[number].style.display = "block";
}

function killError(number){
	var errorDivsArray = getElementsByClassName(document, "div", "error");
	if (errorDivsArray[number].getElementsByTagName("p").length > 0) {
		errorDivsArray[number].removeChild(errorDivsArray[number].getElementsByTagName('p')[0]);
	}	
}

function errorCheck(number,error_string){
	switch (number)
	{
		case 0:
			createError("Please make sure you have selected a type of blind",0);
		break
		case 1:
			createError("Please select a colour",1);
		break
		case 2:
			createError("Please enter a control/motor side and (unless creating a motorised blind) a numerical control drop in millimetres",2);
		break
		case 3:
			createError("Please select a measurement fit",3);
		break
		case 4:
			createError("Please enter both a numerical width and a numerical drop in millimetres",4);
		break
		case 100: // THE ONE HUNDRED CODE IS AN ERROR OCCURING WHEN DIMENSIONS DON'T MEET SPEC, IT HAS VARIABLE POSSIBLE ENTRIES DEFINED IN THE REST OF THE CODE
			createError(error_string,4);
		break
		case 101: // THE ONE HUNDRED CODE IS AN ERROR OCCURING WHEN DIMENSIONS DON'T MEET SPEC ON EDIT CONFIRMATION
			createError(error_string,5);
		break
		default:
			alert("FATAL ERROR - REFRESH BROWSER");
		break
	} 
}

function nextStep(number){
	var component_panel_to_open = getElementsByClassName(document, "*", "component_panel");
	component_panel_to_open[number].style.display = "none";
	component_panel_to_open[number+1].style.display = "block";
	if (number == 0) {
		initialiseSwatches();
		openSelectedSwatch();
	}
	if (number ==5) {
		for (i=0;i < component_panel_to_open.length; i++) {
			component_panel_to_open[i].style.display = "none";
			component_panel_to_open[number+1].style.display = "block";
		}
	}

}

function backStep(number){
	// Create array of panels
	var component_panels = getElementsByClassName(document, "*", "component_panel");
	// Close current panel
	component_panels[number].style.display = "none";
	// Open previous panel
	component_panels[number-1].style.display = "block";
}

function startAgain() {
	reInitialiseGlobals();
	var start_panel = getElementsByClassName(document, "*", "component_panel");
	start_panel[0].style.display = "block";
}

function finalBlindRowValidation(){
	var array_to_validate = [ blind_type , blind_colour , blind_control_position , blind_control_drop , control_colour , control_upgrade , blind_measurement_fit , blind_width , blind_drop , stacked_height , blind_price ];
/*	var error_flag = false;
	var blind_error = "You have either not entered, or entered incorrect information for:\n";
	
	
	for (var i = 0; i < array_to_validate.length; i++) { //INITIAL CHECK THROUGH
		if (!array_to_validate[i]) {
			error_flag = true;
		}
	}
	
	if (error_flag == true) {
		for (var i = 0; i < array_to_validate.length; i++) {
			if (!array_to_validate[i]){
				switch (i) {
					case 0 :
					blind_error = blind_error + "Blind Type\n";
					break
					case 1 :
					blind_error = blind_error + "Blind Colour\n";
					break
					case 2 :
					blind_error = blind_error + "Blind Control Position\n";
					break
					case 3 :
					blind_error = blind_error + "Blind Control Drop\n";
					break
					case 4 :
					blind_error = blind_error + "Blind Control Colour\n";
					break
					case 5 :
					//blind_error = blind_error + "Blind Control Upgrade\n";
					break
					case 6 :
					blind_error = blind_error + "Blind Measurement Fit\n";
					break
					case 7 :
					blind_error = blind_error + "Blind Width\n";
					break
					case 8 :
					blind_error = blind_error + "Blind Drop\n";
					break
					default :
					blind_error = blind_error + "This error has been thrown for unknown reasons, please contact Brightshine and report it\n";
				}	
			}
		}
		blind_error = blind_error + "Please correct this error and press the button again.";
		alert (blind_error);
		return false;
		} else { */
			return array_to_validate;
			
	//	}
}

// VALIDATION FOR FINAL SUBMIT

function finalValid(form) {
	var validate_array = getElementsByClassName(document, "input", "req");
	var error_string = "Please enter:\n";
	var error_present = false;
	for (var i = 0; i < validate_array.length; i++) {
		if (!validate_array[i].value) {
			switch (i) {
				case 0 :
				error_string = error_string + "- a forename\n";
				error_present = true;
				break
				case 1 :
				error_string = error_string + "- a surname\n";
				error_present = true;
				break
				case 2 :
				error_string = error_string + "- a street address\n";
				error_present = true;
				break
				case 3 :
				error_string = error_string + "- a City or Region\n";
				error_present = true;
				break
			}
		}
	}
	if (error_present == true) {
		alert(error_string);
		return false;
	} else {
		return true;
	}
}
	
// REMOVE THE COLS FROM THE INVOICE
function killColl() {
	var colgroupToKill = document.getElementsByTagName("colgroup");
	colgroupToKill[0].firstChild.remove();
	colgroupToKill[0].firstChild.remove();
}