    var oldResults = null;
    var thisValue = null;	
	function init() {
		
			
			guid = window.location.href.split("/");
			guid = guid[guid.length-1];
			if(whichbrowser) {
				if(!whichbrowser.isHiFi) {
					document.body.innerHTML = "<h1>WARNING: This part of the website requires IE6+, Firefox 2+, Safari 2+ or Opera 9+ </h1>";
				} else {
				//	if($id("save")) {
					//	alert("SAVE");
						//$id("save").type = "submit";
					//	$id("save").onClick ="alert('test');"
						
					//}
				}
			}
			if($id("country")) {
				$id("country").onchange=changeCountry;
			}
		
		
			if($id("userName")) {
				$id("userName").onchange=function() {
				
					request = new HttpRequest();
					request.addHeader("Content-Type", "text/html");
					request.onComplete = function(response) {
						if(response.text) {
							$id("userNameResponse").innerHTML = response.text;
							$id("userNameWrap").className = "fail";
						} else {
							$id("userNameResponse").innerHTML = "";
							$id("userNameWrap").className = "success";
						}
					}
	
					request.get("/helper/username/" + $id("userName").value);
				}
			}
			if($id("email")) {
				$id("email").onchange=function() {
					//alert("TEST");
					request = new HttpRequest();
					request.addHeader("Content-Type", "text/html");
					request.onComplete = function(response) {
						if(response.text =="") {
							if($id("email").value != $id("emailConfirm").value && $id("emailConfirm").value) {
								$id("emailResponse").innerHTML = "Your email and email confirmation are not the same";
								$id("emailWrap").className = "fail";
							} else {
								$id("emailResponse").innerHTML = "";
								$id("emailWrap").className = "success";
							}
						} else {
							$id("emailResponse").innerHTML = response.text;
							$id("emailWrap").className = "fail";
						}
					}
					if(checkEmail(this.value)) {
						request.get("/helper/email/" + $id("email").value);
					 } else {
							$id("emailResponse").innerHTML = "Invalid Email";
							$id("emailWrap").className = "fail"; 
					 }
				}
			}
			if($id("emailConfirm")) {
				$id("emailConfirm").onchange=function() {
					$id("email").onchange();	
				}
			}
			if($id("password")) {
				$id("password").onchange=function() {
					if($id("password").value != "" && $id("password").value == $id("passwordConfirm").value) {
						$id("passwordResponse").innerHTML = "";
						$id("passwordWrap").className = "success";
					} else {
						$id("passwordResponse").innerHTML = "Please make sure both passwords match";
						$id("passwordWrap").className = "fail";
						
					}
				}
			}
			if($id("passwordConfirm")) {
				$id("passwordConfirm").onchange=function() {
					$id("password").onchange();	
				}
			}
			if($id("day")) {
				$id("day").onchange = function() {
					checkBirthDate();	
				}
			}
			if($id("month")) {
				$id("month").onchange = function() {
					checkBirthDate();	
				}
			}
			if($id("year")) {
				$id("year").onchange = function() {
					checkBirthDate();	
				}
			}
			if($id("terms_and_conditions")) {
				$id("terms_and_conditions").onchange = function() {
					
					if(this.checked) {
						this.parentNode.parentNode.className="success";
					} else {
						this.parentNode.parentNode.className="fail";
					}
				}
			}

			$id("here").onclick = function() {
				/*if(!$id("terms_and_conditions").checked) {
					alert("You must agree to our terms and conditions");
					return false;
				}
				if($id("emailResponse").innerHTML != "") {
					alert("Please enter a correct email address");
					return false;
				}
				if($id("userNameResponse").innerHTML != "") {
					alert("Please enter a unique username");
					return false;
				}	
				if($id("userName").value == "") {
					alert("Please enter a username");
					return false;
				}
				if($id("email").value == "") {
					alert("Please enter a correct email address");
					return false;
				}*/
				if($class("fail").length > 0) {
					alert("Please fill in items marked in red");
					return false;
				}
			
			}
			
	
			
		c = $class("formField");
		for (var i = 0; i < c.length; i++) {
			//c[i].onkeypress = this.parent.parent.=;
			c[i].onkeypress = doNode;
			c[i].onblur = doNode;
			c[i].onchange = doNode;
			//c[i].onmouseout = formOff;
		} 

	}
	function doNode() {
		if(this.value) {
			this.parentNode.parentNode.className="success";
		} else {
			this.parentNode.parentNode.className="fail";
		}
	}
