
function buildLoggedIn(nameOUser)
{
	var parentDiv = document.getElementById("formForLoggingInInHeader");

	parentDiv.innerHTML = "";

	var userSentence = document.createElement("span");
	var loggedInTxt = document.createTextNode("Sisse on loginud ");
	var lineBreak = document.createElement("br");
	var userName = document.createElement("b");

	userName.innerHTML = nameOUser;

	var dotTxt = document.createTextNode(".");

	userSentence.appendChild(loggedInTxt);
	userSentence.appendChild(lineBreak);
	userSentence.appendChild(userName);
	userSentence.appendChild(dotTxt);

	var link = document.createElement("a");

	link.setAttribute("href", "index.php?function=logOut");
	link.innerHTML = "Logi&nbsp;vÃ¤lja!";

	parentDiv.appendChild(userSentence);
	parentDiv.appendChild(link);
	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
				buildNotLoggedIn();
				parentDiv.innerHTML = response.err;
			}
			else
			{

				for (var key in response.menus)
				{

					if (document.getElementById("menuWithPriority_" + key))
					{
document.getElementById("menuWithPriority_" + key).innerHTML = response.menus[key].content;
					}

				}

			}

		}

	};

	xmlHttp.open("GET", "?module=hierarchy&function=updateMenus", true);

	xmlHttp.send(null);
}

function GetXmlHttpObject()
{
	var objXMLHttp = null;

	if (window.XMLHttpRequest)
	{
		objXMLHttp = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}

	return objXMLHttp;
}

function logIn(addr)
{
	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	var params = "User_name=" + document.getElementById("User_name").value;

	params = params + "&Password=" + document.getElementById("Password").value;
	params = params + "&Login=" + document.getElementById("submitButtonForLoggingInInHeader").value;

	xmlHttp.onreadystatechange = stateChangedAfterLoggingIn;

	xmlHttp.open("POST", addr + "?function=logIn", true);

	//Send the proper header information along with the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");

	xmlHttp.send(params);
}

/**
 * This function replaces the login part.
 */
function stateChangedAfterLoggingIn()
{

	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
	{

		if (xmlHttp.responseText.length > 1)
		{
			buildLoggedIn(xmlHttp.responseText);
		}

	}

}

/**
 * This function updates the database with the value in the appropriate form
 * field.
 */
function stateChangedAfterUpdatingFormRow()
{

	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
	{
	document.getElementById("inf_" + boxName).innerHTML = xmlHttp.responseText;
	}

}

/**
 *	This functions calls the equivalent function in <code>index.php</code>.
 *
 *	@param integer iD the row ID
 *	@param string name the name of the field to be updated in the database
 *	@param string previousValue the value that was in the field before changing
 *			it
 *	@param string value the value of that field
 *	@param integer parentID the ID of the parent element
 */
function updateFormRow(iD, name, previousValue, value, parentID, conditions, additionalParameters)
{
	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert("Browser does not support HTTP Request");

		return;
	}

var url = "index.php?function=modifyRow&iD=" + iD + "&name=" + name + "&sid=" + Math.random();
	var replacedValue = value.replace(/[\n]/g, "");
	var params = "value=" + urlencode(replacedValue);

	if (previousValue != null)
	{
		params = params + "&previousValue=" + previousValue;
	}

	if (parentID != null)
	{
		params = params + "&parentID=" + parentID;
	}

	if (conditions != null)
	{
		var amountOConditions = conditions.length;

		for (var i = 0; i < amountOConditions; i++)
		{
			params = params + "&conditions[]=" + conditions[i];
		}

	}

	if (additionalParameters != null)
	{
		var amountOAdditionalParameters = additionalParameters.length;

		for (var i = 0; i < amountOAdditionalParameters; i++)
		{
			var key = 0;

			for (var val = 0; val < additionalParameters[i].length; val++)
			{

				if (val == 0)
				{
					key = additionalParameters[i][val];
				}
				else
				{
params = params + "&additionalParameters[" + key + "]=" + additionalParameters[i][val];
				}

			}

		}

	}

	if (iD == undefined)
	{
		boxName = name;
	}
	else
	{
		boxName = name + iD;
	}

	xmlHttp.onreadystatechange = stateChangedAfterUpdatingFormRow;

	xmlHttp.open("POST", url, true);

	//Send the proper header information along with the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");

	xmlHttp.send(params);
}

