var advancedSearchHelpCurrent;
var advancedSearchHelpMappings;

function processLinks() {
	if(document.getElementsByTagName) {
		var links = document.getElementsByTagName('a');

		for(i=0;i<links.length;i++) {
			/* Initiate pop-ups */
			if(links[i].className == 'popUp') {
				links[i].onclick = popUp;
			}
			/* End initiate pop-ups */
			/* Post to SOD site */
			if(links[i].href == 'http://www.tsoshop.co.uk/StandingOrders/login.aspx') {
				links[i].onclick = postToSodSite;
			}
			/* End post to SOD site */
		}
	}
}

function selectAll() {
	var wishlistElements = document.getElementById('wishlist').elements;

	for (i=0; i<wishlistElements.length; i++) {
		if (wishlistElements[i].name.substring(0,7) == 'product') {
			if (this.checked) {
				wishlistElements[i].checked = true;
			}
			else {
				wishlistElements[i].checked = false;
			}
		}
	}
}

function addSelectAll() {
	if(document.getElementById('wishlist') && document.createElement) {
		var wishlistRows = document.getElementById('wishlist').getElementsByTagName('tr');		
		var selectAllRow = wishlistRows[wishlistRows.length - 1];

		var selectAllLabel = document.createElement('label');
		selectAllLabel.htmlFor = 'selectAll';
		selectAllLabel.title = 'Select all saved items for actions (see below)';
		selectAllLabel.appendChild(document.createTextNode('Select All'));

		var selectAllCheckbox = document.createElement('input');
		selectAllCheckbox.type = 'checkbox';
		selectAllCheckbox.id = 'selectAll';
		selectAllCheckbox.name = 'selectAll';
		selectAllCheckbox.onclick = selectAll;

		selectAllRow.getElementsByTagName('th')[0].appendChild(selectAllLabel);
		selectAllRow.getElementsByTagName('td')[0].appendChild(selectAllCheckbox);
	}
}

function advancedSearchHelpInit() {
	var advancedSearchHelp;
	
	if(advancedSearchHelp = document.getElementById('advancedSearchHelp')) {

		advancedSearchHelp.className = 'interactive';
		
		var advancedSearchHelpDivs;

		advancedSearchHelpMappings = new Object();
	
		if(document.links) {
			for(i=0;i < document.links.length; i++) {
				if(document.links[i].className == 'help') {
					document.links[i].style.display = 'none';

					var href = document.links[i].href;

					var helpID = href.substring(href.indexOf('#') + 1, href.length);

					var field;

					if(document.links[i].parentNode.tagName.toLowerCase() == 'div' || document.links[i].parentNode.tagName.toLowerCase() == 'fieldset') {
						field = document.links[i].parentNode;
					}
					else {
						field = document.links[i].parentNode.parentNode; // assume the help link's grandparent is the div/fieldset containing the form elements
					}

					var inputs = field.getElementsByTagName('input');
					var selects = field.getElementsByTagName('select');


					if(inputs.length) {
						for(j=0; j<inputs.length; j++){
							advancedSearchHelpMappings[inputs[j].id] = helpID;
							
							inputs[j].onfocus = advancedSearchHelpShow;
						}
					}

					if(selects.length) {
						for(j=0; j<selects.length; j++){
							advancedSearchHelpMappings[selects[j].id] = helpID;

							selects[j].onfocus = advancedSearchHelpShow;
						}
					}
				}
			}
		}

		advancedSearchHelpDivs = advancedSearchHelp.getElementsByTagName('div');
		
		for(i=0; i<advancedSearchHelpDivs.length; i++) {
			if(advancedSearchHelpDivs[i].id.substring(0,5) == 'help_') {
				advancedSearchHelpDivs[i].className = 'helpHidden';
			}
		}
		
		var interactiveIntroText = document.createTextNode('Relevant help text will be displayed when each field is selected.');
		
		var currentIntroParagraph = document.getElementById('advancedSearchHelpIntro');
		
		currentIntroParagraph.replaceChild(interactiveIntroText, currentIntroParagraph.firstChild);
		
		advancedSearchHelpCurrent = 'advancedSearchHelpIntro';
	}
}

function advancedSearchHelpShow() {
	document.getElementById(advancedSearchHelpCurrent).className = 'helpHidden';
	document.getElementById(advancedSearchHelpMappings[this.id]).className = 'helpDisplayed';
	advancedSearchHelpCurrent = advancedSearchHelpMappings[this.id];
	return true;
}

function advancedSearchClassificationInit() {	
	if(document.getElementById && document.advsearch) {
		var classifications = document.getElementById('classification');
		var selectClassificationImage = document.getElementById('SelectClassification');
		
		classifications.onchange = function() {document.advsearch.submit();};
		selectClassificationImage.parentNode.removeChild(selectClassificationImage);
	}
}

function addBackButtonOnClick() {
	if (document.getElementById('backButton')){
		document.getElementById('backButton').onclick = function(){history.go(-1);return false;};
	}
}


function popUps() {
	if(document.getElementsByTagName) {
		var links = document.getElementsByTagName('a');
		
		for(i=0;i<links.length;i++) {
			if(links[i].className == 'popUp') {
				links[i].onclick = popUp;
			}
		}
	}
}


function popUp() {
	window.open(this.href, '', 'width=800,height=500,scrollbars=yes,menubar=yes');
	
	return false;
}

function passwordMeterDisplay()
{
	if (document.getElementById('passwordStrengthContainer')){
		document.getElementById('passwordStrengthContainer').style.display = '';
		document.getElementById('passwordDescription').style.display = '';
	}
}

window.onload = function() {
	processLinks();
	addSelectAll();
	advancedSearchHelpInit();
	advancedSearchClassificationInit();
	popUps();
	addBackButtonOnClick();
	passwordMeterDisplay();
};