//========================================================================
var xmlHttp = createXmlHttpRequestObject();
var xmlHttp1 = createXmlHttpRequestObject();
var regions = '';
var monthes = '';
var years = '';
var durations = '';
var companies = '';
var liners = '';
var result = '';
var start_result = 0;
var live_site;

//========================================================================

function openDiv(id)
{
	el = document.getElementById(id);
	el.style.overflow = "scroll";
}

function closeDiv(id)
{
	el = document.getElementById(id);
	el.style.overflow = "hidden";
}

function Wait(msec)
{
	var date = new Date();
	var curDate = null;

	do { curDate = new Date(); }
	while(curDate-date < msec);
}

//========================================================================

function getActive(type)
{
	if(type == 'month')
	{
		var divs = document.getElementsByTagName('div');
		for(i=0; i<divs.length; i++)
		   if(divs[i].className == 'month-active-element') return divs[i].id;
	}
	
	var spans = document.getElementsByTagName('span');
	for(i=0; i<spans.length; i++)
	{
		if(spans[i].className == (type + '-active-element')) return spans[i].id;
	}
	
	return "";
}

//========================================================================

function getDurationsAndMonthes(xmlDoc)
{
			var durations_arr = xmlDoc.getElementsByTagName("duration");
			var durations_spans = document.getElementsByTagName("span");
			var active_dur = getActive('duration');
			for(i=0; i<durations_spans.length; i++)
			{
				var el = durations_spans[i];
				if(el.className != "duration-element" && el.className != "duration-disabled-element" && el.className != "duration-active-element") continue;
				var is = false;
				for(j=0; j<durations_arr.length; j++)
				{
					du = durations_arr[j].firstChild.nodeValue;
					if(el.id == 1) if(Number(du) > 0 && Number(du) <= 5) { is = true; break; }
					if(el.id == 2) if(Number(du) >= 6 && Number(du) <= 8) { is = true; break; }
					if(el.id == 3) if(Number(du) >= 9 && Number(du) <= 15) { is = true; break; }
					if(el.id == 4) if(Number(du) >= 16) { is = true; break; }
				}
				
				if(is)
				{
					if(el.id == active_dur) el.className = "duration-active-element";
					else el.className = "duration-element";
				}
				else el.className = "duration-disabled-element";
			}
			//---------------------------
			var monthes9 = xmlDoc.getElementsByTagName("monthes9");
			var monthes10 = xmlDoc.getElementsByTagName("monthes10");
			var monthes9_arr = monthes9[0].getElementsByTagName("month");
			var monthes10_arr = monthes10[0].getElementsByTagName("month");
			var monthes_arr = document.getElementsByTagName("div");
			var active_month = getActive('month');

			for(i=0; i<monthes_arr.length; i++)
			{
				if(monthes_arr[i].className != "month-element" && monthes_arr[i].className != "month-disabled-element" &&
				   monthes_arr[i].className !="month-active-element") continue;
				var el = monthes_arr[i];
				var is = false;
				if(el.id.substr(el.id.length-4) == "2009")
				{
					for(j=0; j<monthes9_arr.length; j++)
					{
						mo = monthes9_arr[j].firstChild.nodeValue;
						if(el.id.substr(0, el.id.length-5) == mo) {is = true; break;}
					}
				}
				if(el.id.substr(el.id.length-4) == "2010")
				{
					for(j=0; j<monthes10_arr.length; j++)
					{
						mo = monthes10_arr[j].firstChild.nodeValue;
						if(el.id.substr(0, el.id.length-5) == mo) {is = true; break;}
					}
				}
				
				if(is)
				{
					if(el.id == active_month) el.className = "month-active-element";
					else el.className = "month-element";
				}
				else el.className = "month-disabled-element";
			}
}

//========================================================================

function sendCompaniesAndLinersByRegion(regionId)
{
	if(!regionId || regionId == "") return;
	//alert(regionId);
	if(xmlHttp1.readyState == 4 || xmlHttp1.readyState == 0)
	{   
	    request = "task=region&region_id=" + regionId;
		if(!live_site || live_site == "") live_site = "http://demarcruise.ru";
		//alert(request);
		try
		{
		   xmlHttp1.open("GET", live_site + "/components/com_searchform/asearch.php?" + request, true);
		   xmlHttp1.onreadystatechange = getCompaniesAndLinersByRegion;
		   xmlHttp1.send(null);
		}
		catch(e) {}
	}
}