/**
* This function updates the hidden field when the user selects something from
* an autocompletion list.
* 
* @param object field the field where the selected value from the
* 		autocompletion list goes;
* @param object selectedElement the selected element in the autocompletion list
*/
function updateHidden(field, selectedElement)
{
	document.getElementById("Hidden_"+field.name).value = selectedElement.id;
}

/**
 * This function inserts or updates or deletes an object.
 * 
 * @param idObj the object itself
 * @param idParent the parent
 * @param typeOObj the type of the object
 * @param typeOAction tye type of the action: either <code>delete</code>,
 * 		<code>insert</code> or <code>update</code>
 * @param where the location, either <code>before</code> or <code>after</code>
 * 		the main row
 * @param functionsToCall the functions to be called
 * @param urlBeginning the beginning of the URL
 * @param confirm Is it needed to load a confirmation box?
 * @returns
 */
function handleObj(idObj, idParent, typeOObj, typeOAction, where, functionsToCall, urlBeginning, confirm)
{

	if (idParent)
	{
		var parent = idParent;
	}
	else
	{
		var parent = "";
	}

	if (typeOAction == 'insert')
	{
		var newStr = "new_";

		if (where)
		{
			var whereToAdd = where + "_";
	var fieldForInformation = "inf_" + newStr + whereToAdd + typeOObj + idObj;
var form = document.getElementById("formForNew_" + whereToAdd + typeOObj + idObj);
		}
		else
		{
			var whereToAdd = "";

			idObj = parent;

	var fieldForInformation = "inf_" + newStr + whereToAdd + typeOObj + parent;
var form = document.getElementById("formForNew_" + whereToAdd + typeOObj + parent);
		}

		document.getElementById(fieldForInformation).innerHTML = "Lisatakse...";

		var thisObj = "";
	}
	else
	{
		var whereToAdd = "";

		if (typeOAction == "delete")
		{
			var fieldForInformation = "inf_new_" + typeOObj + parent;
		}
		else
		{
			var fieldForInformation = "inf_" + typeOObj + idObj;
		}

	document.getElementById(fieldForInformation).innerHTML = "Hallatakse...";

		var form = document.getElementById("formFor_" + typeOObj + idObj);

		var thisObj = idObj;

		var newStr = "";
	}

	if (!where)
	{
		var where = "";
	}

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	var inputBoxes = form.getElementsByTagName("input");

	var arrOParams = new Array();

for (var counterForInputBoxes = 0; counterForInputBoxes < inputBoxes.length; counterForInputBoxes++)
	{

if ((((inputBoxes[counterForInputBoxes].type == "checkbox") || (inputBoxes[counterForInputBoxes].type == "radio")) && inputBoxes[counterForInputBoxes].checked) || ((inputBoxes[counterForInputBoxes].type != "checkbox") && (inputBoxes[counterForInputBoxes].type != "radio")))
		{
arrOParams[counterForInputBoxes] = inputBoxes[counterForInputBoxes].id + "=" + urlencode(inputBoxes[counterForInputBoxes].value);
		}

	}

	var selectBoxes = form.getElementsByTagName("select");

for (counterForSelectBoxes = 0; counterForSelectBoxes < selectBoxes.length; counterForSelectBoxes++)
	{
arrOParams[counterForInputBoxes + counterForSelectBoxes] = selectBoxes[counterForSelectBoxes].id + "=" + urlencode(selectBoxes[counterForSelectBoxes].options[selectBoxes[counterForSelectBoxes].selectedIndex].value);
	}

	var textAreas = form.getElementsByTagName("textarea");

for (counterForTextAreas = 0; counterForTextAreas < textAreas.length; counterForTextAreas++)
	{
arrOParams[counterForInputBoxes + counterForSelectBoxes + counterForTextAreas] = textAreas[counterForTextAreas].id + "=" + urlencode(textAreas[counterForTextAreas].value);
	}

	var params = implode("&", arrOParams);

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");
		var elForSuffix = document.getElementById(newStr + "suffix" + idObj);

			if (elForSuffix)
			{
		var suffix = document.getElementById(newStr + "suffix" + idObj).value;
			}
			else
			{
				var suffix = '';
			}

			if (response.err)
			{

				if (document.getElementById("formForLoggingInInHeader"))
				{
					buildNotLoggedIn();
				}

				if (confirm)
				{
					var errParts = explode(")", response.err);
			var lastPartsOErr = explode("(", errParts[errParts.length - 2]);

					if (lastPartsOErr)
					{
					var idFeedback = lastPartsOErr[lastPartsOErr.length - 1];

document.getElementById("val_" + newStr + whereToAdd + "feedback" + suffix).value = idFeedback;
	document.getElementById("boxForConfirmation").style.visibility = "visible";
					}

				}

		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else if (response[typeOObj])
			{ // validation error
document.getElementById(fieldForInformation).innerHTML = "Palun vaata andmed üle.";

				for (var key in response[typeOObj])
				{

					if (document.getElementById("inf_" + key))
					{
document.getElementById("inf_" + key).innerHTML = response[typeOObj][key].error;
					}

				}

			}
			else
			{

				if (confirm)
				{
window.location.href = "http://www.trykikeskus.ee/kolmlovi/pages/taename.php";
				}
				else
				{

					var divs = getElementsByClassName("viga", form);

					for (var div in divs)
					{
						divs[div].innerHTML = "";
					}

var valFieldName = "val_" + newStr + whereToAdd + typeOObj + suffix + idObj;

					if (!document.getElementById(valFieldName))
					{
						alert(valFieldName + " on puudu!");

						return;
					}

				var handledVal = document.getElementById(valFieldName).value;

					if (typeOAction != 'update')
					{

						if (functionsToCall && (functionsToCall.length > 0))
						{
							// calling additional functions

							if (idParent)
							{
								// show parent's children (deletion)
								eval(functionsToCall[0] + "(" + idParent + ")");
							}
							else
							{
								// this is a parent already (insertion)
								eval(functionsToCall[0] + "(" + idObj + ")");
							}

						}
						else
						{
	document.getElementById("boxForAll_" + typeOObj + "s" + parent).innerHTML = response[typeOObj + "s"];
						}

						var listName = "list_" + typeOObj + "s" + parent;

						if (document.getElementById(listName))
						{

							Sortable.create(listName,
							{
								constraint: false,
								ghosting: true,
								onUpdate: function()
								{

									var options =
									{
										method: 'post',
										parameters: Sortable.serialize(listName)
									};

	new Ajax.Request("?function=reorder_" + typeOObj + "s&idParent=" + parent, options);
								}
							}
							);

						}

						if (typeOAction == "delete")
						{
	document.getElementById(fieldForInformation).innerHTML = "Sihitis <em>" + handledVal + "</em> eemaldatud.";
						}
						else
						{

							if (where)
							{
	document.getElementById("inf_" + typeOObj + idObj).innerHTML = "Sihitis <em>" + handledVal + "</em> lisatud.";
							}
							else
							{
	document.getElementById("inf_" + newStr + typeOObj + parent).innerHTML = "Sihitis <em>" + handledVal + "</em> lisatud.";
							}

						}

						//document.getElementById(fieldForInformation).style.paddingBottom = "4px";
					}
					else
					{
	document.getElementById("inf_" + typeOObj + idObj).innerHTML = "Sihitis <em>" + handledVal + "</em> salvestatud.";
					}

				}

			}

		}

	};

	if (!urlBeginning)
	{
		urlBeginning = "";
	}

