
// quicksearch form tools

function startQuickSearch(targetForm)
{
	if (targetForm.sn.value.match(/^.+$/))
	{
		targetForm.gh.value = '-';
		targetForm.cid.value = '-';
	}	
	
	targetForm.submit();
	return true;
}

/*function selectionChanged(selectItem)
{
	if ((selectItem.seletedIndex && selectItem.seletedIndex > 0) || selectItem.value != '-') 
	{
		checkbox = document.getElementById('chb_' + selectItem.id.substr(4));
		if(!checkbox.checked)
		{
			checkbox.checked = true;
			checkboxListSelector(checkbox);			
		}
	}		
}*/

function checkboxListSelector(checkboxItem)
{
	containerNode = checkboxItem.parentNode.parentNode.parentNode.parentNode;
	allNodes = containerNode.getElementsByTagName('INPUT')
	if (!checkboxItem.checked)
	{
		select = document.getElementById('sel_' + checkboxItem.id.substr(4));
		if(select)
		{
			select.selectedIndex = 0;
			for(i=1; i<select.options.length; i++)
			{
				select[i].selected = false;
			}
		}
	}
	nodeCount = allNodes.length;

	cbNodes = new Array();

	for(i = 0; i < nodeCount; i++)
	{
		if ((allNodes[i].nodeName == "INPUT") && (allNodes[i].type == "checkbox"))
		{
			cbNodes[cbNodes.length] = allNodes[i];
		}
	}

	cbCount = cbNodes.length;

	if ((cbNodes[0] == checkboxItem) && (cbNodes[0].checked))
	{
		for(i = 1; i < cbCount; i++)
		{
			cbNodes[i].checked = false;
		}
	}
	else
	{
		anyChecked = false;
		for(i = 1; i < cbCount; i++)
		{
			anyChecked = anyChecked || cbNodes[i].checked;
		}

		cbNodes[0].checked = !anyChecked;
	}
}

// quicksearch map tools

function citySearch(targetForm, submitMode)
{
	if (targetForm.sn.value.length > 1)
	{
		if (submitMode)
		{
			targetForm.submit();
		}
		else
		{
			return true;
		}
	}
	else
	{
		alert(items['minlength']);
		return false;
	}
}

function backClick()
{
	mapImg = document.getElementById("QS_map");
	var hierarchy = mapImg.hierarchyString;
	var url = items['qsdata_url'];
	loadQSXMLBack(url, hierarchy);
}

function mapClick(clickEvent, hierarchy)
{
	posX = ((clickEvent.layerX == undefined) ? clickEvent.x : clickEvent.layerX);
	posY = ((clickEvent.layerY == undefined) ? clickEvent.y : clickEvent.layerY);

	if (hierarchy == undefined)
	{
		hierarchy = 1;
	}

	var url = items['qsdata_url'];
	var pars = [ hierarchy, posX, posY ];

	loadQSXML(url, pars);
}


// qs http communication

function loadQSXMLBack(url, hierarchy)
{
	var pars = "zm=0&cgh=" + hierarchy + "&gpx=0&gpy=0";
	var myAjax = new Ajax.Request( url, 
										{
											method: "get",
											parameters: pars,
											onComplete: processQSXMLResponse
										}
								);
}

function loadQSXML(url, params)
{
	var pars = "zm=1&cgh=" + params[0] + "&gpx=" + params[1] + "&gpy=" + params[2];
	var myAjax = new Ajax.Request( url, 
										{
											method: "get",
											parameters: pars,
											onComplete: processQSXMLResponse
										}
								);
}

function processQSXMLResponse(originalRequest) 
{
	resultText = originalRequest.responseText;

	if ((resultText.length < 0) || (resultText.substring(0, 2) != "++"))
	{
//		alert("error: " + resultText);
	}
	else
	{
		resultText = resultText.substring(2, resultText.length);
		zoomMode = resultText.substring(0, 1);
		resultText = resultText.substring(3, resultText.length);

		resultParts = resultText.split('@@');

	// new img data

		newImgData = resultParts[0].split('||')

		if (zoomMode == '1')
		{

		// geo data

			geoTypes = resultParts[1].split('**');

			for(var i = 0; i < 4; i++)
			{
				geoTypes[i] = geoTypes[i].split('||');
				numOfObjs = (geoTypes[i].length) - 1;

				for(var j = 0; j < numOfObjs; j++)
				{
					geoTypes[i][j] = geoTypes[i][j].split('::');
				}
			}

		// composing html

			contentString = "";

			for(var i = 0; i < 4; i++)
			{
				contentString += '<div class="greenLine"><b>' + items['type_' + i] + '</b></div>';

				numOfObjs = (geoTypes[i].length) - 1;
				firstPart = numOfObjs / 2;

				contentString += '<ul class="geoList">';

				for(j = 0; j < firstPart; j++)
				{
					contentString += '<li><a href="/' + geoTypes[i][j][0] + '">' + geoTypes[i][j][2]  + '</a></li>';
				}

				contentString += '</ul>';

				contentString += '<ul class="geoList">';

				for(;j < numOfObjs; j++)
				{
					contentString += '<li><a href="/' + geoTypes[i][j][0] + '">' + geoTypes[i][j][2] + '</a></li>';
				}

				contentString += '</ul>';

				contentString += '<div style="clear:both;"></div>';
			}

		// displaying

			clickDiv = document.getElementById('qsgeoclick');
			clickDiv.innerHTML = contentString;
			clickDiv.style.display = 'block';
		}
		else
		{
			clickDiv = document.getElementById('qsgeoclick');
			clickDiv.style.display = 'none';
		}

	// switching image

		mapImg = document.getElementById('QS_map');
		mapImg.src = newImgData[0];
		mapImg.width = newImgData[1];
		mapImg.height = newImgData[2];
		mapImg.hierarchyString = newImgData[3];

		backLink = document.getElementById('QS_map_back');

		if (newImgData[3].indexOf('.') > 0)
		{
			backLink.style.display = 'block';
		}
		else
		{
			backLink.style.display = 'none';
		}
	}
}
