/**
 *
 * Javascript functions for the administration of records.
 *
 */


/**
 *
 * Adds a record.
 *
 */
function add() {
	document.record_form.operation.value = "add";
	document.record_form.ID.value = "";
	document.record_form.submit();
}

/**
 *
 * Adds an artist field to the page.
 *
 */
function add_artist(name,ID) {
	var artists = document.getElementById("related_artists");
	
	// Get index
	var last_div;
	if (artists.childNodes.length > 0)
		last_div = artists.childNodes[artists.childNodes.length - 1];
	var index = 0;
	if (last_div)
		index = parseInt(last_div.id.substr(11)) + 1;
	
	// Label
	var label_elem = document.createElement("label");
	var label_text = document.createTextNode(index + 1);
	label_elem.appendChild(label_text);
	
	// Input
	var input_elem = document.createElement("input");	
	var size_attr = document.createAttribute("size");
	size_attr.nodeValue = "50";
	input_elem.setAttributeNode(size_attr);
	
	var max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "100";
	input_elem.setAttributeNode(max_attr);
	
	var value_attr = document.createAttribute("value");
	if (name)
		value_attr.nodeValue = name;
	else {
		// Propose artist's name
		var artist = document.getElementById("artist");
		value_attr.nodeValue = artist.value;
	}
		
	input_elem.setAttributeNode(value_attr);
	
	var name_attr = document.createAttribute("name");
	name_attr.nodeValue = "artist_input_" + index;
	input_elem.setAttributeNode(name_attr);
	
	// Delete button
	var del_elem = document.createElement("a");
	var type_attr = document.createAttribute("href");
	type_attr.nodeValue = "javascript:remove_element('div_artist_" + index + "');";
	del_elem.setAttributeNode(type_attr);
	
	var img_elem = document.createElement("img");
	var img_elem_src = document.createAttribute("src");
	img_elem_src.nodeValue = "images/delete.gif";
	img_elem.setAttributeNode(img_elem_src);
	
	del_elem.appendChild(img_elem);
	
	// Link to artist
	if (!isNaN(ID)) {
		var a_elem = document.createElement("a");
		var href_attr = document.createAttribute("href");
		href_attr.nodeValue = "?inc=artists&ID="+ID;
		a_elem.setAttributeNode(href_attr);
		a_elem.appendChild(document.createTextNode(name));
	}
	
	// DIV container
	var div_elem = document.createElement("div");	
	var div_id = document.createAttribute("id");
	div_id.nodeValue = "div_artist_" + index;
	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(label_elem);
	div_elem.appendChild(input_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(del_elem);
	div_elem.appendChild(document.createTextNode(" "));
	if (!isNaN(ID))
		div_elem.appendChild(a_elem);
	
	artists.appendChild(div_elem);
	
	// Set focus in field
	if (!name)
		input_elem.focus();
}

/**
 *
 * Adds a credit field to the page.
 *
 */
function add_credit(ID,name,type,track) {
	var credits = document.getElementById("credits");
	
	// Get index
	var last_div;
	if (credits.childNodes.length > 0)
		last_div = credits.childNodes[credits.childNodes.length - 1];
	var index = 0;
	if (last_div)
		index = parseInt(last_div.id.substr(11)) + 1;
		
	// Label
	var label_elem = document.createElement("label");
	var label_text = document.createTextNode(index + 1);
	label_elem.appendChild(label_text);
	
	// Input
	var input_elem = document.createElement("input");	

	var size_attr = document.createAttribute("size");
	size_attr.nodeValue = "50";
	input_elem.setAttributeNode(size_attr);
	
	var max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "100";
	input_elem.setAttributeNode(max_attr);
	
	var value_attr = document.createAttribute("value");
	value_attr.nodeValue = (name?name:"");
	input_elem.setAttributeNode(value_attr);
	
	var name_attr = document.createAttribute("name");
	name_attr.nodeValue = "credit_input_" + index;
	input_elem.setAttributeNode(name_attr);
	
	// Type
	var type_elem = document.createElement("select");
	var type_name_attr = document.createAttribute("name");
	type_name_attr.nodeValue = "credit_type_" + index;
	type_elem.setAttributeNode(type_name_attr);
	
	var option;
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Featuring"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "f";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Produced by"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "p";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Co-Produced by"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "c";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Mixing by"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "x";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Mastered by"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "m";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Scratches by"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "s";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Edited by"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "e";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	option = document.createElement("option");
	option.appendChild(document.createTextNode("Others"));
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = "o";
	option.setAttributeNode(value_attr);
	type_elem.appendChild(option);
	
	// Track
	var track_elem = document.createElement("select");
	var track_name_attr = document.createAttribute("name");
	var track_onclick_attr = document.createAttribute("onclick");
	track_name_attr.nodeValue = "credit_track_" + index;
	track_elem.setAttributeNode(track_name_attr);
	track_onclick_attr.nodeValue = "update_tracks_for_dropdown(" + index + ",'');";
	track_elem.setAttributeNode(track_onclick_attr);
	
	// Set type
	if (type != undefined)
		type_elem.value = type;
	
	// Delete button
	var del_elem = document.createElement("a");
	var type_attr = document.createAttribute("href");
	type_attr.nodeValue = "javascript:remove_element('div_credit_" + index + "');";
	del_elem.setAttributeNode(type_attr);
	
	var img_elem = document.createElement("img");
	var img_elem_src = document.createAttribute("src");
	img_elem_src.nodeValue = "images/delete.gif";
	img_elem.setAttributeNode(img_elem_src);
	
	del_elem.appendChild(img_elem);
	
	// DIV container
	var div_elem = document.createElement("div");	
	var div_id = document.createAttribute("id");
	div_id.nodeValue = "div_credit_" + index;
	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(label_elem);
	div_elem.appendChild(input_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(type_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(track_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(del_elem);
	
	credits.appendChild(div_elem);
	
	// Set track
	update_tracks_for_dropdown(index,track);
	
	// Set focus in new cread if "Add credit" has been clicked
	if (!ID)
		input_elem.focus();
}

/**
 *
 * Adds an ebay auction to a record.
 *
 */
function add_ebay_auction(itemID) {
	var auctions = document.getElementById("ebay_auctions");
	
	// DIV container
	var div_elem = document.createElement("div");	
	var div_id = document.createAttribute("id");
	div_id.nodeValue = "div_ebay_auction_" + itemID;
	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(document.createTextNode(itemID));
	
	auctions.appendChild(div_elem);
}


/**
 *
 * Adds a label field to the page.
 *
 */
function add_label(name,ID) {
	var labels = document.getElementById("related_labels");
	
	// Get index
	var last_div;
	if (labels.childNodes.length > 0)
		last_div = labels.childNodes[labels.childNodes.length - 1];
	var index = 0;
	if (last_div)
		index = parseInt(last_div.id.substr(10)) + 1;
	
	// Label
	var label_elem = document.createElement("label");
	var label_text = document.createTextNode(index + 1);
	label_elem.appendChild(label_text);
	
	// Input
	var input_elem = document.createElement("input");	
	var size_attr = document.createAttribute("size");
	size_attr.nodeValue = "50";
	input_elem.setAttributeNode(size_attr);
	
	var max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "100";
	input_elem.setAttributeNode(max_attr);
	
	var value_attr = document.createAttribute("value");
	value_attr.nodeValue = (name?name:"");
	input_elem.setAttributeNode(value_attr);
	
	var name_attr = document.createAttribute("name");
	name_attr.nodeValue = "label_input_" + index;
	input_elem.setAttributeNode(name_attr);
	
	// Link to label
	if (!isNaN(ID)) {
		var a_elem = document.createElement("a");
		var href_attr = document.createAttribute("href");
		href_attr.nodeValue = "?inc=labels&ID="+ID;
		a_elem.setAttributeNode(href_attr);
		a_elem.appendChild(document.createTextNode(name));
	}
	
	// Delete button
	var del_elem = document.createElement("a");
	var type_attr = document.createAttribute("href");
	type_attr.nodeValue = "javascript:remove_element('div_label_" + index + "');";
	del_elem.setAttributeNode(type_attr);
	
	var img_elem = document.createElement("img");
	var img_elem_src = document.createAttribute("src");
	img_elem_src.nodeValue = "images/delete.gif";
	img_elem.setAttributeNode(img_elem_src);
	
	del_elem.appendChild(img_elem);
	
	// DIV container
	var div_elem = document.createElement("div");	
	var div_id = document.createAttribute("id");
	div_id.nodeValue = "div_label_" + index;
	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(label_elem);
	div_elem.appendChild(input_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(del_elem);
	div_elem.appendChild(document.createTextNode(" "));
	if (!isNaN(ID))
		div_elem.appendChild(a_elem);
	
	labels.appendChild(div_elem);
}

/**
 *
 * Adds a member field to the page.
 *
 */
function add_picture(ID,name,position) {
	var pictures = document.getElementById("pictures");
	
	// Get index
	var last_div;
	if (pictures.childNodes.length > 0)
		last_div = pictures.childNodes[pictures.childNodes.length - 1];
	var index = 0;
	if (last_div)
		index = parseInt(last_div.id.substr(10)) + 1;
	
	// Label
	var label_elem = document.createElement("label");
	var label_text = document.createTextNode(index + 1);
	label_elem.appendChild(label_text);
	
	// Img
	var img =  document.createElement("img");
	var img_src = document.createAttribute("src");
	img_src.nodeValue = "images/covers/tn/" + name;
	img.setAttributeNode(img_src);
	
	// Input for position
	var input_elem = document.createElement("input");	
	var size_attr = document.createAttribute("size");
	size_attr.nodeValue = "3";
	input_elem.setAttributeNode(size_attr);
	
	var max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "3";
	input_elem.setAttributeNode(max_attr);
	
	var value_attr = document.createAttribute("value");
	value_attr.nodeValue = position;
	input_elem.setAttributeNode(value_attr);
	
	var name_attr = document.createAttribute("name");
	name_attr.nodeValue = "picture_position_" + ID;
	input_elem.setAttributeNode(name_attr);
	
	// Delete button
	var del_elem = document.createElement("a");
	var type_attr = document.createAttribute("href");
	type_attr.nodeValue = "javascript:remove('" + name + "');";
	del_elem.setAttributeNode(type_attr);
	
	var img_elem = document.createElement("img");
	var img_elem_src = document.createAttribute("src");
	img_elem_src.nodeValue = "images/delete.gif";
	img_elem.setAttributeNode(img_elem_src);
	
	del_elem.appendChild(img_elem);
	
	// DIV container
	var div_elem = document.createElement("div");	
	var div_id = document.createAttribute("id");
	div_id.nodeValue = "div_picture_" + ID;

	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(label_elem);
	div_elem.appendChild(img);	
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(input_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(del_elem);
	
	pictures.appendChild(div_elem);
}


/**
 *
 * Adds a track to the tracklist.
 *

 */
function add_track(number,name,length) {
	var tracklisting = document.getElementById("tracklisting");
	var minutes;
	var seconds;
	var track_number;
	
	track_number = (number?number:"");
	
	if (length) {
		var length_arr = length.split(":");
		minutes = length_arr[0];
		seconds = length_arr[1];
	}

	// Get index
	var index = 0;
	if (tracklisting.childNodes.length > 0) {
		var last_div = tracklisting.childNodes[tracklisting.childNodes.length - 1];
		if (last_div) {
			// Calculate index
			index = parseInt(last_div.id.substr(17)) + 1;
			
			// Calculate tracknumber
			if (!number)
				track_number = last_div.childNodes[1].value.substr(0,1) + (parseInt(last_div.childNodes[1].value.substr(1)) + 1);
		}
	}
		
	// Label
	var label_elem = document.createElement("label");
	var label_text = document.createTextNode(index + 1);
	label_elem.appendChild(label_text);
	
	// Input: Tracknumber
	var input_tn_elem = document.createElement("input");	
	var size_attr = document.createAttribute("size");
	size_attr.nodeValue = "3";
	input_tn_elem.setAttributeNode(size_attr);
	var max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "3";
	input_tn_elem.setAttributeNode(max_attr);
	var value_attr = document.createAttribute("value");
	value_attr.nodeValue = track_number;
	input_tn_elem.setAttributeNode(value_attr);
	var name_attr = document.createAttribute("name");
	name_attr.nodeValue = "tracklisting_input_tn_" + index;
	input_tn_elem.setAttributeNode(name_attr);
	
	// Input: Name
	var input_name_elem = document.createElement("input");	
	size_attr = document.createAttribute("size");
	size_attr.nodeValue = "50";	
	input_name_elem.setAttributeNode(size_attr);
	max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "70";
	input_name_elem.setAttributeNode(max_attr);
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = (name != null?name:"");
	input_name_elem.setAttributeNode(value_attr);
	name_attr = document.createAttribute("name");
	name_attr.nodeValue = "tracklisting_input_name_" + index;
	input_name_elem.setAttributeNode(name_attr);
	
	// Input: Minutes
	var input_minutes_elem = document.createElement("input");	
	size_attr = document.createAttribute("size");
	size_attr.nodeValue = "2";
	input_minutes_elem.setAttributeNode(size_attr);
	max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "2";
	input_minutes_elem.setAttributeNode(max_attr);
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = (minutes != null?minutes:"");
	input_minutes_elem.setAttributeNode(value_attr);
	name_attr = document.createAttribute("name");
	name_attr.nodeValue = "tracklisting_input_minutes_" + index;
	input_minutes_elem.setAttributeNode(name_attr);
	
	// Input: Seconds
	var input_seconds_elem = document.createElement("input");	
	size_attr = document.createAttribute("size");
	size_attr.nodeValue = "2";
	input_seconds_elem.setAttributeNode(size_attr);
	max_attr = document.createAttribute("maxlength");
	max_attr.nodeValue = "2";
	input_seconds_elem.setAttributeNode(max_attr);
	value_attr = document.createAttribute("value");
	value_attr.nodeValue = (seconds != null?seconds:"");
	input_seconds_elem.setAttributeNode(value_attr);
	name_attr = document.createAttribute("name");
	name_attr.nodeValue = "tracklisting_input_seconds_" + index;
	input_seconds_elem.setAttributeNode(name_attr);
	
	// Delete button
	var del_elem = document.createElement("a");
	var type_attr = document.createAttribute("href");
	type_attr.nodeValue = "javascript:remove_element('div_tracklisting_" + index + "');";
	del_elem.setAttributeNode(type_attr);
	
	var img_elem = document.createElement("img");
	var img_elem_src = document.createAttribute("src");
	img_elem_src.nodeValue = "images/delete.gif";
	img_elem.setAttributeNode(img_elem_src);
	
	del_elem.appendChild(img_elem);
	
	// DIV container
	var div_elem = document.createElement("div");	
	var div_id = document.createAttribute("id");
	div_id.nodeValue = "div_tracklisting_" + index;
	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(label_elem);
	div_elem.appendChild(input_tn_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(input_name_elem);
	div_elem.appendChild(document.createTextNode(" "));

	div_elem.appendChild(input_minutes_elem);
	div_elem.appendChild(document.createTextNode(":"));
	div_elem.appendChild(input_seconds_elem);
	div_elem.appendChild(document.createTextNode(" "));
	div_elem.appendChild(del_elem);
	
	tracklisting.appendChild(div_elem);
	
	// Set focus in new track if "Add track" has been clicked
	if (!number)
		input_tn_elem.focus();
}

/*
 *
 * Onchange handler for compilation checkbox.
 *
 */
function changeCompilation(checked) {
	// Show or hide artist field
	document.getElementById("artist").parentNode.className = (checked?"hidden":"");
}


/*
 *
 * Onblur handler for artist sort.
 *
 */
function checkArtistIfSortable(field) {
	var elem;
	
	// Check if artist name starts with "The"
	if (field.value.substr(0,3) == "The") {
		elem = document.getElementById("artist_sort");
		elem.parentNode.className = "";
		elem.focus();
	}
	else {
		// ?
	}
}

 
/**
 * 
 * Open dialog to confirm the deletion of a record.
 *
 */
function del(msg,record) {
	var check = confirm(msg);
	if (check) {
		if (record) {
			var ID = document.getElementById("ID");
			ID.value = record;
		}
		var operation = document.getElementById("operation");
		operation.value = "delete";
	  document.record_form.submit();
	}
}


/**
 * 
 * Calls the page again to edit a record.
 *
 */
function edit(ID) {
	// Set ID	
	var ID_field = document.getElementById("ID");
	if (ID_field)
		ID_field.value = ID;


	// Submit form
	document.record_form.submit();
}


/**
 *
 * Gets details for record from www.
 *
 */
function get_details() {
	var artist = document.getElementById("artist").value;
	var title = document.getElementById("title").value;
	
	var xmlhttp = create_xml_http("recordhandler","operation=get_details&artist="+artist+"&title="+title);
	
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			alert(xmlhttp.responseText);
			var result = xmlhttp.responseText.split("\n");
			/*		
			if (result[0] == "error")
				alert(result[1]);
			else {
				alert(result[0]);
				for (var i=1;i<result.length;i++) {
					if (result[i] != "") {
						var a = result[i].split(";");
						var field = document.getElementById(a[0]);
						if (field && a[1] != "")
							field.value = decodeURIComponent(a[1]);
					}
				}
			}*/
		}
	}
	xmlhttp.send("");
	
	return false;
}

/**
 *
 * Returns all tracks entered for the current record.
 * plus an additional "all" track.
 *
 */
function get_tracks() {
	var aTracks;
	var tracklisting = document.getElementById("tracklisting");
	var input_elems = tracklisting.getElementsByTagName("input");
	
	aTracks = Array("All");
	for (var i=0;i<input_elems.length;i=i+4) 
		aTracks.push(input_elems[i].value);
																					
	return aTracks;
}

/**
 *
 * Loads ebay auctions for a certain record.
 *
 */
function load_ebay_auctions(ID) {
	var xmlhttp = create_xml_http("recordhandler","operation=load_ebay_actions&ID="+ID);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split("\n");
						
			// Iterate through auctions
			for (var i=0;i<result.length;i++) {
				if (result[i] != "") {
					var a = result[i].split(";");
					add_ebay_auction(a[0]);
				}
			}
		}
	}
	xmlhttp.send("");
}


/**
 *
 * Loads a certain record by ID.
 *
 */
function load_record(ID) {
	var value;
	var xmlhttp = create_xml_http("recordhandler","operation=load&ID="+ID);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split("\n");
			
			// Hide or show delete buttons and upload function
			set_visible("button_duplicate,button_duplicate2,button_delete,button_delete2",(result.length > 0 && result[0] != ""));
			
			// Remove all artists, labels, credits and tracks
			var artists = document.getElementById("related_artists");
			while (artists.firstChild)
				artists.removeChild(artists.firstChild);
				
			var labels = document.getElementById("related_labels");
			while (labels.firstChild)
				labels.removeChild(labels.firstChild);
				
			var tracklisting = document.getElementById("tracklisting");
			while (tracklisting.firstChild)
				tracklisting.removeChild(tracklisting.firstChild);
				
			var credits = document.getElementById("credits");
			while (credits.firstChild)
				credits.removeChild(credits.firstChild);
			
			if (result.length > 0 && result[0] != "") {
				// Show picture container
				var pic_cont = document.getElementById("pic_cont");
				pic_cont.className = "";
			}
				
			// Remove all pictures
			var pictures = document.getElementById("pictures");
			while (pictures.firstChild)
				pictures.removeChild(pictures.firstChild);
						
			// Apply record attributes
			for (var i=0;i<result.length;i++) {
				if (result[i] != "") {
					var a = result[i].split(";");
					var type = a[0];
					if (type == "attr") {
						var field = document.record_form[a[1]];
						if (field) {
							if (field.name == "style" || field.name == "cover_type") {
								var styles = decodeURIComponent(a[2]).split(',');
								if (styles && styles.length > 0) {
									for (var k=0;k<field.options.length;k++) {
										for (var j=0;j<styles.length;j++) {
											if (field.options[k].value == styles[j])
												field.options[k].selected = true;
										}
									}
								}
							}
							else if (field.name == "year_unsure" || field.name == "approved" || field.name == "compilation") {
								if (a[2] == "1")
									field.checked = true;
								else
									field.checked = false;
								// Check if record is a compilation
								if (field.name == "compilation")
									changeCompilation(field.checked);
							}
							else if (field.name == "artist_sort") {
								// Show artist sort field if not empty
								value = decodeURIComponent(a[2]);
								if (value != "") {
									field.value = value;
									field.parentNode.className = "";
								}
							}
							else
								field.value = decodeURIComponent(a[2]);
						}
					}
					else if (type == "picture")
						add_picture(a[1],a[2],a[3]);
					else if (type == "credit") {
						if (a[4] != "") {
							// Several tracks?
							var tracks = a[4].split(",");
							for (j=0;j<tracks.length;j++)
								add_credit(a[1],decodeURIComponent(a[2]),a[3],tracks[j]);
						}
						else
							add_credit(a[1],decodeURIComponent(a[2]),a[3],"all");					
					}
					else if (type == "track")
						add_track(a[1],decodeURIComponent(a[2]),a[3]);
					else if (type == "artist")
						add_artist(decodeURIComponent(a[2]),a[1]);
					else if (type == "label")
						add_label(decodeURIComponent(a[2]),a[1]);
				}
			}
			
			// Hide or show back and forward buttons
			var prevID = document.getElementById("prevID").value;
			set_visible("button_prev,button_prev2",(prevID != ""));
			
			var nextID = document.getElementById("nextID").value;
			set_visible("button_next,button_next2",(nextID != ""));
			
			// Hide or show details buttons
			set_visible("button_details,button_details2",(ID != "" && ID != undefined));
			
			// Add an empty label if ID is undefined
			if (ID == undefined)
				add_label("","");
		}
	}
	xmlhttp.send("");
}


/**
 *
 * Loads next record.
 *
 */
function load_next() {
	var ID = document.getElementById("nextID").value;
	if (ID != "")
		load_record(ID);
}
 
/**
 *
 * Loads previous record.
 *
 */
function load_prev() {
	var ID = document.getElementById("prevID").value;
	if (ID != "")
		load_record(ID);
}

/**
 * 
 * Removes a picture
 *
 */
function remove(name) {
	document.record_form.pic.value = name;
	document.record_form.operation.value = "remove";
	document.record_form.submit();
}

/**
 * 
 * Empties all field to enter a new entry or restores the record loaded.
 * 
 */
function reset_form() {
	var ID = document.getElementById("ID").value;
	
	if (ID != "")
		load_record(ID);
	else {
		// Remove all artists, labels, credits and tracks
		var artists = document.getElementById("related_artists");
		while (artists.firstChild)
			artists.removeChild(artists.firstChild);
			
		var labels = document.getElementById("related_labels");
		while (labels.firstChild)
			labels.removeChild(labels.firstChild);
			
		var tracklisting = document.getElementById("tracklisting");
		while (tracklisting.firstChild)
			tracklisting.removeChild(tracklisting.firstChild);
			
		var credits = document.getElementById("credits");
		while (credits.firstChild)
			credits.removeChild(credits.firstChild);
			
		// Remove cover
		var cover = document.getElementById("cover");
		if (cover)
			cover.firstChild.setAttribute("src","images/covers/default.gif");
		
		// Save prev and next IDs
		var prevID = document.getElementById("prevID");
		if (prevID)
			var prev = prevID.value;
		var nextID = document.getElementById("nextID");
		if (nextID)
			var next = nextID.value;
			
		// Reset form fields
		document.record_form.reset();
		
		// Set ID to null
		document.getElementById("ID").value = "";
		
		// Restore prev and next IDs
		if (prevID)
			prevID.value = prev;
		if (nextID)
			nextID.value = next;
			
		// Hide details buttons
		set_visible("button_details,button_details2,button_delete,button_delete2",false);
	}
}

/**
 *
 * Saves a record or creates a new one.
 *
 */
function save(confirmationString) {
	// Get ID
	var ID_value = "";
	var ID = document.getElementById("ID");		
	ID_value = ID.value;
	
	// Get confirmation for update
	if (ID_value != "") {
		var confirmation = confirm(confirmationString);
		if (!confirmation)
			return false;
	}
	
	// Compile query string
	var query = "&ID="+ID_value;
	var form = document.record_form;
	for (var i=0;i<form.length;i++) {
		if (form.elements[i].type == "select-one" || form.elements[i].type == "text" || form.elements[i].type == "textarea") 
			query += "&"+form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
		else if (form.elements[i].type == "select-multiple" && !form.elements[i].name.match(/_select_box/)) {
			// Special treatment for multiple select boxes
			query += "&"+form.elements[i].name+"=,";
			for (var j=0;j<form.elements[i].options.length;j++) {
				if (form.elements[i].options[j].selected)
					query += form.elements[i].options[j].value+",";
			}
		}
		else if (form.elements[i].type == "checkbox" && (form.elements[i].name == "year_unsure" || form.elements[i].name == "approved" || form.elements[i].name == "compilation"))  {
			if (form.elements[i].checked)
				query += "&"+form.elements[i].name+"=1";
			else
				query += "&"+form.elements[i].name+"=0";
		}
	}
	
	var xmlhttp = create_xml_http("recordhandler","operation=save"+query);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split(";");
			if (result[0] == "updated")
				alert(result[1]);
			else {				
				if (result[0] == "created") {
					// Record was created
					ID.value = result[1];
					alert(result[2]);
					load_record(result[1]);
				}
				else if (result[0] == "exists") {
					// Record already exists, offer to load it
					check = confirm(result[2]);
					if (check && result[1])
						load_record(result[1]);
				}
				else
					alert(result[0]); // Show error
			}
		}
	}
	xmlhttp.send("");
}