xmlHttp.open("POST", urlBeginning + "?function=" + typeOAction + "_" + typeOObj + "&idObj=" + idObj + "&idParent=" + parent + "&where=" + where, true);

	//Send the proper header information along with the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

	xmlHttp.setRequestHeader("Content-length", params.length);
	xmlHttp.setRequestHeader("Connection", "close");

	xmlHttp.send(params);
}

/**
 * This function inserts or updates or deletes an object.
 * 
 * @param urlBeginning the beginning of the URL
 * @returns
 */
function sendOrderToDeskClerk(urlBeginning)
{
	var parent = "";
	var whereToAdd = "";

document.getElementById("inf_new_printPriceOrder").innerHTML = "Hallatakse...";
idPrintPriceOrder = document.getElementById("val_new_printPriceOrder").value;

var form = document.getElementById("formFor_printPriceOrder" + idPrintPriceOrder);

	var newStr = "";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{

				if (document.getElementById("formForLoggingInInHeader"))
				{
					buildNotLoggedIn();
				}

document.getElementById("inf_new_printPriceOrder").innerHTML = response.err;
			}
			else
			{
				var divs = getElementsByClassName("viga", form);

				for (var div in divs)
				{
					divs[div].innerHTML = "";
				}

				var suffix = '';

	var handledVal = document.getElementById("val_new_printPriceOrder").value;

document.getElementById("boxForAll_printPriceOrders" + parent).innerHTML = response["printPriceOrders"];

				var listName = "list_printPriceOrders" + parent;

				if (document.getElementById(listName))
				{

					Sortable.create(listName,
					{
						constraint: false,
						ghosting: true,
						onUpdate: function()
						{

							var options =
							{
								method: 'post',
								parameters: Sortable.serialize(listName)
							};

new Ajax.Request("?function=reorder_printPriceOrders&idParent=" + parent, options);
						}
					}
					);

				}

document.getElementById("inf_new_printPriceOrder").innerHTML = "Sihitis <em>" + handledVal + "</em> lisatud.";
			}

		}

	};

	if (!urlBeginning)
	{
		urlBeginning = "";
	}