function formHover() {
	this.style.backgroundColor="#420000";

}
function formOff() {
	this.style.backgroundColor="";
}

function checkEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}			
			
function checkBirthDate() {
	var d = $id("day").value;
	var m = $id("month").value;
	var y = $id("year").value;
	var now = new Date();
	if(!checkDate(d,m,y)) {
		$id("birthDayResponse").innerHTML = "This is an invalid date";
		$id("birthDayWrap").className = "fail";
	} else {
		$id("birthDayResponse").innerHTML = "";
		$id("birthDayWrap").className = "success";
	}
	if(y < 1900 || y > now.getFullYear()) {
		$id("birthDayResponse").innerHTML = "This is an invalid date, please enter a year between 1900 and " + now.getFullYear();		
		$id("birthDayWrap").className = "fail";
	}
	//if(y > (now.getYear()-17)) {
	//	$id("birthDayResponse").innerHTML = "Sorry you are too young";	
	//}

}
	
function checkDate(day,month,year) {


	thisDate = new Date(year,month-1,day);	
	if(thisDate.getDate() != day || thisDate.getMonth() + 1 != month || thisDate.getFullYear() != year) {
		return false;
	} else {
		return true;	
	}
}		
			
function getGenreList() {

	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		
		$id("displayGenreList").innerHTML += response.text;
		$id("genreCancelButton").onclick=function() {cancelLightBox('getGenreLightBox');$id('genreAddButton').style.display='';}	
		$id('genreAddButton').style.display="none";			
		$id("subGenreList").onchange = function() {

		request2 = new HttpRequest();
		request2.addHeader("Content-Type", "text/html");
		request2.onComplete = function(response) {
		
			$id("displayGenreList").innerHTML = response.text;//+= "<li>" + this.options[i].text + "</li>";
			$id('genreAddButton').style.display="";
			cancelLightBox('getGenreLightBox');
			

		}
			for(var i=$id("subGenreList").options.length-1;i>=0;i--) {
				if($id("subGenreList").options[i].selected) {
					if($id("subGenreList").options[i].value) {
						request2.get("/update/public/add/genre?guid=" + $id("subGenreList").options[i].value + "&name=" + $id("subGenreList").options[i].value);
					} 
				}
			}
		}					
		request2 = new HttpRequest();
		request2.addHeader("Content-Type", "text/html");
		request2.onComplete = function(response) {
			createSelectOptions($id("genreList"),response.text);
			//$id("genreList").innerHTML = response.text;
		}
		request2.get("/helper/genre");	
						
						
		$id("genreList").onchange = function() {
			requestSubGenre = new HttpRequest();
			requestSubGenre.addHeader("Content-Type", "text/html");
			requestSubGenre.onComplete = function(response) {
				createSelectOptions($id("subGenreList"),response.text);
				//$id("subGenreList").innerHTML = response.text;
			}
			requestSubGenre.get("/helper/genre/" + this.value);									
						
					
		}
	}
	request.get("/dialogue/getGenre.html");	
		
}