/**
 *
 * Duplicates the record by resetting the ID and removing the "Duplicate" button and other buttons.
 *
 */
function duplicate(message) {
	// Reset ID
	document.getElementById("ID").value = "";
	
	// Hide buttons
	set_visible("button_details,button_details2,button_delete,button_delete2,button_duplicate,button_duplicate2",false);
	
	//Hide picture container
	var pic_cont = document.getElementById("pic_cont");
	pic_cont.className = "hidden";
		
	// Remove all pictures
	var pictures = document.getElementById("pictures");
	while (pictures.firstChild)
		pictures.removeChild(pictures.firstChild);
		
	// Show feedback
	alert(message);
}

/**
 *
 * Redirects to export of selected records
 *
 */
function export_records(str_type) {
	var operation = document.getElementById("operation");
	operation.value = "export_" + str_type;
	document.record_form.submit();
}

/**
 *
 * Redirects to detail page of record
 *
 */
function show_details() {
	var operation = document.getElementById("operation");
	operation.value = "details";
	document.record_form.submit();
}


/**
 *
 * Sorts record table by column.
 *
 */
function sortby(column) {
	// Set offset
	var offset =  document.getElementById("offset");
	if (offset)
		offset.value = 0;
		
	// Set sortby and sort order
	var sort_by = document.getElementById("sortby");
	
	var sorder = document.getElementById("sorder");

	// Change sort order to descending of column is "rating" and no sort order is defined
	if ((sorder.value == "" || sort_by.value != column) && column == "rating")	
		sorder.value = "desc";
	else
		sorder.value = (sorder.value == "desc" || sort_by.value != column?"asc":"desc");	
	
	sort_by.value = column;
	
	// Submit form (call page again)
	document.record_form.submit();
}