xmlHttp.open("GET", urlBeginning + "?function=sendOrderToDeskClerk&idPrintPriceOrder=" + idPrintPriceOrder, true);

	//Send the proper header information along with the request
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

	xmlHttp.setRequestHeader("Connection", "close");

	xmlHttp.send(null);
}

/**
 * This function finds all the subelements by the given classname of the given
 * node.
 * 
 * @param string classname the class name
 * @param object node the parent element
 * @returns {Array} the subelements
 */
function getElementsByClassName(classname, node)
{

	if (!node)
	{
		node = document.getElementsByTagName('body')[0];
	}

	var a = [];

	var re = new RegExp('\\b' + classname + '\\b');

	els = node.getElementsByTagName('*');

	for (var i = 0, j = els.length; i < j; i++)
	{

		if (re.test(els[i].className))
		{
			a.push(els[i]);
		}

	}

	return a;
}

function buildNotLoggedIn()
{
	xmlHttpForNotLoggedIn = GetXmlHttpObject();

	if (xmlHttpForNotLoggedIn == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttpForNotLoggedIn.onreadystatechange = function()
	{

if (xmlHttpForNotLoggedIn.readyState == 4 || xmlHttpForNotLoggedIn.readyState == "complete")
		{
		var response = eval("(" + xmlHttpForNotLoggedIn.responseText + ")");

			if (response.err)
			{
document.getElementById("formForLoggingInInHeader").innerHTML = response.err;
			}
			else
			{

				if (document.getElementById("formForLoggingInInHeader"))
				{
document.getElementById("formForLoggingInInHeader").innerHTML = response.form;
				}
				else
				{
window.parent.document.getElementById("formForLoggingInInHeader").innerHTML = response.form;
				}

			}

		}

	};

xmlHttpForNotLoggedIn.open("GET", "?module=users&function=buildLoginForm", true);

	xmlHttpForNotLoggedIn.send(null);

	xmlHttpForMenus = GetXmlHttpObject();

	if (xmlHttpForMenus == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttpForMenus.onreadystatechange = function()
	{

if (xmlHttpForMenus.readyState == 4 || xmlHttpForMenus.readyState == "complete")
		{
			var response = eval("(" + xmlHttpForMenus.responseText + ")");

			if (response.err)
			{
				parentDiv.innerHTML = response.err;
			}
			else
			{

				for (var key in response.menus)
				{

					if (document.getElementById("menuWithPriority_" + key))
					{
document.getElementById("menuWithPriority_" + key).innerHTML = response.menus[key].content;
					}

				}

			}

		}

	};

	xmlHttpForMenus.open("GET", "?module=hierarchy&function=updateMenus", true);

	xmlHttpForMenus.send(null);
}

function showPrices(idMaterial, res)
{
	var fieldForInformation = "inf_material" + idMaterial;
	var fieldForRes = "prices" + idMaterial;

document.getElementById(fieldForInformation).innerHTML = "Päritakse hindu...";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
				buildNotLoggedIn();

		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else
			{
			document.getElementById(fieldForRes).innerHTML = response.prices;

	document.getElementById(fieldForInformation).innerHTML = "Hinnad kuvatud.";
			}

		}

	};

xmlHttp.open("GET", "?function=buildPrices&idMaterial=" + idMaterial + "&res=" + res, true);

	xmlHttp.send(null);
}

