
/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 



 function getData( myNode, myNodeName )
{
    var subNodes = myNode.childNodes;

    for ( j=0; j < subNodes.length; j++ )
    {
        var subNode = subNodes.item(j);

        if ( subNode.nodeName == myNodeName )
        {
            // this is cross browser ( ie and firefox ) compatible
			//alert(subNode.childNodes.item(0).nodeValue);
            return subNode.childNodes.item(0).nodeValue;
        }
    }
    return "";
}



function outputSuppliersHtml(supps){

	var html = '<hr />';
	
	for ( i=0; i < supps.length; i++ )
    {
	
		html += '<p><b>'+supps[i][0]+'</b><br />'+supps[i][1]+'<br /><b>approx: '+ supps[i][4]+' Miles</b></p><hr />';
	
	
	}
	
	document.getElementById("suppliers").innerHTML = html;
}

function showResults(){
	
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete"){ 
		
		document.getElementById("results").innerHTML = xmlhttp.responseText;
	}
	
}


function processXmlResponse( response )
{
    nodes = response.getElementsByTagName('item'); // returns only nodes that are item nodes.
                                                   // this removes the response and xml nodes
	var supps = new Array(nodes.length);

    for ( i=0; i < nodes.length; i++ )
    {
        var node = nodes.item(i);
		 
					
		supps[0] = getData( node, 'long' );
		supps[1] = getData( node, 'lat' );
		supps[2] = getData( node, 'zoom' );
		
    }

	
	centerMap(supps);
	updateResults();
		showNetworkReg();
}

function processXmlResponseSetUp( response )
{
    nodes = response.getElementsByTagName('item'); // returns only nodes that are item nodes.
                                                   // this removes the response and xml nodes
	var supps = new Array(nodes.length);

    for ( i=0; i < nodes.length; i++ )
    {
        var node = nodes.item(i);
		 
					
		supps[0] = getData( node, 'long' );
		supps[1] = getData( node, 'lat' );
		supps[2] = getData( node, 'zoom' );
		
    }

	
	centerMap(supps);
	updateResults();
	showNetwork();
}

function processNetworkXmlResponse( response )
{
    nodes = response.getElementsByTagName('item'); // returns only nodes that are item nodes.
                                                   // this removes the response and xml nodes
	var supps = new Array(nodes.length);

    for ( i=0; i < nodes.length; i++ )
    {
        var node = nodes.item(i);
		
		supps[i] = Array(8); 
					
		supps[i][0] = getData( node, 'name' );
		supps[i][1] = getData( node, 'town' );
		supps[i][2] = getData( node, 'postcode' );
		supps[i][3] = getData( node, 'url' );
		supps[i][4] = getData( node, 'long' );
		supps[i][5] = getData( node, 'lat' );
		supps[i][6] = getData( node, 'icon' );
		supps[i][7] = getData( node, 'networkName');
		

    }


	outputPins(supps);

	updateResults();

}




function updateResults(){
	
		var region = document.getElementById('region').value;
		var network = document.getElementById('network').value;
		
		var url = "ajax/update_results.php?region=" + region + "&network=" + network;
		
		run_ajax(showResults,url);
}


function convertPost(){
	
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete"){ 
	
		window.location="http://www.foodanddrinknsacademy.co.uk/providers.php";
	
	}
	
}


function setMapToRegion(){
	
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete"){ 
		
		processXmlResponse( xmlhttp.responseXML );
		
		//document.getElementById("suppliers").innerHTML = xmlhttp.responseText;
	}
	
}

function setMapToRegionSetUp(){
	
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete"){ 
		
		processXmlResponseSetUp( xmlhttp.responseXML );
		
		//document.getElementById("suppliers").innerHTML = xmlhttp.responseText;
	}

}

function outputNetworks(){
	
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete"){ 
		
		processNetworkXmlResponse( xmlhttp.responseXML );
		
	}
	
	
}

//
// Main Ajax Function
//
function run_ajax(state_changed_function,url)
{
	xmlhttp = null
	// code for Mozilla, opera, netscape etc.
	if (window.XMLHttpRequest){
		xmlhttp = new XMLHttpRequest()
	 }
	// code for IE
	else if (window.ActiveXObject){
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
	 }
	if (xmlhttp != null){
		xmlhttp.onreadystatechange=state_changed_function
		xmlhttp.open("GET",url,true)
		xmlhttp.send(null)
	 }
	else{
		alert("Your browser does not support Ajax.")
	 }
}

