function addEvent(obj, evType, fn){
 if (obj.addEventListener){
  obj.addEventListener(evType, fn, true);
  return true;
 } else if (obj.attachEvent){
  var r = obj.attachEvent("on"+evType, fn);
  return r;
 } else {
  return false;
 }
}

/* 
 * Funkcja wykonuje kod pobrany przez AJAX
 */ 
 
function ajaxeval(url) {
 if(http_request=gethttprequest()) {
   http_request.onreadystatechange = function() {
	  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
     eval(gettextcontent(http_request));
     }
    } 
	 };
   http_request.open('GET', url, true);
   http_request.send(null);
  }
 }   

/*
 * Funkcja wypełnia podany element rezulatatem zapytania URL
 */
 
 function ajaxfill(url,element) {
  var http_request=false;
  if(http_request=gethttprequest()) {
   http_request.onreadystatechange = function() {
	  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
      fill(element,gettextcontent(http_request));
     } else {
      fill(element,"Wystąpił problem z zapytaniem.");
     }
    } else {
     fill(element,"Ładowanie...<br/><img src=\"res/images/loadingbar.gif\" alt=\"Ładowanie...\"/>");
    }
	 };
   http_request.open('GET', url, true);
   http_request.send(null);
  }
 }   

/*
 * Funkcja wypełnia podany element rezulatatem zapytania URL z przesłaniem parametrów GET
 */
 
 function ajaxgetfill(url,element,parameters) {
  var http_request=false;
  if(http_request=gethttprequest()) {
   http_request.onreadystatechange = function() {
	  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
      fill(element,gettextcontent(http_request));
     } else {
      fill(element,"Wystąpił problem z zapytaniem.");
     }
    } else {
     fill(element,"Ładowanie...");
    }
	 };
	 
	 var p='';
   
	 for(i=0;i<parameters.length;i++) {
    p=p + '&' + parameters[i][0] + '=' + encodeURI(parameters[i][1]);
   }
   
   // p=p.substring(1);
   p='?' + p;
   
   http_request.open('GET', url + p, true);
   http_request.send(null);	
  }
 }   

/* 
 * Funkcja wykonuje kod pobrany przez AJAX
 */ 
 
function ajaxposteval(url,parameters) { 
  if(http_request=gethttprequest()) {
   http_request.onreadystatechange = function() {
	  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
      eval(gettextcontent(http_request));
     } 
    } 
	 };
	 
	 var p='';
   
	 for(i=0;i<parameters.length;i++) {
    p=p + '&' + parameters[i][0] + '=' + encodeURI(parameters[i][1]);
   }
   
   p=p.substring(1);
       
   http_request.open('POST', url, true);
   http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   http_request.setRequestHeader("Content-length", p.length);
   http_request.setRequestHeader("Accept-charset", "utf-8");
   http_request.setRequestHeader("Connection", "close");
   http_request.send(p);	
 }   
}

/*
 * Funkcja wypełnia podany element rezulatatem zapytania URL z przesłaniem parametrów POST
 */
 
 function ajaxpostfill(url,element,parameters) {
  if(http_request=gethttprequest()) {
   http_request.onreadystatechange = function() {
	  if (http_request.readyState == 4) {
     if (http_request.status == 200) {
      fill(element,gettextcontent(http_request));
     } else {
      fill(element,"Wystąpił problem z zapytaniem.");
     }
    } else {
     fill(element,"Ładowanie...<br/><img src=\"res/images/loadingbar.gif\" alt=\"Ładowanie...\"/>");
    }
	 };
	 
	 var p='';
   
	 for(i=0;i<parameters.length;i++) {
    p=p + '&' + parameters[i][0] + '=' + encodeURI(parameters[i][1]);
   }
   
   p=p.substring(1);
       
   http_request.open('POST', url, true);
   http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   http_request.setRequestHeader("Content-length", p.length);
   http_request.setRequestHeader("Accept-charset", "utf-8");
   http_request.setRequestHeader("Connection", "close");
   http_request.send(p);	
  }
 }   
/*
 * Funkcja wysyła formularz przy użyciu AJAXu
 */ 

 
 function ajaxsubmitform(url,form,element) {
   var parameters=getformasparameters(form);
   ajaxpostfill(url,element,parameters);
 }

function blockhide(id) {
 document.getElementById(id).style.display="none";
}