/**
 * This function switches an element on or off and changes the layout and text
 * of the triggerer.
 * 
 * @param string idEl the ID of the target
 * @param string idTriggerer the ID of the triggerer
 * @param string forShowing the text that will be displayed on the triggerer
 * 		after hiding
 * @param string forHiding the text that will be displayed on the triggerer
 * 		after showing
 */
function showHide(idEl, idTriggerer, forShowing, forHiding)
{
	var el = document.getElementById(idEl);

	if (el.style.display == "block")
	{
		hide(idEl, idTriggerer, forShowing);
	}
	else
	{
		show(idEl, idTriggerer, forHiding);
	}

}

/**
 * This function draws the feedback form.
 * 
 * @param string urlBeginning the beginning of the URL
 */
function buildFeedbackForm(urlBeginning)
{
	var fieldForRes = "boxForAll_feedback";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
			}
			else
			{
		document.getElementById(fieldForRes).innerHTML = response.feedbackForm;
			}

		}

	};

	xmlHttp.open("GET", urlBeginning + "?function=buildFeedbackForm", true);

	xmlHttp.send(null);
}
/**
 * This function shows an element and changes the triggerer accordingly.
 * 
 * @param string idEl the ID of the target
 * @param string idTriggerer the ID of the triggerer
 * @param string forHiding the text to be displayed on the triggerer after this
 * 		event
 */
function show(idEl, idTriggerer, forHiding)
{
	var el = document.getElementById(idEl);
	var triggerer = document.getElementById(idTriggerer);

	if (el)
	{
		el.style.display = "block";
	}

	if (triggerer)
	{
		triggerer.value = forHiding;

		triggerer.style.border = "none";
		triggerer.style.borderTop = "2px solid #D9DDDE";
		triggerer.style.borderLeft = "2px solid #D9DDDE";
	}

}


/**
 * This function hides an element and changes the triggerer accordingly.
 * 
 * @param string idEl the ID of the target
 * @param string idTriggerer the ID of the triggerer
 * @param string forShowing the text to be displayed on the triggerer after this
 * 		event
 * @param boolean cleanUp Must the content be cleaned up?
 */