function getArtistSearch() {
	type = "T";
	$id('artistSearchButton').style.display="none";
	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		$id("artistDialogue").innerHTML += response.text;
		delNode($id("dJoined"));
		delNode($id("dLeft"));
		
		$id("artistOK").onclick = function() {
				request3 = new HttpRequest();
				request3.addHeader("Content-Type", "text/html");
				request3.onComplete = function(response) {
					//alert(response.text)
					$id("displayArtistList").innerHTML = response.text;// "<li>" + this.options[i].text + "</li>";
					
					cancelLightBox('addArtistLightBox');
					$id('artistSearchButton').style.display="";
				}
				for(var i=$id("searchResults").options.length-1;i>=0;i--) {
					if($id("searchResults").options[i].selected) {
						
					//	$id("backend").innerHTML = ("/edit/person/" + guid + "/add/artist/" + type + "?guid=" + thisValue+ "&name=" + $id("searchResults").options[i].text + "&startDate=" + $id("yearJoined").value + "-" + $id("monthJoined").value + "-" + $id("dayJoined").value+ "&endDate=" + $id("yearLeft").value + "-" + $id("monthLeft").value + "-" + $id("dayLeft").value);
						if($id("searchResults").options[i].value) {
							request3.get("/update/public/add/artist?guid=" + thisValue+ "&name=" + $id("searchResults").options[i].text );	
						} 
					}
				}
			}		
		$id("artistCancel").onclick = function() {
			cancelLightBox('addArtistLightBox');
			$id('artistSearchButton').style.display="";
			return false;
		}
		
		StartTheTimerArtist();			

		$id("searchResults").onchange = function() {
			 for(var i=this.options.length-1;i>=0;i--)
				{
					if(this.options[i].selected) {
						
						eval(this.options[i].value);
						
						//this.options[selectedIndex].onclick();	
					}
				}	
		}
					
		
	}
	request.get("/dialogue/addArtist.html");	
		
}




function getPersonSearch() {
	type ="T";
	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		
		$id("personDialogue").innerHTML += response.text;
		$id('personSearchButton').style.display="none";
		delNode($id("dateJoined"));
		delNode($id("dateLeft"));

		$id("artistCancel").onclick = function() {
			cancelLightBox('addPersonLightBox');
			
			$id('personSearchButton').style.display="";
			return false;
		}
		StartTheTimerPerson();			

		$id("searchResults").onchange = function() {
			 for(var i=this.options.length-1;i>=0;i--)
				{
					if(this.options[i].selected) {
						//alert(this.options[i].value);
						eval(this.options[i].value);
						
						//this.options[selectedIndex].onclick();	
					}
				}	
		}

		//$id("searchResults").onchange = function() {
		$id("artistOK").onclick = function() {
			 for(var i=$id("searchResults").options.length-1;i>=0;i--)
				{
					if($id("searchResults").options[i].selected) {
									
						request2 = new HttpRequest();
						request2.addHeader("Content-Type", "text/html");
						request2.onComplete = function(response) {
							$id("displayPersonList").innerHTML = response.text;//+= "<li>" + this.options[i].text + "</li>";
							//$id("selectedPerson-" + type).value += "|" + this.options[i].value;
							cancelLightBox('addPersonLightBox');
							$id('personSearchButton').style.display="";
						}
						//alert(type);
						//ddate = "&startYear=" + $id("yearJoined").value + "&startMonth=" + $id("monthJoined").value + "&startDay=" + $id("dayJoined").value;
						//if(type == "p") {
						//	ddate += "&endYear=" + $id("yearLeft").value + "&endMonth=" + $id("monthLeft").value + "&endDay=" + $id("dayLeft").value;
						//} 
						
						
						
					//	$id("backend").innerHTML = ("/edit/person/" + guid + "/add/artist/" + type + "?guid=" + thisValue+ "&name=" + $id("searchResults").options[i].text + "&startDate=" + $id("yearJoined").value + "-" + $id("monthJoined").value + "-" + $id("dayJoined").value+ "&endDate=" + $id("yearLeft").value + "-" + $id("monthLeft").value + "-" + $id("dayLeft").value);
						if($id("searchResults").options[i].value) {
								request2.get("/update/public/add/heroes?guid=" + thisValue + "&name=" + $id("searchResults").options[i].text);	
						}
						
						
						
						//alert(this.options[i].text);		
					}
					//selectbox.remove(i);
				}	
		}
		
	}
	request.get("/dialogue/addPerson.html");	
		
}




