// JavaScript Document


// Static functions for hiding and showing bits of the form
function showAdvancedOptions(noToggle) {
	advancedOptionsFlag = document.getElementById("advancedOptions");	
	var show = 0;
	//alert("currentFlag: " + advancedOptionsFlag.value);

	if (advancedOptionsFlag) {
			if (noToggle) {
				show = 	advancedOptionsFlag.value
			} else {
				show = 1- advancedOptionsFlag.value
			}
			
			advancedOptionsFlag.value = show;
	}
	
//	alert("show?: " + show);

	var tableRowStyle =  ( (navigator.appVersion.indexOf("MSIE")!=-1) ? "block" : "table-row");
	
	if (show > 0) {
		if (document.getElementById("normalRow")) { document.getElementById("normalRow").style.display = "none"};
		if (document.getElementById("advancedRow1")) { document.getElementById("advancedRow1").style.display = tableRowStyle};
		if (document.getElementById("advancedRow2")) { document.getElementById("advancedRow2").style.display = tableRowStyle};
		if (document.getElementById("advancedOptionsLink")) {document.getElementById("advancedOptionsLink").innerHTML = "Hide advanced options"};
		
	} else {
		if (document.getElementById("normalRow")) { document.getElementById("normalRow").style.display = tableRowStyle};
		if (document.getElementById("advancedRow1")) { document.getElementById("advancedRow1").style.display = "none"};
		if (document.getElementById("advancedRow2")) { document.getElementById("advancedRow2").style.display = "none"};
		if (document.getElementById("advancedOptionsLink")) {document.getElementById("advancedOptionsLink").innerHTML = "Show advanced options"};
		
	}
	
}



// handle dynamic search forms etc

function SearchForm() {
	
	this.listingSubTypeData = {}; // put the data in here
	this.activityIds = null;	// if this is defined that we should try to enable / disabled the check boxes depending on the ListingType selected
	
	
	
	this.listingSubTypeSelecteElementId = "listingSubTypeId" // can be changed by the page. This element should be an empty <select> element

	// use one or the ther of these options. Setting listingTypeId will make a fixed menu rather than a dynamic updating one
	this.listingTypeId = false;
	this.listingTypeSelectElementId = "typeid" // can be changed by the page. The ID of the select element containing the main listing type ids as values
	
	this.init = initForm;
	this.update = updateSubTypeList;
}


function initForm() {
	showAdvancedOptions(true);
	this.update();
	this.postcodeChanged();
}


function updateSubTypeList() {
	var typeId = this.listingTypeId || document.getElementById(this.listingTypeSelectElementId).options[document.getElementById(this.listingTypeSelectElementId).options.selectedIndex].value;
	// typeId is "type${id}", not just te id number;
	
	var options = document.getElementById(this.listingSubTypeSelecteElementId).options;
	
	options.length = 0;
	
	typeId = "type" +typeId;

	if (this.listingSubTypeData[typeId]) {	// don't bother if we have no sub type data for this main type
		
		for (var i=0; i<this.listingSubTypeData[typeId].length ; i++) {
			var text = this.listingSubTypeData[typeId][i]['Type'];
			var value = this.listingSubTypeData[typeId][i]['ID'];
			options[options.length] = new Option(text, value, false, false);
		}
	}
	


	if (this.activityIds) {	// do we have any activity boxes to en/disable?
		typeId = typeId.replace(/[^0-9]/g, "");	// make typeId a number;

		if (parseInt(typeId) <= 3) {	// if this the kind of Listing type that activities apply to?

			// make the activity section *not* greyed out, so they are active
			$(".bandMusicianOnly").show();
			/*
			for (var i=0;i<this.activityIds.length;i++) {
				if (document.getElementById("activity_name_" + this.activityIds[i])) {
					document.getElementById("activity_name_" + this.activityIds[i]).style.color="#000000";
				}			
				if (document.getElementById("activity_" + this.activityIds[i])) {
					document.getElementById("activity_" + this.activityIds[i]).disabled=false;
				}
			}
			if (document.getElementById("activityHeading")) {
				document.getElementById("activityHeading").style.color="#000000";
			}
			
			*/
		
		} else {
			$(".bandMusicianOnly").hide();
	
	/*		for (var i=0;i<this.activityIds.length;i++) {
				if (document.getElementById("activity_name_" + this.activityIds[i])) {
					document.getElementById("activity_name_" + this.activityIds[i]).style.color="#B6B6B6";
				}			
				if (document.getElementById("activity_" + this.activityIds[i])) {
					document.getElementById("activity_" + this.activityIds[i]).disabled=true;
				}		}
			if (document.getElementById("activityHeading")) {
				document.getElementById("activityHeading").style.color="#B6B6B6";
			}
			*/
	}
	}
	
}


SearchForm.prototype.hideRefineOptions = function() {
	document.getElementById("refineOptions").style.display="none";	
	
	document.getElementById("pageCover").style.display="none";	

}

SearchForm.prototype.showRefineOptions = function() {
	
		
	
	var pageWidth='100%';
	var pageHeight='100%';
       
	if( document.body && ( document.body.scrollWidth || document.body.scrollHeight ) ) {
		pageWidth = document.body.scrollWidth+'px';
		pageHeight = document.body.scrollHeight+'px';
	} else if( document.body.offsetWidth ) {
		pageWidth = document.body.offsetWidth+'px';
		pageHeight = document.body.offsetHeight+'px';
	}

	document.getElementById("pageCover").style.width=pageWidth;	
	document.getElementById("pageCover").style.height=pageHeight;
	
	document.getElementById("refineOptions").style.display="block";	
	document.getElementById("pageCover").style.display="block";	

}

SearchForm.prototype.placeNameChanged = function (selectElement) {
	var postcode = selectElement.options[selectElement.selectedIndex].value;
	document.getElementById("postcode").value = postcode;
	document.getElementById("postcodeAdvanced").value = postcode;
}


SearchForm.prototype.postcodeChanged = function (postcode) {
	var origPostcode = postcode;
	 if (!postcode || (postcode == "") || (postcode == "Enter post code")) {
		 postcode = "E1";
	 }
	 
	var selectElement = document.getElementById("placesList");
	var selectElement2 = document.getElementById("placesListAdvanced");
	
	if (!selectElement || !selectElement2) {
		return 0;
	}

	var pattern = new RegExp('^' + postcode,'i');
	for (var index=0; index <selectElement.options.length; index++) {
		
		var option = selectElement.options[index].value;
		if (pattern.test(option)) {
			// alert(option);
			selectElement.selectedIndex = index;
			selectElement2.selectedIndex = index;
		}
	}
	
	if (origPostcode && (origPostcode != "") ) {	// only set the value of the postcode if there was a value in the first place
		document.getElementById("postcode").value = postcode;
		document.getElementById("postcodeAdvanced").value = postcode;
	}
}