/**
 *
 * Submits an ebay auction.
 *
 */
function submit_ebay_auction() {
	// Get item ID
	var itemID = document.getElementById("ebay_item").value;
	
	// Compile query string
	var query = "&itemID="+itemID;
	
	var xmlhttp = create_xml_http("recordhandler","operation=submit_ebay_auction"+query);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split(";");
			if (result[0] == "created") {
				// Auction was submitted
				document.getElementById("ebay_item").value = "";
				alert(result[2]);
				add_ebay_auction(result[1]);				
			}
			else {
				// Auction could not be submitted
				alert(result[0]);
				document.getElementById("ebay_item").focus();
			}
		}
	}
	xmlhttp.send("");
}

/**
 *
 * Updates available track for a certain dropdown
 *
 */
function update_tracks_for_dropdown(index,track) {
	var track_elem = document.record_form["credit_track_" + index];
	var aTracks = get_tracks();
	var option;
	var value_attr;
	var selected_track = track_elem.value;
	
	// Remove all options
	while (track_elem.childNodes.length > 0)
		track_elem.removeChild(track_elem.firstChild);
	
	for (i=0;i<aTracks.length;i++) {
		option = document.createElement("option");
		value_attr = document.createAttribute("value");
		value_attr.nodeValue = aTracks[i];
		option.setAttributeNode(value_attr);
		option.appendChild(document.createTextNode(aTracks[i]));
		track_elem.appendChild(option);
	}
	
	// Set track
	if (track != '' && track != "all") 
		track_elem.value = track;
	else
		track_elem.value = selected_track;
}

function upload() {
	if (document.record_form.picture_upload.value != "") {
		document.record_form.operation.value = "upload";
		document.record_form.submit();
	}
}

function upload_url() {
	if (document.record_form.picture_upload_url.value != "") {
		document.record_form.operation.value = "upload_url";
		document.record_form.submit();
	}
}