function getCompaniesAndLinersByRegion()
{
	if(xmlHttp1.readyState == 4)
	{
		if(xmlHttp1.status == 200)
		{
			xmlResponse = xmlHttp1.responseXML;
			if(!xmlResponse) {alert("Error code 003!"); return;}
			xmlDocumentElement = xmlResponse.documentElement;
			if(!xmlDocumentElement) {alert("Error code 004!"); return;}
			
			var text = "";
			var companies_div = document.getElementById("companies");
			var liners_div = document.getElementById("liners");
			var companies_arr = xmlDocumentElement.getElementsByTagName("company");
			var active_company = getActive('company');
			var active_liner = getActive('liner');
			var className = "";
			
			companies_div.innerHTML = "Круизные компании <br />";
			liners_div.innerHTML = "Лайнеры <br />";
			for(i=0; i<companies_arr.length; i++)
			{
				className = 'company-element';
				if(companies_arr[i].getAttribute("id") == active_company) className = 'company-active-element';
				companies_div.innerHTML = companies_div.innerHTML + 
				   "<span class='" + className + "' id='" + companies_arr[i].getAttribute("id") +
				   "' onclick='onCompanyClick(this.id, this.className)'> " + companies_arr[i].getAttribute("name") + " </span> <br>";
				
				var liners_arr = companies_arr[i].getElementsByTagName("liner");
				for(j=0; j<liners_arr.length; j++)
				{
					var val = liners_arr[j].firstChild.nodeValue;
					className = 'liner-element';
				    if(liners_arr[j].getAttribute("id") == active_liner) className = 'liner-active-element';
					liners_div.innerHTML = liners_div.innerHTML +
					   "<span class='company_id'> <span class='"+className+"' id='" + liners_arr[j].getAttribute("id") +
					   "' onclick='onLinerClick(this.id, this.className)'> " + val + " </span> </span> <br>";
				}
			}
			companies_div.innerHTML += "<a href=javascript:showIFrame('icompany')> Показать все >> </a>";
			liners_div.innerHTML += "<a href=javascript:showIFrame('iliners')> Показать все >> </a>";
			
			getDurationsAndMonthes(xmlDocumentElement);
		}
		else
		{
			alert("error during request...");
		}
	}
}

//------------------------------------------------------------------------

function getRequestString()
{
	var str = "";
	if(regions != "") str = "region=" + regions;
	
	if(monthes != "")
	{
	   if(str == "") str += ""; else str += "&";
	   str += "month=" + monthes;
	}
	
	if(years != "")
	{
	   if(str == "") str += ""; else str += "&";
	   str += "year=" + years;
	}
	
	if(durations != "")
	{
	   if(str == "") str += ""; else str += "&";
	   str += "duration=" + durations;
	}
	
	if(companies != "")
	{
	   if(str == "") str += ""; else str += "&";
	   str += "company=" + companies;
	}
	
	if(liners != "")
	{
	   if(str == "") str += ""; else str += "&";
	   str += "liner=" + liners;
	}
	
	start = document.getElementById("start-result");
	if(start && start_result == 0)
	{
		start_result = start.firstChild.nodeValue;
		//alert(start_result);
	}
	
	//alert(str);
	return str;
}

function sendRequest()
{
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
	{   
	    request = getRequestString();
		if(!live_site || live_site == "") live_site = "http://demarcruise.ru";
		//alert(request);
		try
		{
		   xmlHttp.open("GET", live_site + "/components/com_searchform/asearch.php?" + request, true);
		   xmlHttp.onreadystatechange = handleServerResponse;
		   xmlHttp.send(null);
		}
		catch(e) {}
	}
}

//------------------------------------------------------------------------------

function sendLinersByCompany()
{
	//if(!companies || companies == "") return;
	if(xmlHttp1.readyState == 4 || xmlHttp1.readyState == 0)
	{   
	    request = "task=company&company_id=" + companies;
		//alert(request);
		if(!live_site || live_site == "") live_site = "http://demarcruise.ru";
		try
		{
		   xmlHttp1.open("GET", live_site + "/components/com_searchform/asearch.php?" + request, true);
		   xmlHttp1.onreadystatechange = getLinersByCompany;
		   xmlHttp1.send(null);
		}
		catch(e) {}
	}
}