function hide(idEl, idTriggerer, forShowing, cleanUp)
{
	var el = document.getElementById(idEl);
	var triggerer = document.getElementById(idTriggerer);

	if (el)
	{
		el.style.display = "none";

		if (cleanUp)
		{
			el.innerHTML = "";
		}

	}

	if (triggerer)
	{
		triggerer.value = forShowing;

		triggerer.style.border = "none";
		triggerer.style.borderRight= "2px solid #D9DDDE";
		triggerer.style.borderBottom = "2px solid #D9DDDE";
	}

	var parentEl = window.parent.document.getElementById(idEl);
	var parentTriggerer = window.parent.document.getElementById(idTriggerer);

	if (parentEl)
	{
		parentEl.style.display = "none";
	}

	if (parentTriggerer)
	{
		parentTriggerer.value = forShowing;

		parentTriggerer.style.border = "none";
		parentTriggerer.style.borderRight= "2px solid #D9DDDE";
		parentTriggerer.style.borderBottom = "2px solid #D9DDDE";
	}

}

/**
 * This function checks the dimensions and shows or hides the options
 * accordingly.
 */
function checkDimensions()
{
	var width = document.getElementById("new_width");
	var height = document.getElementById("new_height");

	if ((width.value <= 210) && (height.value <= 297))
	{
		show("asSheets");
		show("asA4");

		if (document.getElementById("new_sheets").checked == true)
		{
			show("boxForSheetSize");
		}

	}
	else if ((width.value <= 297) && (height.value <= 420))
	{
		show("asSheets");
		hide("asA4");

		if (document.getElementById("new_sheets").checked == true)
		{
			document.getElementById("a3").checked = true;

			show("boxForSheetSize");
		}

	}
	else
	{
		hide("asSheets");
		hide("boxForSheetSize");
	}

}

/**
 * This function shows the materials according to the type.
 * 
 * @param string type the material type
 * @param string urlBeginning the beginning of the URL
 */
function showMaterials(type, urlBeginning)
{
	var fieldForInformation = "inf_new_material";
	var fieldForRes = "boxFor_" + type;

document.getElementById(fieldForInformation).innerHTML = "Päritakse materjale...";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else
			{
		document.getElementById(fieldForRes).innerHTML = response.materials;

document.getElementById(fieldForInformation).innerHTML = "Materjalid kuvatud.";
			}

		}

	};

	if (!urlBeginning)
	{
		urlBeginning = "";
	}

xmlHttp.open("GET", urlBeginning + "?module=priceCalculator&function=buildMaterials&public&type=" + type, true);

	xmlHttp.send(null);
}

/**
 * This function uploads a file.
 * 
 * @param string idImgField the ID of the target box
 * @param boolean submit Do we have to submit the form?
 * @param integer idMaterial the ID of the material
 */
function upload(idImgField, submit, idMaterial)
{
	var par = window.parent.document;
	var el = par.getElementById(idImgField);

	el.width = 16;
	el.height = 16;

	if (submit)
	{
		el.src = getPathToRootDir(parent) + 'img/indicator_arrows.gif';
		document['formForUploadingFileToImport' + idMaterial].submit();
	}
	else
	{
		hide('prices' + idMaterial, 'buttonForPrices' + idMaterial, '');
		el.src = getPathToRootDir(parent) + 'img/ready.jpg';
	}

}

/**
 * This function gets the path to the root folder.
 * 
 * @param string parent Do we use the parent window?
 * @returns string the path
 */
function getPathToRootDir(parent)
{

	if (parent)
	{
		var pathinfo = window.parent.location.pathname;
	}
	else
	{
		var pathinfo = window.location.pathname;
	}

	var deep =substr_count(pathinfo, "/"); 

	if(substr(pathinfo, 1, 16) =='price_calculator')
	{
		deep--;
	}

	var path_to_root = "./"; 

	for(var i =1; i <deep; i++)
	{
		path_to_root += "../";
	}

	return path_to_root; 
}

