/**
 *
 * Javascript functions for the administration of labels
 *
 */


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

/**
 *
 * Adds a member field to the page.
 *
 */
function add_picture(ID,name,position,logo) {
	var pictures = document.getElementById((logo?"logos":"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/labels/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 = (logo?"logo":"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();
}


/**
 *
 * Loads a certain label by ID.
 *
 */
function load_label(ID) {
	var xmlhttp = create_xml_http("labelhandler","operation=load&ID="+ID);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4) {
			var result = xmlhttp.responseText.split("\n");
			
			// Remove all logos
			var logos = document.getElementById("logos");
			while (logos.firstChild)
				logos.removeChild(logos.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 label 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.label_frm[a[1]];
						if (field)
								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 == "picture")
						add_picture(a[1],a[2],a[3],false);
					else if (type == "logo")
						add_picture(a[1],a[2],a[3],true);
				}				
			}
			
			// 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 label.
 *
 */
function load_next() {
	var ID = document.getElementById("nextID").value;
	if (ID != "")
		load_label(ID);
}
 
/**
 *
 * Loads previous label.
 *
 */
function load_prev() {
	var ID = document.getElementById("prevID").value;
	if (ID != "")
		load_label(ID);
}


/**
 *
 * Saves a label.
 *
 */
function save() {
	var ID_value = "";
	
	// Get ID
	var ID = document.getElementById("ID");
	ID_value = ID.value;
	
	var query = "&ID="+ID_value;
	var form = document.label_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+"="+decodeURIComponent(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("labelhandler","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("");
}

/**
 *
 * Shows record list with or without sublabels.
 *
 */
function show_sublabels(show_sublabels) {
	document.label_form.show_sublabels.value = show_sublabels;
	document.label_form.submit();
}

/**
 *
 * Sorts record table by column.
 *
 */
function sortby(column) {
	// 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
	sorder.value = (sorder.value == "desc" || sort_by.value != column?"asc":"desc");	
	
	sort_by.value = column;
	
	// Submit form (call page again)
	document.label_form.submit();
}


/**
 *
 * Submits labels form to upload picture.
 *
 */
function upload(logo) {
	if (logo && document.label_frm.logo_upload.value != "" || !logo && document.label_frm.picture_upload.value != "") {
		document.label_frm.operation.value = "upload"+(logo?"_logo":"");
		document.label_frm.submit();
	}
}
