/**
 * function pagelist_load()
 *
 * display list of pages in current template given as XML
 *
 * @param int "pt_template_ID" (ID of template to load pages from)
 */
 
function pagelist_create() {

	var pl = document.getElementById("page_selector");
	
	switch (template_group) {
		case "photobook" :
			pl.innerHTML = "<img src=\"/gift_print/images/add_page.gif\" onclick=\"add_page(2)\"/>";
			break;
			
		case "placky" :
			pl.innerHTML = "<img src=\"/gift_print/images/add_page.gif\" onclick=\"add_page(1)\"/>";
			break;
			
		default :
			pl.innerHTML = "";
			break;
	}
	
	/**
	 * display each page
	 */
	for (var i = 0; i < available_pages; i++) {

		/**
		 * page wrap
		 */
		var p_wrap = document.createElement("div");
		p_wrap.id = "page_" + i;
		p_wrap.className = "page";
		p_wrap.title = "Strana " + (i + 1);
		addEvent(p_wrap, "mouseover", page_over);
		addEvent(p_wrap, "mouseout", page_out);
		addEvent(p_wrap, "click", select_page);

		/**
		 * page description
		 */
		var p_comment = document.createElement("p");
		p_comment.innerHTML = i + 1;
		p_wrap.appendChild(p_comment);

		/**
		 * append template into list and increase page number
		 */
		pl.appendChild(p_wrap);
		p_wrap = null;
	}

	/**
	 * display ruler
	 */
	var pl_ruler = document.createElement("div");
	pl_ruler.className = "ruler";
	pl.appendChild(pl_ruler);

	/**
	 * select first page
	 */
	
	if (current_page_index == -1)
		select_page(current_page_index = 0);
}


/**
 * function select_page()
 *
 * select page specified by ID. unmark all pages in page list but
 * this one and call function to draw currently selected page
 *
 * @param int|event "evt" (event which called this function or integrer
 *                         indentyfying directly selected page)
 */
function select_page(evt) {

	/**
	 * remove any toolbar
	 */
	remove_toolbar();

	/**
	 * get page ID. it can be catched from event, or from string
	 * because of loader and XHR saving current page status, we
	 * need to know this now
	 */
	switch ((typeof evt).toLowerCase()) {
	 	case "object":
			evt = evt || window.event;
			var element = evt.srcElement ? evt.srcElement.parentNode : evt.target.parentNode;
			var index = element.id.split("_")[1];
			select_page_index = index;
			break;
			
		default:
	 		var index = evt;
	 		break;
	}

	/**
	 * if page link has no image, user can click outside link
	 * so event is called by page selector. this must be eliminated
	 * here
	 */
	 
	//if (index != "selector" && index != current_page_index) {
	if (index != "selector") {

		/**
		 * if there are some assigned images, we must store them before leaving page
		 */
		if (assigned_images.length > 0) {

			/**
			 * now the funny stuff. when we are changing page, we must save all that was
			 * done on this page... so we will begin creating request
			 */
			var request = "<?xml version=\"1.0\" encoding=\"" + encoding + "\"?>\n";
			request += "<request_data>\n";
			request += "	<command>set</command>\n";
			request += "	<index>" + current_page_index + "</index>\n";

			/**
			 * go through assigned images
			 */
			for (var i in assigned_images) {
				if (assigned_images[i]) {

					/**
					 * expand request
					 */
					request += "	<area>\n";
					request += "		<pt_area_ID>" + i + "</pt_area_ID>\n";
					request += "		<src>" + assigned_images[i]["src"] + "</src>\n";
					request += "		<pt_image_ID>" + assigned_images[i]["pt_image_ID"] + "</pt_image_ID>\n";
					request += "		<rotation>" + assigned_images[i]["rotation"] + "</rotation>\n";
					request += "		<crop>\n";
					request += "			<left>" + assigned_images[i]["left"] + "</left>\n";
					request += "			<top>" + assigned_images[i]["top"] + "</top>\n";
					request += "			<width>" + assigned_images[i]["rel_width"] + "</width>\n";
					request += "			<height>" + assigned_images[i]["rel_height"] + "</height>\n";
					request += "		</crop>\n"

					/**
					 * count final cropping values and expand request
					 */
					var final_width = 1 / assigned_images[i]["rel_width"];
					var final_height = 1 / assigned_images[i]["rel_height"];
					var final_left = -1 * (1 / assigned_images[i]["rel_width"] * assigned_images[i]["left"]);
					var final_top = -1 * (1 / assigned_images[i]["rel_height"] * assigned_images[i]["top"]);

					request += "		<crop_final>\n";
					request += "			<left>" + final_left + "</left>\n";
					request += "			<top>" + final_top + "</top>\n";
					request += "			<width>" + final_width + "</width>\n";
					request += "			<height>" + final_height + "</height>\n";
					request += "		</crop_final>\n"
					request += "	</area>\n";
				}
			}

			/**
			 * end request and send it
			 */
			request += "</request_data>";

			var xml = new JKL.ParseXML(ifc_url, "input=" + request);
			var data = xml.parse();
			err(data.response_data, "select_page()", request);

			/**
			 * reset field with assigned images
			 */
			assigned_images = [];
			drop_areas = [];
		}
		
		/**
		 * set current page index
		 */
		current_page_index = index;

		/**
		 * unmark all pages in list except the one currently selected. we must skip last childnode, because it is ruler
		 */
		var de = document.getElementById("page_selector").childNodes;
		for (var i = 0; i < de.length - 1; i++) de[i].className = de[i].getAttribute("id") == ("page_" + index) ? "page_selected" : "page";

		/**
		 * get available templates for this page
		 */
		get_templates(index);
	}
}
