var isLoadingOn = false;
var search_by = 1;
var search_nr = null;
var search_nr_special = null;
var active_layers;

var preload_aImg;
var preload_ip;

var map_width = 0;
var map_height = 0;
var mapSX = 0;
var mapSY = 0;
var mapEX = 0;
var mapEY = 0;

var data_minx = 0;
var data_miny = 0;
var data_maxx = 0;
var data_maxy = 0;

var data_x = 0;
var data_y = 0;

var fe_data_minx = 0;
var fe_data_miny = 0;
var fe_data_maxx = 0;
var fe_data_maxy = 0;
var fe_data_scale = 0;

var bm_data_minx = 0;
var bm_data_miny = 0;
var bm_data_maxx = 0;
var bm_data_maxy = 0;
var bm_data_x = 0;
var bm_data_y = 0;

var beginrecord = 1;

var hist = new Array();
var hist_current = 0;
var hist_index = 0;
var hist_max = 0;

function untag(inputString) {
	var outString = inputString.replace(/</g,"&lt;");
	outString = outString.replace(/>/g, "&gt;");
	return outString;
}

function trim(str) {
	return str.replace(/^\s*|\s*$/g,"");
}

function getDataResponse() {
	if (http.readyState == 4) {
		// ...
        //alert(http.responseText);
            //getDataParse(http.responseText);
        //alert(http.responseText);
		//document.getElementById('debug').innerHTML = untag(http.responseText); // oollee leet debug stuff (alert)
		getDataParse(http.responseXML);
	}
}

function histGetData(url) {
   	loadingOn();

   	http.open("GET", url, true);
	http.onreadystatechange = getDataResponse;
	http.send(null);
}

function getData(type) {
	if(type=='image'){
    	var url = '/core.php?getimage&minx='+data_minx+'&miny='+data_miny+'&maxx='+data_maxx+'&maxy='+data_maxy+'&width='+map_width+'&height='+map_height;
    } else if(type=='search'){
    	var url = '/core.php?search&search_by='+search_by+'&number='+search_nr+'&width='+map_width+'&height='+map_height+'&beginrecord='+beginrecord;
    } else if(type=='search_image'){
    	var url = '/core.php?search&search_by='+search_by+'&number='+search_nr_special+'&width='+map_width+'&height='+map_height+'&nometa';
    } else if(type=='info'){
    	var url = '/core.php?info&x='+data_x+'&y='+data_y+'&width='+map_width+'&height='+map_height;
    } 

	if(type=='image' || (type=='search' && (search_by == 1 || search_by == 2)) || type=='search_image'){
    	hist[hist_index] = url;
		hist_current = hist_index;
		hist_max = hist_index;
        hist_index++;
    } 
    
    //alert(url);
   	loadingOn();
   	//alert(http);
	http.open("GET", url, true);
	http.onreadystatechange = getDataResponse;
	http.send(null);
}

function sendReport () {
   	loadingOn('Loading..');
   	var url = '/core.php?report&x='+data_x+'&y='+data_y+'&minx='+data_minx+'&miny='+data_miny+'&maxx='+data_maxx+'&maxy='+data_maxy;
   	r_name = document.getElementById('report_name').value;
   	r_phone = document.getElementById('report_phone').value;   	
   	r_text = document.getElementById('report_text').value;   	   	
   	var contents = 'name='+r_name+'&phone='+r_phone+'&text='+r_text;
	http.open("POST", url, true);
	http.onreadystatechange = getDataResponse;
	http.send(contents);
	document.getElementById('report').style.display = 'none';
	alert(contents);
	loadingOff();	
	isReportOn = false;
}

function getHTTPObject() {
  var xmlhttp;
	if(window.XMLHttpRequest) {
		xmlhttp = new XMLHttpRequest();

		if (xmlhttp.overrideMimeType) {
			//xmlhttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) { }
		}
	}

	if (!xmlhttp) {
	    return false;
	}

	return xmlhttp;
}
var http = getHTTPObject();
var http_preload = getHTTPObject();