function blockshow(id) {
 document.getElementById(id).style.display="block";
}

function blockshowhide(id) {
 if(document.getElementById(id).style.display=="block") {
  blockhide(id);
 } else {
  blockshow(id);
 }
}

/*
 * Funckja wypełnia element o podanym id podanym tekstem
 */ 

function fill(element, text) {
 document.getElementById(element).innerHTML=text;
}
/*
 * TODO:
 * - dodać obsługe pol ratio
 * - poprawić obsługe checkbox
 * - dodac do inputs pola innego typu 
 *     
 */  
 
function getformasparameters(form) {
  var formo=document.getElementById(form);
  var inputs=formo.getElementsByTagName('input');
  
  var parameters=Array();
   
   for(i=0;i<inputs.length;i++) {
     if(inputs[i].type=='checkbox') {
      if(inputs[i].checked) {
       if(inputs[i].name!='') {
        parameters.push(Array(inputs[i].name,'on'));
       } else {
        parameters.push(Array(inputs[i].id,'on'));
       }
      } 
     } else {
      if(inputs[i].name!='') {
       parameters.push(Array(inputs[i].name,inputs[i].value));
      } else {
       parameters.push(Array(inputs[i].id,inputs[i].value));
      }
     }
   }
    // alert(inputs[i] + ' ' + inputs[i].name + ' ' + inputs[i].type + ' ' + inputs[i].value + '<br/>\n');
   
   textareas=formo.getElementsByTagName('textarea');
   for(i=0;i<textareas.length;i++) {
     if(textareas[i].name!='') {
      parameters.push(Array(textareas[i].name,textareas[i].value));     
     } else {
      parameters.push(Array(textareas[i].id,textareas[i].value));
     }
   }
   
   selects=formo.getElementsByTagName('select');
   for(i=0;i<selects.length;i++) {
     if(selects[i].name!='') {
      parameters.push(Array(selects[i].name,selects[i].value));     
     } else {
      parameters.push(Array(selects[i].id,selects[i].value));
     }
   }
  
  for(i=0;i<parameters.length;i++) {
   //parameters[i]=new String(parameters[i]);
   parameters[i][1]=parameters[i][1].replace(/&/g,'%26');
  }
  
  return parameters; 
}

/*
 * Funkcja zwraca obiekt http_request dostosowany do przegladarki
 */ 
 
 function gethttprequest() {
  var http_request = false;

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

  if (!http_request) {
   return false;
  }
  
  return http_request;
 }
/*
 * Funkcja wydobywa z http_request zawartość tekstową
 */ 
 
 function gettextcontent(http_request) {
  
  var text=http_request.responseText;
  text=replace('<ajax><![CDATA[','',text);
  text=replace(']]></ajax>','',text);
  return text;
 }
/*
 * Funkcja wydobywa z http_request zawartość tekstową
 */ 
 
 function gettextfromxml(xmldoc,tag) {
  var content=xmldoc.getElementsByTagName('ajax').item(0);
 
  if(content.textContent) {
   return(content.textContent);
  } else {
   return(content.firstChild.text);
  }
 }

function hide(id) {
 document.getElementById(id).style.visibility="hidden";
 document.getElementById(id).style.height=0;
}
function replace(text,by,string) {
    var strLength = string.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return string;

    var i = string.indexOf(text);
    if ((!i) && (text != string.substring(0,txtLength))) return string;
    if (i == -1) return string;

    var newstr = string.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(text,by,string.substring(i+txtLength,strLength));

    return newstr;
}

function show(id) {
 document.getElementById(id).style.visibility="visible";
 document.getElementById(id).style.height="auto";
}

function showhide(id) {
 if(document.getElementById(id).style.visibility=="visible") {
  hide(id);
 } else {
  show(id);
 }
}

function clearmap() {
  map.clearOverlays();
  markers=Array();
}
 function gopoint(lat,lng) {
  map.panTo(new GLatLng(lat,lng));
 }
 function onmove(map) {
  var bounds= map.getBounds();
  var southWest=bounds.getSouthWest();
  var northEast=bounds.getNorthEast();
  
    
  document.getElementById("south").value=southWest.lat();
  document.getElementById("west").value=southWest.lng();
  document.getElementById("north").value=northEast.lat();
  document.getElementById("east").value=northEast.lng();
     
  ajaxposteval('ajax.php?m=points',getformasparameters('mapfilters'));
 }