function getLinersByCompany()
{
	if(xmlHttp1.readyState == 4)
	{
		if(xmlHttp1.status == 200)
		{
			xmlResponse = xmlHttp1.responseXML;
			if(!xmlResponse) {alert("Error code 003!"); return;}
			xmlDocumentElement = xmlResponse.documentElement;
			if(!xmlDocumentElement) {alert("Error code 004!"); return;}
			
			var text = "";
			var active_liner = getActive('liner');
			var liners_div = document.getElementById("liners");
			liners_div.innerHTML = "Лайнеры <br />";
			
			var liners_arr = xmlDocumentElement.getElementsByTagName("liner");
			var arr_len = liners_arr.length;
			if(arr_len > 10) arr_len = 10;
			for(j=0; j<arr_len; j++)
			{
				var val = liners_arr[j].firstChild.nodeValue;
				className = 'liner-element';
				if(liners_arr[j].getAttribute("id") == active_liner) className = 'liner-active-element';
				liners_div.innerHTML = liners_div.innerHTML +
				   "<span class='company_id'> <span class='"+className+"' id='" + liners_arr[j].getAttribute("id") +
				   "' onclick='onLinerClick(this.id, this.className)'> " + val + " </span> </span> <br>";
			}
			
			liners_div.innerHTML += "<a href=javascript:showIFrame('iliners')> Показать все >> </a>";
			getDurationsAndMonthes(xmlDocumentElement);
			getActiveRegions(xmlDocumentElement);
		}
		else
		{
			alert("error during request...");
		}
	}
}

//------------------------------------------------------------------------------

//------------------------------------------------------------------------------

function sendByLiners()
{
	if(!liners || liners == "") return;
	if(xmlHttp1.readyState == 4 || xmlHttp1.readyState == 0)
	{   
	    request = "task=liner&liners_id=" + liners;
		//alert(request);
		if(!live_site || live_site == "") live_site = "http://demarcruise.ru";
		try
		{
		   xmlHttp1.open("GET", live_site + "/components/com_searchform/asearch.php?" + request, true);
		   xmlHttp1.onreadystatechange = getByLiners;
		   xmlHttp1.send(null);
		}
		catch(e) {}
	}
}

function getByLiners()
{
	if(xmlHttp1.readyState == 4)
	{
		if(xmlHttp1.status == 200)
		{
			xmlResponse = xmlHttp1.responseXML;
			if(!xmlResponse) {alert("Error code 003!"); return;}
			xmlDocumentElement = xmlResponse.documentElement;
			if(!xmlDocumentElement) {alert("Error code 004!"); return;}
			
			getDurationsAndMonthes(xmlDocumentElement);
			getActiveRegions(xmlDocumentElement);
			getActiveCompanies(xmlDocumentElement);
		}
		else
		{
			alert("error during request...");
		}
	}
}

//------------------------------------------------------------------------------

function sendByMonth()
{
	if(!monthes || monthes == "" || !years || years == "") return;
	if(xmlHttp1.readyState == 4 || xmlHttp1.readyState == 0)
	{   
	    request = "task=month&month=" + monthes + "&year=" + years;
		//alert(request);
		if(!live_site || live_site == "") live_site = "http://demarcruise.ru";
		try
		{
		   xmlHttp1.open("GET", live_site + "/components/com_searchform/asearch.php?" + request, true);
		   xmlHttp1.onreadystatechange = getByMonth;
		   xmlHttp1.send(null);
		}
		catch(e) {}
	}
}

