Hi Folk
Can you please have a look at http://www.friars.co.nz/map.php and let
me know if the map is working on IE6 (just do a simple search).
Unfortunately, I do not have IE6 anymore and so I can not test it.
I think there maybe some trouble with retrieving the AJAX xml. Below
is the code for this:
var i = new Array();
var j = 0;
var jmax = 4;
var http_request = false;
Thanks a million
Nicolaas
//------------------------------------ Main functions
//main function to chang the map
function changemap() {
var variables = getformparamete rs(document.get ElementById('ma pform'),
'')+ "&h=1&k=1&l=1&m =1";
var onready = "updatemap" ;
UpdateHtml('_GS map.php', 'GSmaptype=8' + variables, onready);
//initMapGSmap();
createGSlayer(' GSmaptype=1' + variables);
//reset
j = 0;
i = new Array();
return true;
}
// run a search (prior to updating the map)
function getsearchdata() {
var variables = getformparamete rs(document.get ElementById('se a'), '');
variables = variables + "&map=1";
var el = document.getEle mentById('c2');
el.checked = true;
var el = document.getEle mentById('syes' );
el.checked = true;
var onready = "updatesearchre sults";
var url = "searcher.p hp";
UpdateHtml(url, variables, onready);
return true;
}
//------------------------------------ FORM interaction
//gets all variables from a form
function getformparamete rs(obj, getstr) {
j++;
for (i[j]=0; i[j] < obj.childNodes. length; i[j]++) {
var newobj = obj.childNodes[i[j]];
tgname = newobj.tagName
if(tgname) {
tgname.toLowerC ase;
if (tgname == "INPUT") {
var tvalue = newobj.value;
if(tvalue != 0 && tvalue != "") {
var ttype = newobj.type;
var tname = newobj.name;
if (ttype == "text") {
getstr += "&" + tname + "=" + tvalue ;
}
if (ttype == "checkbox") {
if (newobj.checked ) {
getstr += "&" + tname + "=" + tvalue;
}
else {
getstr += "&" + tname + "=0";
}
}
if (ttype == "radio") {
if (newobj.checked ) {
getstr += "&" + tname + "=" + tvalue;
}
}
}
}
if (tgname == "SELECT") {
var sel = newobj;
var tvalue = sel.options[sel.selectedInd ex].value;
if(tvalue != 0 && tvalue != "") {
getstr += "&" + sel.name + "=" + tvalue;
}
}
}
if(newobj.child Nodes.length 0 && j < jmax) {
getstr = getformparamete rs(newobj, getstr);
}
}
j--;
return getstr;
}
//------------------------------------ AJAX STARTER
//open xml sheet on the server and specify the function to run when the
xml is loaded
function UpdateHtml(url, parameters, onready) {
http_request = false;
if (window.XMLHttp Request) { // Mozilla, Safari,...
http_request = new XMLHttpRequest( );
if (http_request.o verrideMimeType ) {
// set type accordingly to anticipated content type
http_request.ov errideMimeType( 'text/xml');
//http_request.ov errideMimeType( 'text/html');
}
}
else if (window.ActiveX Object) { // IE
try {
http_request = new ActiveXObject(" Msxml2.XMLHTTP" );
}
catch (e) {
try {
http_request = new ActiveXObject(" Microsoft.XMLHT TP");
}
catch (e) {
alert('could not load data');
}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
if(onready == "updatemap" ) {
http_request.on readystatechang e = updatemap;
}
else {
http_request.on readystatechang e = updatesearchres ults;
}
var geturl = url + '?' + parameters;
document.getEle mentById(idname + 'title').innerH TML = "loading new map
.... "; //+ geturl;
http_request.op en('GET', geturl, true);
http_request.as ync = false;
http_request.se nd(null);
}
// -------------- process XML ----------------------------
//process map data
function updatemap() {
if (http_request.r eadyState == 4) {
if (http_request.s tatus == 200) {
//alert(http_requ est.responseTex t);
var xmlDoc = http_request.re sponseXML;
var titlearray = xmlDoc.getEleme ntsByTagName('t itle');
var infoarray = xmlDoc.getEleme ntsByTagName('i nfo');
var zoomarray = xmlDoc.getEleme ntsByTagName('z oom');
var longitudearray = xmlDoc.getEleme ntsByTagName('l ongitude');
var lattitudearray = xmlDoc.getEleme ntsByTagName('l attitude');
var info = serializeNode(i nfoarray[0]);
var a = lattitudearray[0].firstChild.nod eValue;
var o = longitudearray[0].firstChild.nod eValue;
var z = zoomarray[0].firstChild.nod eValue;
if(document.get ElementById(idn ame + 'title')) {
document.getEle mentById(idname + 'title').innerH TML =
titlearray[0].firstChild.nod eValue;
}
if (document.getEl ementById(idnam e + 'info') && 1 == 2) {
document.getEle mentById(idname + 'info').innerHT ML = info;
}
if(document.get ElementById('ou terinfo')) {
document.getEle mentById('outer info').innerHTM L = '' + info + '';
}
GSrezoom(o,a,z) ;
}
else {
alert('There was a problem with the request.');
}
}
else {
}
}
//process search results
function updatesearchres ults() {
if (http_request.r eadyState == 4) {
if (http_request.s tatus == 200) {
var xmlDoc = http_request.re sponseXML;
var humansqlarray = xmlDoc.getEleme ntsByTagName('h umansql');
var humansql = serializeNode(h umansqlarray[0]);
document.getEle mentById('human sql').innerHTML = humansql;
changemap();
}
else {
alert('There was a problem with the request.');
}
}
}
// -------------- XML details ----------------------------
//retrieve data from XML sheet
function serializeNode(n ode) {
if(node != undefined) {
var xml = "";
if(_browser.isS afari) {
xml = xmlText(node);
}
else if(_browser.isI E) {
xml = node.xml;
}
else {
var serializer = new XMLSerializer() ;
xml = serializer.seri alizeToString(n ode);
}
return xml;
}
else {
return undefined;
}
}
var DOM_ELEMENT_NOD E = 1;
var DOM_TEXT_NODE = 3;
/**
* Returns the representation of a node as XML text.
*/
function xmlText(node) {
var ret = '';
if (node.nodeType == DOM_TEXT_NODE) {
ret += node.nodeValue;
}
else if (node.nodeType == DOM_ELEMENT_NOD E) {
ret += '<' + node.nodeName;
for (var i = 0; i < node.attributes .length; ++i) {
var a = node.attributes[i];
if (a && a.nodeName && a.nodeValue) {
ret += ' ' + a.nodeName;
ret += '="' + a.nodeValue + '"';
}
}
if (node.childNode s.length == 0) {
ret += '/>';
}
else {
ret += '>';
for (var i = 0; i < node.childNodes .length; ++i) {
ret += arguments.calle e(node.childNod es[i]);
}
ret += '</' + node.nodeName + '>';
}
}
return ret;
}