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


/**
 *
 * Adds an member field to the page.
 *
 */
function add_member(name,ID) {
	var members = document.getElementById("group_members");
	
	// Get index
	var last_div;
	if (members.childNodes.length > 0)
		last_div = members.childNodes[members.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 = "member_input_" + index;
	input_elem.setAttributeNode(name_attr);
	
	// Link to member
	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));
	}
	
	// Delete button
	var del_elem = document.createElement("a");
	var type_attr = document.createAttribute("href");
	type_attr.nodeValue = "javascript:remove_element('div_member_" + 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_member_" + index;
	div_elem.setAttributeNode(div_id);
	
	div_elem.appendChild(label_elem);
	div_elem.appendChild(input_elem);
	div_elem.appendChild(document.createTextNode(" "));
	if (!isNaN(ID)) {
		div_elem.appendChild(a_elem);
		div_elem.appendChild(document.createTextNode(" "));
	}
	div_elem.appendChild(del_elem);
	
	members.appendChild(div_elem);
}


/**
 *
 * Adds a member field to the page.
 *
 */
function add_picture(ID,name,position) {
	var pictures = document.getElementById("pictures");
	
	// Label
	var label_elem = document.createElement("label");
	var label_text = document.createTextNode(" ");
	label_elem.appendChild(label_text);
	
	// Img
	var img =  document.createElement("img");
	var img_src = document.createAttribute("src");
	img_src.nodeValue = "images/artists/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 an URL field to the page.
 *
 */
function add_url(url) {
	var urls = document.getElementById("urls");
	
	// Get index
	var last_div;
	if (urls.childNodes.length > 0)
		last_div = urls.childNodes[urls.childNodes.length - 1];
	var index = 0;
	if (last_div)
		index = parseInt(last_div.id.substr(8)) + 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 = (url?url:"");
	input_elem.setAttributeNode(value_attr);
	
	var name_attr = document.createAttribute("name");
	name_attr.nodeValue = "url_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_url_" + 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_url_" + 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);
	
	urls.appendChild(div_elem);
	
	if (!url)
		input_elem.focus();
}


/**
 *
 * Checks for group status of member.
 *
 */
function check_group() {
	var group = document.getElementById("group");
	var group_cont = document.getElementById("group_members_cont");
	var real_name_cont = document.getElementById("real_name_cont");		
	if (group.checked) {
		group_cont.className = "";
		real_name_cont.className = "hidden";
	}
	else {
		var group_members = document.getElementById("group_members");
		if (group_members.firstChild)
			group.checked = true;
		else {
			group_cont.className = "hidden";
			real_name_cont.className = "";
		}
	}
}


/**
 *
 * Go back to details.
 *
 */
function details() {
	document.artist_frm.submit();
}


/**
 *
 * Loads a certain artist by ID.
 *
 */
function load_artist(ID) {
	var xmlhttp = create_xml_http("artisthandler","operation=load&ID="+ID);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split("\n");
			
			// Remove all members
			var members = document.getElementById("group_members");
			while (members.firstChild)
				members.removeChild(members.firstChild);
				
			// Remove all pictures
			var pictures = document.getElementById("pictures");
			while (pictures.firstChild)
				pictures.removeChild(pictures.firstChild);
				
			// Remove urls
			var urls = document.getElementById("urls");
			while (urls.firstChild)
				urls.removeChild(urls.firstChild);
				
			// Apply artist 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.artist_frm[a[1]];
						if (field) {
							if (field.name == "group") {
								var group_cont = document.getElementById("group_members_cont");								
								if (a[2] == 1) {
									group_cont.className = "";
									field.checked = true;
								}
								else {
									group_cont.className = "hidden";
									field.checked = false;
								}
							}
							else
								field.value = decodeURIComponent(a[2]);
						}
						else if (a[1] == "urls") {
							var urls = decodeURIComponent(a[2]).split(",");
							for (j=0;j<urls.length;j++) {
								if (urls[j] != "")
									add_url(urls[j]);
							}
						}
					}
					else if (type == "member")
						add_member(decodeURIComponent(a[2]));
					else if (type == "picture")
						add_picture(a[1],a[2],a[3]);
				}
			}
			
			// 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 != ""));
		}
	}
	xmlhttp.send("");
}


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

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

/**
 *
 * Saves an artist.
 *
 */
function save() {
	var ID_value = "";
	
	// Get ID
	var ID = document.getElementById("ID");
	ID_value = ID.value;
	
	var query = "&ID="+ID_value;
	var form = document.artist_frm;
	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 == "group")  {
			if (form.elements[i].checked)
				query += "&"+form.elements[i].name+"=1";
			else
				query += "&"+form.elements[i].name+"=0";
		}
	}
	
	var xmlhttp = create_xml_http("artisthandler","operation=save"+query);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split(";");
			if (result[0] == "updated")
				alert(result[1]);
			else 
				alert(result[0]); // Show error
		}
	}
	xmlhttp.send("");
}


/**
 *
 * Submits artist form to upload picture.
 *
 */
function upload() {
	if (document.artist_frm.picture_upload.value != "") {
		document.artist_frm.operation.value = "upload";
		document.artist_frm.submit();
	}
}