function getAlbumSearch(type) {
	
	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		$id('recordingSearchButton').style.display="none";
		$id("albumDialogue-"+type).innerHTML += response.text;
		//$id("dateJoined").innerHTML = "";
		//$id("dateLeft").innerHTML="";
		
		
		$id("albumCancel").onclick = function() {
			cancelLightBox('addPersonLightBox');
			
			$id('recordingSearchButton').style.display="";
			return false;
		}
		
		
		StartTheTimerAlbum();			

		$id("searchResults").onchange = function() {
			 for(var i=this.options.length-1;i>=0;i--)
				{
					if(this.options[i].selected) {
						eval(this.options[i].value);
						
						//this.options[selectedIndex].onclick();	
					}
				}	
		}

		//$id("searchResults").onchange = function() {
		$id("artistOK").onclick = function() {
			 for(var i=$id("searchResults").options.length-1;i>=0;i--)
				{
					if($id("searchResults").options[i].selected) {
									
						request2 = new HttpRequest();
						request2.addHeader("Content-Type", "text/html");
						request2.onComplete = function(response) {
							$id("displayAlbumList-" + type).innerHTML = response.text;//+= "<li>" + this.options[i].text + "</li>";
							//$id("selectedPerson-" + type).value += "|" + this.options[i].value;
							cancelLightBox('addPersonLightBox');
							$id('recordingSearchButton').style.display="";
						}
						//alert(type);
						//ddate = "&startYear=" + $id("yearJoined").value + "&startMonth=" + $id("monthJoined").value + "&startDay=" + $id("dayJoined").value;
						//if(type == "p") {
						//	ddate += "&endYear=" + $id("yearLeft").value + "&endMonth=" + $id("monthLeft").value + "&endDay=" + $id("dayLeft").value;
						//} 
						
						
						
					//	$id("backend").innerHTML = ("/edit/person/" + guid + "/add/artist/" + type + "?guid=" + thisValue+ "&name=" + $id("searchResults").options[i].text + "&startDate=" + $id("yearJoined").value + "-" + $id("monthJoined").value + "-" + $id("dayJoined").value+ "&endDate=" + $id("yearLeft").value + "-" + $id("monthLeft").value + "-" + $id("dayLeft").value);
						if($id("searchResults").options[i].value) {
								request2.get("/update/public/add/collection?guid=" + thisValue + "&name=" + $id("searchResults").options[i].text);	
							
						} 
						//alert(this.options[i].text);		
					}
					//selectbox.remove(i);
				}	
		}
		
	}
	request.get("/dialogue/addAlbum.html");	
		
}
function delNode(node) {
			node.parentNode.removeChild(node);
}

function delArtists(node, n) {

	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		
		delNode(node.parentNode);
		//alert(response.text);
	}
	if(confirm("Are you sure you want to delete " + n + "?")) {
		request.get("/update/public/delete/artist?name=" + n);		
	}
}

function delHeroes(node, n) {

	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
	//	alert(response.text);
		delNode(node.parentNode);
		//alert(response.text);
	}
	if(confirm("Are you sure you want to delete " + n + "?")) {
		request.get("/update/public/delete/heroes?name=" + n);		
	}
}

function delCollection(node, n) {

	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		//alert(response.text);
		delNode(node.parentNode);
		//alert(response.text);
	}
	if(confirm("Are you sure you want to delete " + n + "?")) {
		request.get("/update/public/delete/collection?name=" + n);		
	}
}