/**
 * This function shows the uploaded file.
 * 
 * @param object images the images
 * @param object removing the element that is for removing the uploaded file
 * @param string nameOUser the name of the user
 */
function setUploadedImg(images, removing, nameOUser)
{
	var par = window.parent.document;
	var elInForm = par.getElementById(images.inForm.id);

	elInForm.alt = images.inForm.alt;
	elInForm.title = images.inForm.alt;
	elInForm.src = urldecode(images.inForm.src);
	elInForm.width = images.inForm.width;
	elInForm.height = images.inForm.height;

	if (elInForm.alt == "See pole pildifail.")
	{
		par.getElementById(images.inForm.id + "Hidden").value = images.inForm.alt;
	}
	else if (elInForm.alt == "Pilti ei leita.")
	{
		par.getElementById(images.inForm.id + "Hidden").value = elInForm.src;
	}
	else if (elInForm.alt != "")
	{
		par.getElementById(images.inForm.id + "Hidden").value = images.inForm.alt;

	if (images.inForm.alt == "Palun logi uuesti sisse. TÃ¶Ã¶periood on aegunud.")
		{
			buildNotLoggedIn();
		}
else if (images.inForm.alt.substr(0, 30) == "Vahepeal on Sinu arvutis teine")
		{
			var form = document.getElementById("formForUploadingImage");
			form.innerHTML = "";

			var parentDiv = par.getElementById("formForLoggingInInHeader");

			parentDiv.innerHTML = "";

			var userSentence = par.createElement("span");
			var loggedInTxt = par.createTextNode("Sisse on loginud ");
			var lineBreak = par.createElement("br");
			var userName = par.createElement("b");

			userName.innerHTML = nameOUser;

			var dotTxt = par.createTextNode(".");

			userSentence.appendChild(loggedInTxt);
			userSentence.appendChild(lineBreak);
			userSentence.appendChild(userName);
			userSentence.appendChild(dotTxt);

			var link = par.createElement("a");

			link.setAttribute("href", "index.php?function=logOut");
			link.innerHTML = "Logi&nbsp;vÃ¤lja!";

			parentDiv.appendChild(userSentence);
			parentDiv.appendChild(link);
		}

	}
	else
	{
		var pathParts = elInForm.src.split(/[/]/);
		var biggerSize = Math.max(images.inForm.width, images.inForm.height) + "";

par.getElementById(images.inForm.id + "Hidden").value = pathParts[pathParts.length - 1].substring(0, pathParts[pathParts.length - 1].length - 5 - biggerSize.length);
	}

	var elInPreview = par.getElementById(images.inPreview.id);

	if (elInPreview)
	{
		elInPreview.alt = images.inPreview.alt;
		elInPreview.title = images.inPreview.alt;
		elInPreview.src = images.inPreview.src;
		elInPreview.width = images.inPreview.width;
		elInPreview.height = images.inPreview.height;
	}

	if (par.getElementById(removing.id))
	{
		par.getElementById(removing.id).style.visibility = removing.visibility;
	}

}

function showBoundMaterials(idMaterial)
{
	var fieldForInformation = "inf_material" + idMaterial;
	var fieldForRes = "boundMaterials" + idMaterial;

document.getElementById(fieldForInformation).innerHTML = "Päritakse seotud materjale...";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
				buildNotLoggedIn();

		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else
			{
	document.getElementById(fieldForRes).innerHTML = response.boundMaterials;

				if (response.idsOBoundMaterials)
				{

					for ( var key in response.idsOBoundMaterials)
					{

						if (key == "each")
						{
							break;
						}

new Ajax.Autocompleter("val_boundMaterial" + response.suffix + response.idsOBoundMaterials[key], "listOMaterials", "?function=getUnboundMaterials&update&module=priceCalculator&idMaterial=" + idMaterial,
{
							afterUpdateElement: updateHidden,
			indicator: "indicatorForDesc" + response.idsOBoundMaterials[key],
							method: "get",
							paramName: "q"
});

					}

				}

new Ajax.Autocompleter("val_new_boundMaterial" + response.suffix + idMaterial, "listOMaterials", "?function=getUnboundMaterials&module=priceCalculator&idMaterial=" + idMaterial,
{
					afterUpdateElement: updateHidden,
					indicator: 'indicatorFornew_desc' + idMaterial,
					method:'get',
					paramName: 'q'
});


document.getElementById(fieldForInformation).innerHTML = "Seotud materjalid kuvatud.";
document.getElementById("val_new_boundMaterial" + response.suffix + idMaterial).focus();
			}

		}

	};