function getByMonth()
{
	if(xmlHttp1.readyState == 4)
	{
		if(xmlHttp1.status == 200)
		{
			xmlResponse = xmlHttp1.responseXML;
			if(!xmlResponse) {alert("Error code 003!"); return;}
			xmlDocumentElement = xmlResponse.documentElement;
			if(!xmlDocumentElement) {alert("Error code 004!"); return;}
			
			var durations_arr = xmlDocumentElement.getElementsByTagName("duration");
			var durations_spans = document.getElementsByTagName("span");
			var active_dur = getActive('duration');
			for(i=0; i<durations_spans.length; i++)
			{
				var el = durations_spans[i];
				if(el.className != "duration-element" && el.className != "duration-disabled-element" && el.className != "duration-active-element") continue;
				var is = false;
				for(j=0; j<durations_arr.length; j++)
				{
					du = durations_arr[j].firstChild.nodeValue;
					if(el.id == 1) if(Number(du) > 0 && Number(du) <= 5) { is = true; break; }
					if(el.id == 2) if(Number(du) >= 6 && Number(du) <= 8) { is = true; break; }
					if(el.id == 3) if(Number(du) >= 9 && Number(du) <= 15) { is = true; break; }
					if(el.id == 4) if(Number(du) >= 16) { is = true; break; }
				}
				
				if(is)
				{
					if(el.id == active_dur) el.className = "duration-active-element";
					else el.className = "duration-element";
				}
				else el.className = "duration-disabled-element";
			}
			
			getActiveLiners(xmlDocumentElement);
			getActiveRegions(xmlDocumentElement);
			getActiveCompanies(xmlDocumentElement);
		}
		else
		{
			alert("error during request...");
		}
	}
}

//------------------------------------------------------------------------------

function sendByDuration()
{
	if(!durations || durations == "") return;
	if(xmlHttp1.readyState == 4 || xmlHttp1.readyState == 0)
	{   
	    request = "task=duration&duration="+durations;
		//alert(request);
		if(!live_site || live_site == "") live_site = "http://demarcruise.ru";
		try
		{
		   xmlHttp1.open("GET", live_site + "/components/com_searchform/asearch.php?" + request, true);
		   xmlHttp1.onreadystatechange = getByDuration;
		   xmlHttp1.send(null);
		}
		catch(e) {}
	}
}

function getByDuration()
{
	if(xmlHttp1.readyState == 4)
	{
		if(xmlHttp1.status == 200)
		{
			xmlResponse = xmlHttp1.responseXML;
			if(!xmlResponse) {alert("Error code 003!"); return;}
			xmlDocumentElement = xmlResponse.documentElement;
			if(!xmlDocumentElement) {alert("Error code 004!"); return;}
			
			var monthes9 = xmlDocumentElement.getElementsByTagName("monthes9");
			var monthes10 = xmlDocumentElement.getElementsByTagName("monthes10");
			var monthes9_arr = monthes9[0].getElementsByTagName("month");
			var monthes10_arr = monthes10[0].getElementsByTagName("month");
			var monthes_arr = document.getElementsByTagName("div");
			var active_month = getActive('month');

			for(i=0; i<monthes_arr.length; i++)
			{
				if(monthes_arr[i].className != "month-element" && monthes_arr[i].className != "month-disabled-element" &&
				   monthes_arr[i].className !="month-active-element") continue;
				var el = monthes_arr[i];
				var is = false;
				if(el.id.substr(el.id.length-4) == "2009")
				{
					for(j=0; j<monthes9_arr.length; j++)
					{
						mo = monthes9_arr[j].firstChild.nodeValue;
						if(el.id.substr(0, el.id.length-5) == mo) {is = true; break;}
					}
				}
				if(el.id.substr(el.id.length-4) == "2010")
				{
					for(j=0; j<monthes10_arr.length; j++)
					{
						mo = monthes10_arr[j].firstChild.nodeValue;
						if(el.id.substr(0, el.id.length-5) == mo) {is = true; break;}
					}
				}
				
				if(is)
				{
					if(el.id == active_month) el.className = "month-active-element";
					else el.className = "month-element";
				}
				else el.className = "month-disabled-element";
			}
			
			getActiveLiners(xmlDocumentElement);
			getActiveRegions(xmlDocumentElement);
			getActiveCompanies(xmlDocumentElement);
		}
		else
		{
			alert("error during request...");
		}
	}
}

//------------------------------------------------------------------------------