function getDataParse (xml_object) {
   //loadingOff();
	//alert(xml_object);
	//xml_object = (new DOMParser()).parseFromString(xmlstring, "text/xml");
	if(xml_object==null) {
		//alert;
	}

	var ims = xml_object.getElementsByTagName('ims')[0];
	if(ims!=null) {

		var error = ims.getElementsByTagName('error')[0];
        if(error!=null){
	        loadingOff();
	        closeBMB();
            showError(error.getAttribute('description'));
        }else if(document.getElementById('errbox').style.display=='block'){
            document.getElementById('errbox').style.display = 'none';
        }

		// show image
		var bilde = ims.getElementsByTagName('bilde')[0];
		if(bilde!=null) {
		    data_minx = parseFloat(bilde.getAttribute('minx'));
		    data_miny = parseFloat(bilde.getAttribute('miny'));
		    data_maxx = parseFloat(bilde.getAttribute('maxx'));
		    data_maxy = parseFloat(bilde.getAttribute('maxy'));
		    data_url = bilde.firstChild.nodeValue;
            preimgurl = data_url;

            if(fe_data_scale == 0){
            	fe_data_scale = getMapScale();
            	fe_data_minx = data_minx;
            	fe_data_miny = data_miny;
				fe_data_maxx = data_maxx;
				fe_data_maxy = data_maxy;
				
				if(bm_data_minx > 0) {
					data_minx = bm_data_minx;
					data_miny = bm_data_miny;
					data_maxx = bm_data_maxx;
					data_maxy = bm_data_maxy;

					if(bm_data_comment != '') {
						document.getElementById('tabc_results_table').innerHTML = '<div id="result_found"><span></span>'+bm_data_comment+'</div>';
					}
					
					getData('image');
					return;
				}
            }

            preload();
            toolStates();
            
//		    document.getElementById('tabc_main_map').style.background = 'url('+data_url+') no-repeat';
		}

        // show info
        var info = ims.getElementsByTagName('info')[0];
        if(info!=null){
		   loadingOff();
           var layers = info.getElementsByTagName('layer');
           // layers
           if(layers!=null && layers.length != 0){
                document.getElementById('info_box').innerHTML = '';
                var html = '';
                var tabs = '';
                active_layers = new Array();
                for(var i = 0; i < layers.length; i++){
                    var layer_name = layers[i].getAttribute('name');
                    var layer_id   = layers[i].getAttribute('id');
                    var fields     = layers[i].getElementsByTagName('field');

                    tabs += '<a href="#" id="info_tab_'+layer_id+'" onClick="switchInfoTab('+layer_id+'); return false;"';
                    c = active_layers.length;
                    if(i == 0){
                        tabs += ' class="sel"';
                        active_layers[c] = new Array(layer_id, true);
                    }else{
                        active_layers[c] = new Array(layer_id, false);
                    }
                    tabs += '>'+layer_name+'</a> ';
                    html += '<div class="info_tabc';
                    if(i != 0){
                        html += ' h';
                    }
                    html += '" id="info_tabc_'+layer_id+'">';
                    //info_item = document.getElementById('info_tab_'+layer_id);
                    if(fields!=null){
                    	html += '<table width="100%" cellspacing="0">';                    	
                        for(var j = 0; j < fields.length; j++){
                           var field_name  = fields[j].getAttribute('name');
                           var field_abbr  = fields[j].getAttribute('abbr');
                           var field_value = fields[j].firstChild.nodeValue;

                           html += '<tr>';
                           if(field_abbr!=null)
	                           html += '<td width="30%" class="l"><abbr title="'+field_abbr+'">'+field_name+'</abbr></td>';
	                       else
	                           html += '<td width="30%" class="l">'+field_name+'</td>';
                           html += '<td width="70%">'+field_value+'</td>';
                           html += '</tr>';
                        }
                        html += '</table>';
                        //info_item.innerHTML += html;
                    }
                    html += '</div>';
                }
                document.getElementById('info_box').innerHTML = '<div id="info_box_h"><h1 onMouseDown="infoDragStart();" onMouseUp="infoDragEnd();">Info</h1> <a href="#" onclick="closeInfo(); return false;">X</a><div class="clear"></div></div><div id="info_tabs">'+tabs+'<div class="clear"></div></div>'+html;
                document.getElementById('info_box').style.display = 'block';
				make_abbr('info_box');
           }else{
                document.getElementById('info_box').innerHTML = '<div id="info_box_h"><h1 onMouseDown="infoDragStart();" onMouseUp="infoDragEnd();">Info</h1> <a href="#" onclick="closeInfo(); return false;">X</a><div class="clear"></div></div><div id="result_not_found"><span></span>Nekas netika atrasts!</div>';
                document.getElementById('info_box').style.display = 'block';
           }
        }

		// show bookmark url
		var bookmark = ims.getElementsByTagName('bookmark')[0];
		if(bookmark!=null) {
			bookmarkResponse(bookmark.firstChild.nodeValue);
		}   
		
		// feedback recieved
		var feedback = ims.getElementsByTagName('feedback')[0];
		if(feedback!=null) {
			feedbackResponse();
		}   

		// change date recieved
		var ch_date = ims.getElementsByTagName('changedate')[0];
		if(ch_date!=null) {
			document.getElementById('change_date').innerHTML = ch_date.firstChild.nodeValue;
		}   
		
		// show search results
		var results = ims.getElementsByTagName('results')[0];
		if(results!=null) {
	        loadingOff();
			var id = parseInt(results.getAttribute('id'));
			var count = parseInt(results.getAttribute('count'));
			var hasmore = results.getAttribute('hasmore');
			var limit = parseInt(results.getAttribute('limit'));			
			
			var results_output = '';
			if(count==0) {
				if(id==1) {
					results_output = '<div id="result_not_found"><span></span>Lauku bloks ar numuru <strong>'+search_nr+'</strong> netika atrasts!</div>';
				}
				else if(id==2) {
					results_output = '<div id="result_not_found"><span></span>Kadastrs ar numuru <strong>'+search_nr+'</strong> netika atrasts!</div>';
				}
				else if(id==3) {
					results_output = '<div id="result_not_found"><span></span>Nekas netika atrasts!</div>';
				}
				else {
					results_output = '<div id="result_not_found"><span></span>Nekas netika atrasts</div>';
				}
			}
			else {
			
				document.getElementById('tabc_results_paging').innerHTML = '';
			
				//var number = result.getAttribute('number');
				var number = 2;

				if(id==1) {
					results_output = '<div id="result_found"><span></span>Atrasts lauku bloks ar numuru <br /><strong>'+search_nr+'</strong></div>';
				}
				else if(id==2) {
					results_output = '<div id="result_found"><span></span>Atrasts kadastrs ar numuru <br /><strong>'+search_nr+'</strong></div>';
				}
				else if(id==3) {
					//results_output = "Atradu: "+number;
					results_output = '<table class="results_table" cellspacing="0">';
					for(var j=0; j < count; j++){
						var result = results.getElementsByTagName('result')[j];
						var number = parseInt(result.getAttribute('kods'));
						result_parts = result.firstChild.nodeValue.split(', ');
						for(k=0; k < result_parts.length; k++){
							if(k==0){
								result_text = '<a href="#" onclick="search_nr_special = '+number+'; getData(\'search_image\'); return false;">'+result_parts[k]+',</a><br/><small><a href="#" onclick="search_nr_special = '+number+'; getData(\'search_image\'); return false;">';
							}else if(k == result_parts.length-1){
								result_text += result_parts[k] + '</a></small>';								
							}else{
								result_text += result_parts[k] + ', ';
							}

						}
			
						results_output += '<tr><td width="20">&mdash;</td><td colspan="2">'+result_text+'</td></tr>';
					}
					if(hasmore == 'true' || beginrecord > 1){
						paging_output = '<table width="100%" cellspacing="0"><tr><th width="20">';
						if(beginrecord > 1){
							var b = beginrecord - limit;							
							paging_output += '<a href="#" onclick="beginrecord = '+b+'; getData(\'search\'); return false;" id="results_prev"><span>&laquo;&laquo;</span></a>';
						}else{
							paging_output += '<strong id="results_prev_dis"><span>&laquo;&laquo;</span></strong>';
						}
						paging_output += '</th><th>&nbsp;</th><th width="20">';
						if(hasmore == 'true'){
							var b = beginrecord + limit;
							paging_output += '<a href="#" onclick="beginrecord = '+b+'; getData(\'search\'); return false;" id="results_next"><span>&raquo;&raquo;</span></a>';
						}else{
							paging_output += '<strong id="results_next_dis"><span>&raquo;&raquo;</span></strong>';							
						}
						paging_output += '</th></tr></table>';
						document.getElementById('tabc_results_paging').innerHTML = paging_output;
						document.getElementById('tabc_results_paging').style.display = 'block';
					}
					results_output += '</table>';
				}
				else {
					results_output = "Atradu: "+number;
				}
			}

			document.getElementById('tabc_results_table').style.height = (parseInt(document.getElementById('tabc_results').style.height) - 20) + 'px';
	
			document.getElementById('tabc_results_table').innerHTML = results_output;
		}
	}
}
