onloadLoader = function()
{
	var calculateBtn = document.getElementById('btn-calculate');
	var currencies = document.myProjectCost.currency;
	var currenciesFrame = document.getElementById('currencies-frame');
	var currencyIsNotSelectedMsg = "Please select where are you from";
	var itemsIsNotSelectedMsg = "Please select country, volunteer job or duration!";
	
	var countrySelect = document.myProjectCost.country;
	var projectSelect = document.myProjectCost.project;
	var durationSelect = document.myProjectCost.duration;
	
	var calculatedPriceBox = document.myProjectCost.calculatedPrice;
	var calculatedPriceBoxDefault = calculatedPriceBox.value;
	
	for (var i = 0; i < currencies.length; i++)
		currencies[i].onclick = function() {
			currencyChanged();
			resetCalculatedPriceBox();
			optionsForCountrySelect();
			optionsForProjectSelect();
			optionsForDurationSelect();
		}
	
	//
	calculateBtn.onclick = function() {
		var destinationSelected = document.myProjectCost.country.value;
		var projectSelected = document.myProjectCost.project.value;
		var durationSelected = document.myProjectCost.duration.value;
	
		if (typeof currency == "undefined")
		{
			alert(currencyIsNotSelectedMsg);
			return false;
		}
		
		if (destinationSelected != "none" && projectSelected != "none" && durationSelected != "none")
		{
			calculate();
			return false;
		}
		else
		{
			resetCalculatedPriceBox();
			alert(itemsIsNotSelectedMsg);
			return false;
		}
	}
	
	//
	calculate = function()
	{
		currencySymbol = prices[currency]["currency"]["symbol"];
		
		var destinationSelected = document.myProjectCost.country.value;
		var projectSelected = document.myProjectCost.project.value;
		var durationSelected = document.myProjectCost.duration.value;
		
		if (projectSelected.indexOf("_") == -1)
		{
			var calculatedPrice = prices[currency][destinationSelected][projectSelected]["prices"][durationSelected];
		}
		else
		{
			projectSelected = projectSelected.split("_");
			var calculatedPrice = prices[currency][destinationSelected][projectSelected[0]][projectSelected[1]]["prices"][durationSelected];
		}
		
		calculatedPriceBox.value = currencySymbol + " " + calculatedPrice;
	}
	
	//
	currencyChanged = function()
	{
		setClassAttribute(currenciesFrame, getClassAttribute(currenciesFrame).replace(/\brequired\b/g, ''));
		
		
		for (var i = 0; i < currencies.length; i++)
			if (currencies[i].checked) { 
				currency = currencies[i].value;
				document.getElementById("my-project-cost-legend").style.backgroundImage="url('/_design/prices/bg-myprice-" + currency + ".gif')";
			}
			
	}
	
	//
	currencyIsSelected = function()
	{
		currencyChanged();
		
		if (typeof currency == "undefined")
		{
			setClassAttribute(currenciesFrame, getClassAttribute(currenciesFrame) + " required");
			alert(currencyIsNotSelectedMsg);
			return;
		}
		else optionsForCountrySelect();

	}
	
	//
	optionsForCountrySelect = function()
	{
		var countrySelect = document.myProjectCost.country;
		removeOptionsFromSelect(countrySelect);
		
		var destinations = prices[currency];
		
		for (var destinationKey in destinations)
		{
			if (destinationKey != "currency")
			{
				var optionNode = createOptionElement(destinations[destinationKey]["name"], destinationKey);
				countrySelect.appendChild(optionNode);
			}
		}
	
		countrySelect.onchange = function() {
			optionsForProjectSelect();
			optionsForDurationSelect();
		}
	
		countrySelect.onclick = function ()
		{
			resetCalculatedPriceBox();
		}

	}
	
	//
	optionsForProjectSelect = function()
	{
		var destinationSelected = document.myProjectCost.country.value;
		
		var projectSelect = document.myProjectCost.project;
		removeOptionsFromSelect(projectSelect);
		
		if (destinationSelected == "none") return;
		
		var projects = prices[currency][destinationSelected];
		
		for (var projectKey in projects)
		{
			if (projectKey != "name" && typeof projects[projectKey]["prices"] != "undefined")
			{
				var optionNode = createOptionElement(projects[projectKey]["name"].replace(/\&amp\;/, "&"), projectKey);
				projectSelect.appendChild(optionNode);
			}
			else if (projectKey != "name")
			{
				var optionGroupNode = createOptionGroupElement(projects[projectKey]["name"].replace(/\&amp\;/, "&"));
				
				for(subprojectKey in projects[projectKey])
				{
					if (subprojectKey != "name" &&  typeof projects[projectKey][subprojectKey]["prices"] != "undefined")
					{
						var optionNode = createOptionElement(projects[projectKey][subprojectKey]["name"].replace(/\&amp\;/, "&"), projectKey + "_" + subprojectKey);
						optionGroupNode.appendChild(optionNode);
					}
				}
				
				projectSelect.appendChild(optionGroupNode);
			}
		}
		
		projectSelect.onchange = function()
		{
			optionsForDurationSelect();
		}
		
		projectSelect.onclick = function ()
		{
			resetCalculatedPriceBox();
		}
	}
	
	//
	optionsForDurationSelect = function()
	{
		var destinationSelected = document.myProjectCost.country.value;
		var projectSelected = document.myProjectCost.project.value;
		
		var durationSelect = document.myProjectCost.duration;
		removeOptionsFromSelect(durationSelect);
		
		if(destinationSelected == "none" || projectSelected == "none") return;
		
		if (projectSelected.indexOf("_") == -1 && projectSelected != "none")
		{
			var durations = prices[currency][destinationSelected][projectSelected]["prices"];
		}
		else
		{
			projectSelected = projectSelected.split("_");
			var durations = prices[currency][destinationSelected][projectSelected[0]][projectSelected[1]]["prices"];
		}
		
		for (var durationKey in durations)
		{
			var optionNode = createOptionElement(durationKey.replace(/\-/, " "), durationKey);
			durationSelect.appendChild(optionNode);
		}
		
		durationSelect.onclick = function ()
		{
			resetCalculatedPriceBox();
		}
	}
	
	//
	createOptionElement = function(textNode, valueAttr)
	{
		var optionNode = document.createElement("option");
		
		var optionTxt = document.createTextNode(textNode);
		optionNode.value = valueAttr;
		optionNode.appendChild(optionTxt);
		
		return optionNode;
	}
	
	createOptionGroupElement = function(labelNode)
	{
		var optionGroupNode = document.createElement("optgroup");
		optionGroupNode.label = labelNode;
		
		return optionGroupNode;
	}
	
	//
	removeOptionsFromSelect = function(selectObj)
	{
		if(selectObj.hasChildNodes())
		{
			while(selectObj.childNodes.length >= 1 && selectObj.lastChild.value !== "none")
			{
				selectObj.removeChild(selectObj.lastChild);
			}
		}
	}
	
	//
	resetCalculatedPriceBox = function()
	{
		calculatedPriceBox.value = calculatedPriceBoxDefault;
	}
	
	setClassAttribute = function(elem, valueAttr)
	{
		navigator.userAgent.indexOf('MSIE') != -1 ? elem.setAttribute("className", valueAttr) : elem.setAttribute("class", valueAttr);
	}
	
	getClassAttribute = function(elem)
	{
		classValue = navigator.userAgent.indexOf('MSIE') != -1 ? elem.getAttribute("className") : elem.getAttribute("class");
		return classValue != null ? classValue : "";
	}
	
	//
	currencyIsSelected();
}