xmlHttp.open("GET", "?function=buildBoundMaterials&idMaterial=" + idMaterial, true);

	xmlHttp.send(null);
}

/**
 * This function shows the box for lamination only if the chosen material is
 * bound to a lamination material and hides it otherwise.
 * 
 * @param valOMaterial This is the value of the chosen material. It contains of
 * 		the ID and the suitability, divided by a stroke. The suitability is
 * 		<code>1</code> if the box for lamination must be showed and
 * 		<code>0</code> otherwise.
 */
function showLaminated(valOMaterial)
{
	partsOValOMaterial = explode("-", valOMaterial);

	if (partsOValOMaterial[1] == 1)
	{
		show("boxForLaminated");
	}
	else
	{
		hide("boxForLaminated");
	}

}

function showContentOSchooling(idSchooling)
{
	var fieldForInformation = "inf_contentOSchooling" + idSchooling;
	var fieldForRes = "contentOSchooling" + idSchooling;

document.getElementById(fieldForInformation).innerHTML = "Päritakse koolitust...";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
				buildNotLoggedIn();

		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else
			{
	document.getElementById(fieldForRes).innerHTML = response.schoolings;

document.getElementById(fieldForInformation).innerHTML = "Koolituse sisu kuvatud.";
			}

		}

	};

xmlHttp.open("GET", "?module=schoolings&function=buildSchooling&idSchooling=" + idSchooling, true);

	xmlHttp.send(null);
}

function showExercises(idSchooling)
{
	var fieldForInformation = "inf_exercises" + idSchooling;
	var fieldForRes = "exercises" + idSchooling;

document.getElementById(fieldForInformation).innerHTML = "Päritakse harjutusi...";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
				buildNotLoggedIn();

		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else
			{
		document.getElementById(fieldForRes).innerHTML = response.exercises;

document.getElementById(fieldForInformation).innerHTML = "Harjutused kuvatud.";
			}

		}

	};

xmlHttp.open("GET", "?module=schoolings&function=buildExercises&idSchooling=" + idSchooling, true);

	xmlHttp.send(null);
}

function showCommentsToExercise(idExercise)
{
	var fieldForInformation = "inf_commentsToExercise" + idExercise;
	var fieldForRes = "commentsToExercise" + idExercise;

document.getElementById(fieldForInformation).innerHTML = "Päritakse harjutuse kommentaare...";

	xmlHttp = GetXmlHttpObject();

	if (xmlHttp == null)
	{
		alert ("Browser does not support HTTP Request");

		return
	}

	xmlHttp.onreadystatechange = function()
	{

		if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
		{
			var response = eval("(" + xmlHttp.responseText + ")");

			if (response.err)
			{
				buildNotLoggedIn();

		document.getElementById(fieldForInformation).innerHTML = response.err;
			}
			else
			{
document.getElementById(fieldForRes).innerHTML = response.commentToExercises;

document.getElementById(fieldForInformation).innerHTML = "Harjutuse kommentaarid kuvatud.";
			}

		}

	};

xmlHttp.open("GET", "?module=schoolings&function=buildCommentsToExercise&idExercise=" + idExercise, true);

	xmlHttp.send(null);
}

