﻿//wywołanie kliknięcia po naciśnięciu klawisza Enter
function onEnter(evt,id) {
	var keyCode = null;

	if( evt.which ) {
		keyCode = evt.which;
	} else if( evt.keyCode ) {
		keyCode = evt.keyCode;
	}
	if( 13 == keyCode ) {
		document.getElementById(id).onclick();

		return false;
	}
	return true;
}

//wyszukiwanie obiektów po nazwach tagów
function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

//wyszukiwanie obiektów po klasie
function getElementsByClass(searchClass,node,tag) {
        var classElements = new Array();
        if ( node == null )
                node = document;
        if ( tag == null )
                tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
                if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                }
        }
        return classElements;
}

//czyszczenie checkboxów w IE i FF
function clearCheckboxes(){
	var l = document.getElementById('search_chbxs');
	var inputsArr = getElementsByTagNames('input',l);
	for (var i=0;i<inputsArr.length;i++){
		elem = document.getElementById(inputsArr[i].id);
			elem.checked = false;
	}
}
 
clearCheckboxes();


//dodajemy tymczsową wartstwę - sytuacja gdy kilka ikon w tym samym miejscu i chcemy pokazać właściwą.
function addTempLayer(id){
	removeTempLayer();	
	var tempicons = [];
	for (i=0;i<globalicons.length-1;i++){
		var icon = globalicons[i];
		var iconid = icon.id;
		if (id == iconid){
			var tempicon = new MapgoIcon();
			tempicon.descr = icon.descr;
			tempicon.image = icon.image;
			tempicon.width = icon.width;
			tempicon.height = icon.height;
			tempicon.tip_width = icon.tip_width;
			tempicon.tip_height = icon.tip_height;
			tempicon.icon_offx = icon.icon_offx;
			tempicon.icon_offy = icon.icon_offy;
			tempicon.lon = icon.lon;
			tempicon.lat = icon.lat;
			tempicon.show_tip_state = icon.show_tip_state;
			tempicons.push(tempicon);
			mapobject.addIconsToMap(tempicons,"templayer",false,3,16);
			continue;
		}
	}
}

function removeTempLayer(){
		mapobject.removeLayerByName('templayer');
}

var selectedListElem = "";
var highlightedListElem = "";


//centrowanie na wybranym obiekcie
function zoomToItem(id,x,y) {
	is_search_on=1
	var browser = navigator.appName;
	var list = document.getElementById('nearestlist');
	var items = getElementsByTagNames('div',list);
	
	for (i=0;i<items.length;i++){
		var item = items[i];
		item.style.backgroundColor = "transparent";
		item.style.color = "#20387f";
	}
	
	selectedListElem = id;

	addTempLayer(id);
	
	mapobject.centerMap(x,y,5);
	mapobject.setIconPos(x,y,celownik);
	mapobject.showLayerByName('celownik');
	
}

//zapobiegamy przkazywaniu kliknięć pod ikony funkcji edycyjnych
function stopBubble(e) {
	// If an event object is provided, then this is a non-IE browser
	if ( e && e.stopPropagation ){
		// and therefore it supports the W3C stopPropagation() method
		e.stopPropagation();
		}
	else
		{
		// Otherwise, we need to use the Internet Explorer
		// way of cancelling event bubbling
		window.event.cancelBubble = true;
	}
}



//wysyłanie zapytania o wszystkie obiekty danej kategorii
function sendSelectItems(object_type,search_type,qty,lon,lat,lon2,lat2,callback) {
if(search_type==0){
	var selectItemsObj = {
		"QUERY_TYPE":"IN_MBR",
		"object_type":object_type,
		"minlon":lon,
		"minlat":lat,
		"maxlon":lon2,
		"maxlat":lat2
	}
} else {
	var selectItemsObj = {
		"QUERY_TYPE":"NEAREST",
		"object_type":object_type,
		"qty":qty,
		"lon":lon,
		"lat":lat
	}
}



	var selectItemsString = JSON.stringify(selectItemsObj);
	var query = "data="+selectItemsString;
	var url = "http://apps.mapgo.pl/reba/getData.php";
	mapobject.callToServerUrl(query,"fetch_poi_callback",url);
	//alert(url);
}

//pokaż loadery
function showLoading(){
	var loader = document.getElementById("loader");
	loader.style.display="block";
}

function showPoilistLoading(){
	/*
var loader = document.getElementById("poiloader");
	loader.style.display="block";
*/
}

//ukryj loadery
function hideLoading(){
	var loader = document.getElementById("loader");
	loader.style.display="none";
}

function hidePoilistLoading(){
	/*
var loader = document.getElementById("poiloader");
	loader.style.display="none";
*/
}

//usuwanie zawartości listy POI
function clearList(listdiv){
	var list = document.getElementById(listdiv);
	while (list.firstChild){
		list.removeChild(list.firstChild);
	}
}




//ukrywa celownik na mapie
function hideAimPointer(){
	mapobject.hideLayerByName('celownik');
}

//pokazuje celownik na mapie
function showAimPointer(){
	mapobject.showLayerByName('celownik');
}

//przełącza stany dodatkowych kontrolek mapy
function toggleMapControls(currid){
	var controlbox = document.getElementById('controls');
	var controls = getElementsByTagNames('img',controlbox);
	for (i=0;i<controls.length;i++){
		var rawsource = controls[i].src;
		var state = rawsource.indexOf("_on.");
		controls[i].src = rawsource.replace(/\_on\.gif/gi,".gif");
	}
	var img = document.getElementById(currid);
	var src = img.src;
	img.src = src.replace(/\.gif/gi,"_on.gif");
}


//zmienne i funkcja zapisująca bieżące centum mapy przed Edycją lub Dodaniem obiektu, gdzie zmienia się mapa
var curr_x = 0;
var curr_y = 0;
var curr_s = 0;

function storeCurrCenter(){
	curr_s = mapobject.currscale;
	curr_x = mapobject.curr_center_lon;
	curr_y = mapobject.curr_center_lat;
}



function getMBR(){
	var center_x = mapobject.curr_center_lon;
	var center_y = mapobject.curr_center_lat;

	var center_px = mapobject.convertGeoToScreen(center_x,center_y);
	var ulx = center_px.x-(map_w/2);
	var uly = center_px.y-(map_h/2);
	var brx = center_px.x+(map_w/2);
	var bry = center_px.y+(map_h/2);

	var ulc_geo = mapobject.convertScreenToGeo(ulx,uly);
	var brc_geo = mapobject.convertScreenToGeo(brx,bry);

	minlon = ulc_geo.lon;
	minlat = ulc_geo.lat;
	maxlon = brc_geo.lon;
	maxlat = brc_geo.lat;
}

function closeBox(id){
	document.getElementById(id).style.display = 'none';
}

function zoomIn(){
	mapobject.changeScale(13);
}