function getActiveRegions(xmlDoc)
{
	var regions_node = xmlDoc.getElementsByTagName("regions");
	if(regions_node) var regions_arr = regions_node[0].getElementsByTagName("region");
	var regions_spans = document.getElementsByTagName("span");
	var active = "";
	for(i=0; i<regions_spans.length; i++)
	{
		var regsp = regions_spans[i];
		if(regsp.className == 'region-active-element') active = regsp.id; else active = "";
		if(regsp.className != 'region-element' && regsp.className != 'region-active-element' && regsp.className != 'region-disabled-element') continue;
		regsp.className = 'region-disabled-element';
		
		for(j=0; j<regions_arr.length; j++)
		{
			var reg = regions_arr[j];
			if(reg.firstChild.nodeValue == regsp.id)
			{
				if(reg.firstChild.nodeValue == active) regsp.className = 'region-active-element';
				else regsp.className = 'region-element';
				break;
			}
		}
	}
}

function getActiveCompanies(xmlDoc)
{
	var comp_arr = xmlDoc.getElementsByTagName('company');
	var comp_spans = document.getElementsByTagName('span');
	var active = '';
	for(i=0; i<comp_spans.length; i++)
	{
		var compsp = comp_spans[i];
		if(compsp.className == 'company-active-element') active = compsp.id; else active = '';
		if(compsp.className != 'company-element' && compsp.className != 'company-active-element' && compsp.className != 'company-disabled-element') continue;
		compsp.className = 'company-disabled-element';
		
		for(j=0; j<comp_arr.length; j++)
		{
			var comp = comp_arr[j];
			if(comp.firstChild.nodeValue == compsp.id)
			{
				if(comp.firstChild.nodeValue == active) compsp.className = 'company-active-element';
				else compsp.className = 'company-element';
				break;
			}
		}
	}
}

function getActiveLiners(xmlDoc)
{
			var text = "";
			var active_liner = getActive('liner');
			var liners_div = document.getElementById("liners");
			liners_div.innerHTML = "Лайнеры <br />";
			
			var liners_arr = xmlDoc.getElementsByTagName("liner");
			for(j=0; j<liners_arr.length; j++)
			{
				var val = liners_arr[j].firstChild.nodeValue;
				className = 'liner-element';
				if(liners_arr[j].getAttribute("id") == active_liner) className = 'liner-active-element';
				liners_div.innerHTML = liners_div.innerHTML +
				   "<span class='company_id'> <span class='"+className+"' id='" + liners_arr[j].getAttribute("id") +
				   "' onclick='onLinerClick(this.id, this.className)'> " + val + " </span> </span> <br>";
			}
			
			liners_div.innerHTML += "<a href=javascript:showIFrame('iliners')> Показать все >> </a>";
}

//------------------------------------------------------------------------------

function onRegionClick(id, class_name)
{
	if(class_name == 'region-disabled-element') return;
	regions = "";
	regions_arr = document.getElementsByTagName("span");
	for(i=0; i<regions_arr.length; i++)
	{
		if(regions_arr[i].className == "region-element" || regions_arr[i].className == "region-active-element")
		{   
			if(regions_arr[i].id == id) regions_arr[i].className = "region-active-element";
		    else regions_arr[i].className = "region-element";
		}
		
	}
	
	regions = id;
	sendCompaniesAndLinersByRegion(id);
	sendRequest();
}

function onCompanyClick(id, class_name)
{
	if(class_name == 'company-disabled-element') return;
	companies = "";
	companies_arr = document.getElementsByTagName("span");
	for(i=0; i<companies_arr.length; i++)
	{
		if(companies_arr[i].className == "company-element" || companies_arr[i].className == "company-active-element")
		{
			el = companies_arr[i];
			if(el.id == id) {el.className = "company-active-element"; }
			else el.className = "company-element";
			continue;
		}
		
		if(companies_arr[i].className == 'frame-company-element' || companies_arr[i].className == 'frame-company-active-element')
		{
			el = companies_arr[i];
			if(el.id == id) {el.className = "frame-company-active-element";}
			else el.className = "frame-company-element";
		}
	}

    companies = id;
	sendLinersByCompany();
	sendRequest();
}

function onLinerClick(id, class_name)
{
	if(class_name == 'liner-disabled-element') return;
	liners = "";
	liners_arr = document.getElementsByTagName("span");
	for(i=0; i<liners_arr.length; i++)
	{
		if(liners_arr[i].className == "liner-element" || liners_arr[i].className == "liner-active-element")
		{
			el = liners_arr[i];
			if(el.id == id) el.className = "liner-active-element";
			else el.className = "liner-element";
			continue;
		}
		
		if(liners_arr[i].className == 'frame-liner-element' || liners_arr[i].className == 'frame-liner-active-element')
		{
			el = liners_arr[i];
			if(el.id == id) {el.className = "frame-liner-active-element";}
			else el.className = "frame-liner-element";
		}
	}
	
	liners = id;
	sendByLiners();
	sendRequest();
}