function delGenre(node, n) {

	request = new HttpRequest();
	request.addHeader("Content-Type", "text/html");
	request.onComplete = function(response) {
		//alert(response.text);
		delNode(node.parentNode);
		//alert(response.text);
	}
	if(confirm("Are you sure you want to delete " + n + "?")) {
		request.get("/update/public/delete/genre?name=" + n);		
	}
}





 //timerID = self.setTimeout("StartTheTimer()", 1);
 
 function StartTheTimerRegister() {
	 if(oldResults != $id("personSearch").value && $id("personSearch").value != "") {
	 	oldResults = $id("personSearch").value;
		searchResult = new HttpRequest();
		searchResult.addHeader("Content-Type", "text/html");
		searchResult.onComplete = function(response) {
			$id("searchResults").innerHTML = response.text;
		}
		searchResult.get("/search/person/option?q=" + $id("artistSearch").value + "&limit=50");	
	 }
	  timerID = self.setTimeout("StartTheTimerPerson()", 1000);

	
	//	$tag("body")[0].innerHTML += "TEST";
 }
 
   function StartTheTimerPerson() {

	 if($id("personSearch") && (oldResults != $id("personSearch").value && $id("personSearch").value != "")) {
		 
	 	oldResults = $id("personSearch").value;
		searchResult = new HttpRequest();
		searchResult.addHeader("Content-Type", "text/html");
		searchResult.onComplete = function(response) {
			//alert(response.text);
			createSelectOptions($id("searchResults"), response.text);
			timerID = null;
		}
		searchResult.get("/search/person/option?q=" + $id("personSearch").value + "&limit=50");	
	 }
	  timerID = self.setTimeout("StartTheTimerPerson()", 1000);

	
	//	$tag("body")[0].innerHTML += "TEST";
 }
 
 
 
  function StartTheTimerArtist() {
  	//alert("TEST");
	 if($id("artistSearch") && (oldResults != $id("artistSearch").value && $id("artistSearch").value != "")) {
		 
	 	oldResults = $id("artistSearch").value;
		searchResult = new HttpRequest();
		searchResult.addHeader("Content-Type", "text/html");
		searchResult.onComplete = function(response) {
			//alert(response.text);
			createSelectOptions($id("searchResults"), response.text);
			timerID = null;
		}
		searchResult.get("/search/artist/option?q=" + $id("artistSearch").value + "&limit=50");	
	 }
	  timerID = self.setTimeout("StartTheTimerArtist()", 1000);

	
	//	$tag("body")[0].innerHTML += "TEST";
 }


  function StartTheTimerAlbum() {
  	//alert("TEST");
  
	 if($id("albumSearch") && (oldResults != $id("albumSearch").value && $id("albumSearch").value != "")) {
		 
	 	oldResults = $id("albumSearch").value;
		searchResult = new HttpRequest();
		searchResult.addHeader("Content-Type", "text/html");
		searchResult.onComplete = function(response) {
			//alert(response.text);
			createSelectOptions($id("searchResults"), response.text);
			timerID = null;
		}
		searchResult.get("/search/recording/option?q=" + $id("albumSearch").value + "&limit=50");
	
	 }
	  timerID = self.setTimeout("StartTheTimerAlbum()", 1000);

	
	//	$tag("body")[0].innerHTML += "TEST";
 }
 
 
 
 var ie7_Options = new Array(); // 

function optionsStringToHTMLElementsAndAttributes(str)
{
	// 14.06.2007 to workaround ie7 issue with setting city.innerHTML
	// dissect the string to create a collection of elements and attributes
	// this may be able to be done more efficiently using regular expressions
	
	// empty the array in case there are already values in here
	ie7_Options.length = 0;	
	
	var opts = str.split('<option');		

	for (var i=1; i<opts.length; i++)
	{

		ie7_Options[i] = new Array();
		
		ie7_Options[i].value = opts[i].split("value='")[1];

		
		
		ie7_Options[i].value = ie7_Options[i].value.substring(0, ie7_Options[i].value.indexOf("'"));
		
		if (opts[i].match('selected'))
		{
		//	cannot use split technique as lazy ie syntax: 'selected' rather than 'selected="selected"'
			ie7_Options[i].selected = 'selected';
		}
		
		ie7_Options[i].string = opts[i].split('>')[1];
		ie7_Options[i].string = ie7_Options[i].string.split('<')[0];		
		//alert(ie7_Options[i].toStrit());		
	}
}
 
 
 
function createSelectOptions(selectEl, responseText)
{
	
	// 14.06.2007 to workaround ie7 issue with setting city.innerHTML	
	optionsStringToHTMLElementsAndAttributes(responseText)
	
	selectEl.innerHTML = '';		

	for (var i=1; i<ie7_Options.length; i++)
	{
		var myOption = document.createElement('option');
			myOption.value = ie7_Options[i].value;
		
		if (ie7_Options[i].selected)
		{
			myOption.selected = true;	
		}
		
		var myOptionString = document.createTextNode(ie7_Options[i].string);		
		myOption.appendChild(myOptionString);		
		
		selectEl.appendChild(myOption);		
	}	
}