function onMonthClick(id, class_name)
{
	if(class_name == 'month-disabled-element') return;
	monthes = "";
	years = "";
	var el;
	monthes_arr = document.getElementsByTagName("div");
	for(i=0; i<monthes_arr.length; i++)
	{
		if(monthes_arr[i].className == "month-element" || monthes_arr[i].className == "month-active-element")
		{
			el = monthes_arr[i];
			if(el.id == id) el.className = "month-active-element";
			else el.className = "month-element";
		}
		
		if(monthes_arr[i].className == "month-element" || monthes_arr[i].className == "month-active-element")
		{
		    if(monthes_arr[i].className != "month-active-element") continue;
	    }
	}
	
	monthes = id.substr(0, id.length-5);
    years = id.substr(id.length-4);
	sendByMonth();
	sendRequest();
}

function onDurationClick(id, class_name)
{
	if(class_name == 'duration-disabled-element') return;
	durations = "";
	durations_arr = document.getElementsByTagName("span");
	for(i=0; i<durations_arr.length; i++)
	{
		if(durations_arr[i].className == "duration-element" || durations_arr[i].className == "duration-active-element")
		{
			el = durations_arr[i];
			if(el.id == id) el.className = "duration-active-element";
			else el.className = "duration-element";
		}
		
		if(durations_arr[i].className != "duration-active-element") continue;
		
		//if (durations != "") durations = durations + ',';
		durations = durations_arr[i].id;
	}
	
	durations = id;
	sendByDuration();
	sendRequest();
}

function onButtonActive(id)
{
	el = document.getElementById(id);
	el.style.border = 'inset';
	el.style.borderWidth = "1px";
}

function onButtonInActive(id)
{
	el = document.getElementById(id);
	el.style.border = 'solid';
	el.style.borderWidth = "1px";
}

function onClearClick()
{
	location.href = location.href;
}

//========================================================================

function createXmlHttpRequestObject()
{
	
	var xmlHttp;

	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch(e)
	{
		var Versions = new Array('MSXML2.XMLHTTP.6.0',
								 'MSXML2.XMLHTTP.5.0',
								 'MSXML2.XMLHTTP.4.0',
								 'MSXML2.XMLHTTP.3.0',
								 'MSXML2.XMLHTTP',
								 'Microsoft.XMLHTTP');
		for(var i=0; i<Versions.length && !xmlHttp; i++)
		{
			try
			{
				xmlHttp = new ActiveXObject(Versions[i]);
			}
			catch(e) {}
		}
	}
	
	if(!xmlHttp) alert("Object creating error!");
	else return xmlHttp;
}

function handleServerResponse()
{
	if(xmlHttp.readyState == 4)
	{
		if(xmlHttp.status == 200)
		{
			xmlResponse = xmlHttp.responseXML;
			if(!xmlResponse) {alert("Error code 003!"); return;}
			xmlDocumentElement = xmlResponse.documentElement;
			if(!xmlDocumentElement) {alert("Error code 004!"); return;}
			
			text = xmlDocumentElement.firstChild.data;
			//result = Number(xmlDocumentElement.firstChild.nodeValue);
			document.getElementById("start-result").innerHTML = text;
		}
		else
		{
			alert("error during request...");
		}
	}
}

function onShowClick()
{	
	start = document.getElementById("start-result");
	if(start) start_result = start.firstChild.nodeValue;
	if(start_result > 0)
	{
		request = getRequestString();
		if(request != "") request += "&";
		if(location.search == "") location.search = location.search + "?" + request + "task=show";
		else location.search = location.search + "&" + request + "task=show";
	}
	else
	   alert("Ничего не найдено.");
}

//======================================================================================================================

function showIFrame(id)
{
	el = document.getElementById(id);
	el.style.height = '500px';
	el.style.width = '550px';
	el.style.visibility = 'visible';
}

function closeIFrame(id)
{
	el = document.getElementById(id);
	el.style.height = '0';
	el.style.width = '0';
	el.style.visibility = 'hidden';
}
