var identifyArray = new Array();

var NO_ZOOM_BOTTONS = 0;
var ENTER_CODE = 13;
var TAB_CODE = 8;
var PAR_TOP = 0;
var PAR_LEFT = 0;
var PAR_HEIGHT = 0;
var PAR_WIDTH = 0;
var PAR_SELECT = "";
var PAR_IDEN_TITLE = "";
var REGION = 0;
var EMPTY_MAP = 2;


var current_wMode = 'pan';
var segments = new Array();

var xmlHttp;
		var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0; 
		var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0; 
		var is_opera = ((navigator.userAgent.indexOf("Opera 6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0; 
		//netscape, safari, mozilla behave the same??? 
		var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0; 
		var newX;
		var newY;
		
function doInit( nb, top, left, height, width, selectCaption, idfTitle, reg){
    NO_ZOOM_BOTTONS = nb;
    PAR_TOP = top;
    PAR_LEFT = left;
    PAR_HEIGHT = height;
    PAR_WIDTH = width;
    PAR_SELECT = selectCaption;	
    PAR_IDEN_TITLE = idfTitle;
    REGION = reg;

    document.getElementById("wMode").value = 'pan';
    
    if (is_ie) TAB_CODE = 8;
    else TAB_CODE = 9;
    
}

function keyPressed(event){
	var ck = event.keyCode;
	if (ck != ENTER_CODE && ck != TAB_CODE)
	{
		startText = "";
		//alert("mod");
	};
}
		
function scriptSlider()
{
	document.write('<div style="margin-bottom:10px;">');
	trackH =	150;
	trackW =	50;
	trackCol =	'#ffffff'; //colour of track
	trackThick =	0;         //thickness of track border
	trackBorderCol =	'#ffffff'; //colour of track border
	runThick =	2;         //thickness of runner (in the middle of the track)
	runCol =	'#000000'; //colour of runner
	btnH =	10;         //height of button
	btnW =	20;        //width of button
	btnCol =	'#999999'; //colour of button
	btnThick =	1;        //thickness of button border (shaded to give 3D effect)
	btnTxt =	'';        //text of button (if any)
	dir	 =false;     //direction of travel (true = horizontal, false = vertical)
	moveMeth =	'setAlpha'; //the name of the function to execute as the slider moves
	stopMeth =	null;           //the name of the function to execute when the slider stops
	defined =	false;

	if( document.layers ) 
	{
		document.write(
			'<ilayer left="0" top="0" height="'+(trackH+(2*trackThick))+'" width="'+(trackW+(2*trackThick))+'" bgcolor="'+trackBorderCol+'">'+
			'<ilayer left="'+trackThick+'" top="'+trackThick+'" height="'+trackH+'" width="'+trackW+'" bgcolor="'+trackCol+'">'+
			'<layer left="'+(Math.floor((trackW-runThick)/2))+'" top="'+(0)+'" height="'+(dir?runThick:trackH)+'" width="'+(runThick)+'" bgcolor="'+runCol+'"><\/layer>'+
			'<layer left="'+(dir?0:Math.floor((trackW-(btnW+(2*btnThick)))/2))+'" top="'+(0)+'" height="'+(btnH+(2*btnThick))+'" width="'+(btnW+(2*btnThick))+'" bgcolor="#000000" onmouseover="this.captureEvents(Event.MOUSEDOWN);this.maxLength='+((trackH)-((btnH)+(2*btnThick)))+';this.moveFunc='+moveMeth+';this.stopFunc='+stopMeth+';this.onmousedown=slideIsDown;" name="MWJ_slider_controls0">'+
			'<layer left="0" top="0" height="'+(btnH+btnThick)+'" width="'+(btnW+btnThick)+'" bgcolor="#ffffff"><\/layer>'+
			'<layer left="'+btnThick+'" top="'+btnThick+'" height="'+btnH+'" width="'+btnW+'" bgcolor="'+btnCol+'">'+
			btnTxt+'<\/layer><\/layer><\/ilayer><\/ilayer>'
		)
	} 
	else 
	{
		document.write(
			'<div style="position:relative;left:0px;top:0px;height:'+(trackH+(2*trackThick))+'px;width:'+(trackW+(2*trackThick))+'px;background-color:'+trackBorderCol+';font-size:0px;">'+
			'<div style="position:relative;left:'+trackThick+'px;top:'+trackThick+'px;height:'+trackH+'px;width:'+trackW+'px;background-color:'+trackCol+';font-size:0px;">'+
			'<div style="position:absolute;left:'+(dir?0:Math.floor((trackW-runThick)/2))+'px;top:'+(0)+'px;height:'+(trackH)+'px;width:'+(runThick)+'px;background-color:'+runCol+';font-size:0px;"><\/div>'+
			'<div style="position:absolute;left:'+(Math.floor((trackW-(btnW+(2*btnThick)))/2))+'px;top:'+(0)+'px;height:'+(btnH+(2*btnThick))+'px;width:'+(btnW+(2*btnThick))+'px;font-size:0px;" ondragstart="return false;" onselectstart="return false;" onmouseover="this.maxLength='+((trackH)-((btnH)+(2*btnThick)))+';this.moveFunc='+moveMeth+';this.stopFunc='+stopMeth+';this.onmousedown=slideIsDown;" id="MWJ_slider_controls0">'+
			'<div style="border-top:'+btnThick+'px solid #ffffff;border-left:'+btnThick+'px solid #ffffff;border-right:'+btnThick+'px solid #000000;border-bottom:'+btnThick+'px solid #000000;">'+
			'<div style="height:'+btnH+'px;width:'+btnW+'px;font-size:0px;background-color:'+btnCol+';cursor:'+(defined?'pointer;cursor:hand':'default')+';">'+
			'<span style="width:100%;text-align:center;">'+btnTxt+'<\/span><\/div><\/div><\/div><\/div><\/div>'
		);
	}
}
		
		
function GetXmlHttpObject(handler) { 
	var objXmlHttp = null;    //Holds the local xmlHTTP object instance 

	//Depending on the browser, try to create the xmlHttp object 
	if (is_ie){ 
		//The object to create depends on version of IE 
		//If it isn't ie5, then default to the Msxml2.XMLHTTP object 
		var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; 
	        
		//Attempt to create the object 
		try{ 
			objXmlHttp = new ActiveXObject(strObjName); 
			objXmlHttp.onreadystatechange = handler; 
		} 
		catch(e){ 
		//Object creation errored 
			alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled'); 
			return; 
		} 
	} 
	else if (is_opera){ 
		//Opera has some issues with xmlHttp object functionality 
		alert('Opera detected. The page may not behave as expected.'); 
		return; 
	} 
	else{ 
		// Mozilla | Netscape | Safari 
		objXmlHttp = new XMLHttpRequest(); 
		objXmlHttp.onload = handler; 
		objXmlHttp.onerror = handler; 
	} 
	    
	//Return the instantiated object 
	return objXmlHttp; 
} 
		

function doPrint()
{   
    window.open('print.aspx?dist=' + dist ,'');
    document.getElementById("wMode").value = current_wMode;
};		
		

function printRouteResults()
{
    var strUrl = "printRouteResult.aspx?type=";
    strUrl += document.getElementById('printType').value;
    window.open(strUrl + '&dist=' + dist,'');
    document.getElementById("wMode").value = current_wMode;

};


function createDragableLayer(layerId, layerContent,opacity,layerBG) {
	document.write( '<div id='+layerId+' style="filter:progid:DXImageTransform.Microsoft.alpha(opacity='+opacity+');-moz-opacity:'+ opacity/100+';position:absolute;'+
	'left:0px;top:0px;z-index:'+layerBG+';"'
	+'" onmouseover="this.onmousedown=dragIsDown;" ondragstart="return false;" onselectstart="return false;">'+layerContent+'</div>' );
}

function createDragableLayerText(layerId, layerContent,opacity,layerBG)
{
	var text = "<div id="+layerId+" style='filter:progid:DXImageTransform.Microsoft.alpha(opacity="+opacity+");-moz-opacity:"+ opacity/100+";"+
	"position:absolute;left:0px;top:0px;z-index:"+layerBG+"'"+
	" onmouseover='this.onmousedown=dragIsDown;' ondragstart='return false;' onselectstart='return false;'>"+layerContent+"</div>"
	return text;
}

/******************************************************************************/
/*		set the opacity of the 3 images according with the position of the knob               */
/******************************************************************************/
function setAlpha()
{
	var mapOpacity = Math.round( 100-200 * dist );    // [ 100  , - 100]
	var hybridOpacity = Math.round( 200-200 * dist ); // [ 200 , 0 ] 
	var aerialOpacity = Math.round( 200 * dist );		// [ 0 , 200 ]
	
	/*  test if the browser is Mozilla  -- valid  opacity range [ 0 , 1 ]*/
	if (navigator.appName.indexOf("Netscape")!=-1 && parseInt(navigator.appVersion)>=5 )
	{
	    document.getElementById('divMapImg').style.MozOpacity = mapOpacity / 100;
		document.getElementById('divHybridImg').style.MozOpacity = hybridOpacity / 100;
		document.getElementById('divAerialImg').style.MozOpacity = aerialOpacity / 100;
	}
	/* test if the browser is Internet Explorer --  valid opacity range [ 0 , 100 ] */
 else if (navigator.appName.indexOf("Microsoft")!= -1 && parseInt(navigator.appVersion)>=4 )
 {
    document.getElementById('divMapImg').style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity="+mapOpacity+")";
	document.getElementById('divHybridImg').style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity="+hybridOpacity+")";
	document.getElementById('divAerialImg').style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity="+aerialOpacity+")";
 }
 else if (navigator.appName.indexOf("Opera")!= -1 && parseInt(navigator.appVersion)>=7 ){
	document.getElementById('divMapImg').style.opacity = mapOpacity / 100;
		document.getElementById('divHybridImg').style.opacity = hybridOpacity / 100;
		document.getElementById('divAerialImg').style.opacity = aerialOpacity / 100;
 }
	
	
}


function dragMousePos(e) {
	//get the position of the mouse
	if( !e ) { e = window.event; } 
	if( !e || ( typeof( e.pageX ) != 'number' && typeof( e.clientX ) != 'number' ) ) { return [0,0]; }
	if( typeof( e.pageX ) == 'number' ) 
	{ 
		var xcoord = e.pageX; 
		var ycoord = e.pageY; 
	} 
	else 
	{
		var xcoord = e.clientX; 
		var ycoord = e.clientY;
		if( !( ( window.navigator.userAgent.indexOf( 'Opera' ) + 1 ) || ( window.ScriptEngine && ScriptEngine().indexOf( 'InScript' ) + 1 ) || window.navigator.vendor == 'KDE' ) ) 
		{
			if( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) ) 
			{
				xcoord += document.documentElement.scrollLeft; 
				
				ycoord += document.documentElement.scrollTop;
			} 
			else if( document.body && ( document.body.scrollTop || document.body.scrollLeft ) ) 
			{
				xcoord += document.body.scrollLeft; 
				ycoord += document.body.scrollTop; 
			} 
			
		} 
	}
	return [xcoord,ycoord];
}


function dragIsDown(e) {
	//make note of starting positions and detect mouse movements
	if(document.getElementById('wMode').value != '' && document.getElementById('wMode').value != 'pan')
	{	
		var msMvCo = dragMousePos(e); 
		if (document.getElementById('wMode').value == "identify")
		{	
			doIdentify(msMvCo[0] - PAR_LEFT, msMvCo[1]- PAR_TOP );
			
			//document.getElementById("wMode").value = current_wMode;
        }
		else if (document.getElementById('wMode').value == "center")
		{
			var target = document.getElementById('frame');
			var centerX = parseInt(PAR_LEFT) + parseInt( PAR_WIDTH / 2);
			var centerY = parseInt(PAR_TOP) + parseInt( PAR_HEIGHT / 2);
			doPan(centerX - msMvCo[0], centerY - msMvCo[1]);
			//document.getElementById("wMode").value = current_wMode;
			if (current_wMode == 'zoomin' || current_wMode == 'zoomout') 
			{
				initDIV();
			}
		
		}
		//document.getElementById("wMode").value = current_wMode;
	}
	else {
	if( ( e && ( e.which > 1 || e.button > 1 ) ) || ( window.event && ( window.event.which > 1 || window.event.button > 1 ) ) ) { return false; }
	if( document.onmouseup == dragIsMove ) { 
		document.onmousemove = storeMOUSEMOVE; document.onmouseup = window.storeMOUSEUP; 
	} //mouseup was over chrome
	window.msStartCoord = dragMousePos(e); window.lyStartCoord = this.style?[parseInt(this.style.left),parseInt(this.style.top)]:[parseInt(this.left),parseInt(this.top)];
	if( document.captureEvents && Event.MOUSEMOVE ) { 
		document.captureEvents(Event.MOUSEMOVE); document.captureEvents(Event.MOUSEUP); 
	}
	window.storeMOUSEMOVE = document.onmousemove; window.storeMOUSEUP = document.onmouseup; window.storeLayer = this;
	document.onmousemove = dragIsMove; document.onmouseup = dragIsMove; return false;
	}
}

function dragIsMove(e) {
	var msMvCo = dragMousePos(e); 
	var leftMargin = 365;
	var rightMargin = 965;
	var topMargin = 20;
	var bottomMargin = 420;
	if(!e ) { e = window.event ? window.event : ( new Object() ); }

		
		newX = window.lyStartCoord[0] + ( msMvCo[0] - window.msStartCoord[0] );
		newY = window.lyStartCoord[1] + ( msMvCo[1] - window.msStartCoord[1] );
		var left = document.getElementById('frame').style.left;
		//reset the mouse monitoring as before - delay needed by Gecko to stop jerky response (hence two functions instead of one)
		//as long as the Gecko user does not release one layer then click on another within 1ms (!) this will cause no problems
		if( e.type && e.type.toLowerCase() == 'mouseup' ) 
		{ 
			document.onmousemove = storeMOUSEMOVE; 
			document.onmouseup = window.storeMOUSEUP;
            doPan(newX, newY);
            return;
		}
		if( navigator.product == 'Gecko' ) 
			{ window.setTimeout('dragIsMove2('+newX+','+newY+');',1); } 
		else { dragIsMove2(newX,newY); }
		
}

function dragIsMove2(x,y)
{
	var oPix = ( document.childNodes ? 'px' : 0 ), theLayer = (window.storeLayer.style ? window.storeLayer.style : window.storeLayer ); 
	theLayer.left = x + oPix; theLayer.top = y + oPix;
	document.getElementById('divHybridImg').style.left = x + oPix;
	document.getElementById('divHybridImg').style.top = y + oPix;
	document.getElementById('divAerialImg').style.left = x + oPix;
	document.getElementById('divAerialImg').style.top = y + oPix;
}

var headerArray = new Array();
var select = new Array();
var options = new Array();
var optionsArray = new Array();
var stops = new Array();
var recordsText = new Array();
var records = new Array();
var startText = "";
var endText = "";
var startAddressIsFound = "";
var isEndAddress = false;


function setWMode(args)
{
    if (args == '0')
    {
        document.getElementById('wMode').value = "pan";
        current_wMode = 'pan';
        resetDIV();
    }
    if (args == '1')
    {
        document.getElementById('wMode').value = "zoomin";
         current_wMode = 'zoomin';

        initDIV();
    }
    if (args == '2')
    {
        document.getElementById('wMode').value = "zoomout";
        current_wMode = 'zoomout';
        initDIV();
    }
}

function fixAerial(args)
{
	var tempText = args;
	tempText = replaceAll(tempText,'^','&');
	return tempText;
}

function trim(receivedText)
{
    return receivedText.substring(receivedText.indexOf("picture"), receivedText.length);
}

function replaceAll(checkMe,toberep,repwith){

    var temp = checkMe;
    var i = temp.indexOf(toberep);
    while(i > -1)
    {
        temp = temp.replace(toberep, repwith);
        i = temp.indexOf(toberep, i + repwith.length + 1);
    }
    return temp;
}


function doPan(coordx, coordy) {
	var receivedText = WebForm1.receiveInfo("pan&"+coordx+"&"+coordy);
	var receivedArray = receivedText.value.split('&');
	
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
	}
	if ( document.getElementById("wMode").value != 'center')
	{
		document.getElementById("wMode").value = current_wMode;
	}
}


function doZoom(args)
{	
    
    var z = document.getElementById("zoom").value;
    var but_old = document.getElementById("zoom" + z);	
    var but_new = document.getElementById("zoom" + args );
    var queryString = "zoom&"+ args + "&" + 0 + "&" + 0 + "&" + 0 + "&" + 0 + "&nozoom";
    
    but_old.style.backgroundColor = "#336699";
    but_new.style.backgroundColor = "#66ffff";
    document.getElementById("zoom").value = args;
    
    var receivedText = WebForm1.receiveInfo( queryString );
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		document.getElementById("zoom").value = receivedArray[4];
	}
}


function doWheel()
{
	var delta = 0;
    if (!event) /* For IE. */
		event = window.event;
    if (event.wheelDelta) 
    { /* IE/Opera. */
		delta = event.wheelDelta/120;
		/** In Opera 9, delta differs in sign as compared to IE.*/
        if (window.opera)
			delta = -delta;
     }
     else if (event.detail)
     { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
		delta = -event.detail/3;
     }
    if (delta)
    {
		document.getElementById("zoom").value = parseInt(document.getElementById("zoom").value) + delta;
		if (parseInt(document.getElementById("zoom").value)>parseInt(document.getElementById("maxZoom").value))
			document.getElementById("zoom").value = document.getElementById("maxZoom").value;
		if (parseInt(document.getElementById("zoom").value) < 0)
			document.getElementById("zoom").value = 0;
		doZoomWheel(document.getElementById("zoom").value);
		makeZoomActive(document.getElementById("zoom").value);
    };

}


function refreshDiv(picture1, picture2, picture3)
{

	document.getElementById('mapImgUrl').value = picture1;
	document.getElementById('mapHybridUrl').value = picture2;
	document.getElementById('mapAerialUrl').value = picture3;
	var innerHtmlText = "";
	if(!document.layers)
	{	
		innerHtmlText += createDragableLayerText("divMapImg","<img id='mapImg' border='0' alt='map image'>",Math.round( 100-200 * dist ),100);
		innerHtmlText += createDragableLayerText("divHybridImg","<img id='mapHybrid' border='0' alt='map image'>",Math.round( 200-200 * dist ),50);
		innerHtmlText += createDragableLayerText("divAerialImg","<img id='mapAerial' border='0' alt='map image'>",Math.round( 200 * dist ),20);
		document.getElementById('frame').innerHTML = innerHtmlText;
		document.getElementById('mapImg').src = document.getElementById('mapImgUrl').value;
		document.getElementById('mapHybrid').src = document.getElementById('mapHybridUrl').value;
		document.getElementById('mapAerial').src = document.getElementById('mapAerialUrl').value;
	}
		
}



var dist = 0;

function sliderMousePos(e) {
	//get the position of the mouse
	if( !e ) { e = window.event; } if( !e || ( typeof( e.pageX ) != 'number' && typeof( e.clientX ) != 'number' ) ) { return [0,0]; }
	if( typeof( e.pageX ) == 'number' ) { var xcoord = e.pageX; var ycoord = e.pageY; } else {
		var xcoord = e.clientX; var ycoord = e.clientY;
		if( !( ( window.navigator.userAgent.indexOf( 'Opera' ) + 1 ) || ( window.ScriptEngine && ScriptEngine().indexOf( 'InScript' ) + 1 ) || window.navigator.vendor == 'KDE' ) ) {
			if( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) ) {
				xcoord += document.documentElement.scrollLeft; ycoord += document.documentElement.scrollTop;
			} else if( document.body && ( document.body.scrollTop || document.body.scrollLeft ) ) {
				xcoord += document.body.scrollLeft; ycoord += document.body.scrollTop; } } }
	return [xcoord,ycoord];
}


function slideIsDown(e) {
	if( document.onmousemove == slideIsMove ) { return false; } 
	//protect against multi-button click
	//make note of starting positions and detect mouse movements
	window.msStartCoord = sliderMousePos(e); window.lyStartCoord = this.style?[parseInt(this.style.left),parseInt(this.style.top)]:[parseInt(this.left),parseInt(this.top)];
	if( document.captureEvents && Event.MOUSEMOVE ) { document.captureEvents(Event.MOUSEMOVE); document.captureEvents(Event.MOUSEUP); }
	window.storeMOUSEMOVE = document.onmousemove; window.storeMOUSEUP = document.onmouseup; window.storeLayer = this;
	document.onmousemove = slideIsMove; document.onmouseup = slideIsMove; return false;
}



function slideIsMove(e) {
	//move the slider to its newest position
	var msMvCo = sliderMousePos(e); if( !e ) { e = window.event ? window.event : ( new Object() ); }
	var theLayer = window.storeLayer.style ? window.storeLayer.style : window.storeLayer; var oPix = document.childNodes ? 'px' : 0;
	if( window.storeLayer.hor ) {
		var theNewPos = window.lyStartCoord[0] + ( msMvCo[0] - window.msStartCoord[0] );
		if( theNewPos < 0 ) { theNewPos = 0; } if( theNewPos > window.storeLayer.maxLength ) { theNewPos = window.storeLayer.maxLength; }
		theLayer.left = theNewPos + oPix;
	} else {
		var theNewPos = window.lyStartCoord[1] + ( msMvCo[1] - window.msStartCoord[1] );
		if( theNewPos < 0 ) { theNewPos = 0; } if( theNewPos > window.storeLayer.maxLength ) { theNewPos = window.storeLayer.maxLength; }
		theLayer.top = theNewPos + oPix;
	}
	//run the user's functions and reset the mouse monitoring as before
	if( e.type && e.type.toLowerCase() == 'mousemove' ) {
		if( window.storeLayer.moveFunc ) { 
			dist = theNewPos/window.storeLayer.maxLength;
			window.storeLayer.moveFunc(); 
		}
	} else {
		document.onmousemove = storeMOUSEMOVE; document.onmouseup = window.storeMOUSEUP;
		if( window.storeLayer.stopFunc ) { window.storeLayer.stopFunc(theNewPos/window.storeLayer.maxLength); }
	}
}


function makeQuickest(args)
{
    var info = args;
    document.getElementById('quickest').value = info;
}


function makeReverse()
{
   if (document.getElementById('reverseCheck').value == 0)
        document.getElementById('reverseCheck').value = 1;
    else 
        document.getElementById('reverseCheck').value = 0;
}



function setPref(args)
{
    document.getElementById('preferred').value = args;
}


function moveUp()
{   
     var stopsArea = document.getElementById('stopsArea');
     var i = stopsArea.selectedIndex;
     if (i<0) {
        alert(document.getElementById('par_selFirst').value);
        return;
     };
     
     if (i == 0)
     {
        alert(document.getElementById('par_errMoveUp').value);
     }
     else 
     {
        var tempText = stops[i];
        stops[i] = stops[i-1]
        stops[i-1] = tempText;
        stopsArea.options[i].text = stops[i].split('^')[2];
        stopsArea.options[i-1].text = stops[i-1].split('^')[2];
        stopsArea.selectedIndex = i-1;
     };
};



function moveDown()
{
     var stopsArea = document.getElementById('stopsArea');
     var i = stopsArea.selectedIndex;
     if (i<0) {
        alert(document.getElementById('par_selFirst').value);
        return;
     };
     if (i == (stopsArea.options.length-1))
     {
		alert(document.getElementById('par_errMoveDown').value);
     }
     else 
     {
        var tempText = stops[i];
        stops[i] = stops[i+1]
        stops[i+1] = tempText;
        stopsArea.options[i].text = stops[i].split('^')[2];
        stopsArea.options[i+1].text =  stops[i+1].split('^')[2];
        stopsArea.selectedIndex = i+1;
     };
};

function clearStops()
{
     var stopsArea = document.getElementById('stopsArea');
     var i = stopsArea.selectedIndex;
     if (i<0) {
        alert(document.getElementById('par_selFirst').value);
        return;
     }
     else 
     {
        for (var j = i; j< stops.length-1; j++)
        {
            stops[j] = stops[j+1];
            stopsArea.options[j].text =  stops[j].split('^')[2];
        };
        stopsArea.length = stopsArea.length-1;
        stops.length = stops.length-1;
     };
};



function showRoundOptions(args)
{
    var receivedInfo = args;
    var zoomLevel = receivedInfo.split('^')[0]; 
    
    //document.getElementById('displayRow').style.display = "none";

    if (zoomLevel != "-1")
    {
        makeZoomActive(zoomLevel);
    };
    document.getElementById('butGo').disabled =false;
    if (document.getElementById('reverse').style.display == '')
    {
    	if (isEndAddress)
		{
            endText = receivedInfo;
            var sendText = document.getElementById('quickest').value+"&"+document.getElementById('preferred').value+"&"+document.getElementById('reverseCheck').value+"&0&1&"+startText+"&"+endText+"&";
                    
			var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
			var receivedArray = receivedText.value.split('&');
			if (receivedArray[0] == "picture")
			{
				refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
				var infoRoute = new Array();
				for (var i=4; i<receivedArray.length; i++)
				{
					infoRoute[i-4] = receivedArray[i];
				};
				showRoute(infoRoute);
			}
			else if (receivedArray[0] == "error")
			{
				alert(receivedArray[1]);
			}
            startAddressIsFound = "";
        }
        if (startText == "" && startAddressIsFound == "")
        {	try{
            startText = receivedInfo;
    		var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('endAddress').value);
			var receivedArray = receivedText.value.split('&');
			if (receivedArray[0] == "picture")
			{
				refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
				showRoundOptions(receivedArray[4]);
			}
			else if (receivedArray[0] == "multiple")
			{
				var noParams = receivedArray[1];
				var header = receivedArray[2];
				headerArray = header.split('^');
				
				options.length = 0;
				
				for (var i = 0; i < noParams; i++)
				{
					options[i] = receivedArray[2*i + 3];
					optionsArray[i] = receivedArray[2*i + 4];
				};
				
				displayInfo();
			}
			else if (receivedArray[0] == "error")
			{
				alert(receivedArray[1]);
			}
			}
            catch(e){}
        }
        else if (endText == "")
        {
			try{
            //fast&pref&rev&optimized&NoOfEnds&start&end0
            endText = receivedInfo;
            var sendText = document.getElementById('quickest').value+"&"+document.getElementById('preferred').value+"&"+document.getElementById('reverseCheck').value+"&0&1&"+startText+"&"+endText+"&";
                    
			var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
			var receivedArray = receivedText.value.split('&');
			if (receivedArray[0] == "picture")
			{
				refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
				var infoRoute = new Array();
				for (var i=4; i<receivedArray.length; i++)
				{
					infoRoute[i-4] = receivedArray[i];
				};
				showRoute(infoRoute);
			}
			else if (receivedArray[0] == "error")
			{
				alert(receivedArray[1]);
			}
			}
			catch(e){}
        };
    }
    else if (document.getElementById('startRowText').style.display == '')
    {
        //option 2
        startText = receivedInfo;
        document.getElementById('kRoute').checked = true;
        showStartingRoute();
    }
    else if (document.getElementById('endRowText').style.display == '')
    {
        //door to door
        endText = receivedInfo;
        //fast&pref&rev&optimized&NoOfEnds&start&end0
        var sendText = "1&50&"+document.getElementById('routeType').value+"&0&1&"+startText+"&"+endText+"&";
        
        var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
		var receivedArray = receivedText.value.split('&');
		if (receivedArray[0] == "picture")
		{
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
			var infoRoute = new Array();
			for (var i=4; i<receivedArray.length; i++)
			{
				infoRoute[i-4] = receivedArray[i];
			};
			showRoute(infoRoute);
		}
		else if (receivedArray[0] == "error")
		{
			alert(receivedArray[1]);
		}
    }
    else if (document.getElementById('multiplePanel').style.display == '')
    {
        stops[stops.length] =receivedInfo;
        var stopsArea = document.getElementById('stopsArea');
        stopsArea.length = stops.length;
        for (var i = 0; i< stops.length; i++)
        {
           stopsArea.options[i].text = stops[i].split("^")[2];
        };
     }
}


function addStop(args)
{
	stops[stops.length] =args;	
	var stopsArea = document.getElementById('stopsArea');
    stopsArea.length = stops.length;
    for (var i = 0; i< stops.length; i++)
    {
		stopsArea.options[i].text = stops[i].split("^")[2];
    };
}



function displayInfo()
{
    var stringHtml = "<table border='1'><th style='width:60px'>&nbsp;</th>";
    for (var i=1; i<headerArray.length; i++)
    {
        stringHtml+= "<th>"+headerArray[i]+"</th>";
    }
    stringHtml+= "</tr><tr>";
    for (var i = 0; i< options.length; i++)
    {
        stringHtml += "<td><input type='button' value='" + PAR_SELECT + "' onclick=doFindCoord("+i+") /></td>";
        var optionsString = optionsArray[i];
        var optionArray = optionsString.split('^');
        for (var j = 1; j< optionArray.length; j++)
        {
            stringHtml += "<td style='text-align:center'>"+ optionArray[j] + "</td>";
        }
        stringHtml+="</tr>";
    }
    document.getElementById('displayRow').style.display = '';
    var displayInfo = document.getElementById('displayInfo');
    displayInfo.innerHTML = stringHtml;
};



function makeZoomActive(args)
{
    var sendText = args;
    var z = document.getElementById("zoom").value;
    if (z!=args)
    {
		for (var i = 1; i <= parseInt(z); i++)
		{
			var but_old = document.getElementById("zoom" + i);	
			but_old.value = '';
	        but_old.style.backgroundColor = "#336699";
        }
        if (sendText == "0" || sendText == "NaN")
        {
			sendText = parseInt(i) + 1;
			args = sendText;
		}
		if (parseInt(sendText) > NO_ZOOM_BOTTONS )
		{
			sendText = NO_ZOOM_BOTTONS;
			args = sendText;
		}
        var but_new = document.getElementById("zoom" + sendText);
        but_new.value = '';
        but_new.style.backgroundColor = "#66ffff";
        document.getElementById("zoom").value = args;            
    } 
}



function showRoute(args)
{
	var infoRoute = args;
	var headerText = infoRoute[0];

	var subTextArray = receivedArray = infoRoute[1].split("^");
	makeZoomActive(subTextArray[0]);
	var subText = subTextArray[1]+"^"+subTextArray[2];
	var finalText = infoRoute[2];
	
	var displayInfo = document.getElementById('displayInfo');
	var stringHTML = "<table border='1' width='" + (PAR_WIDTH + 50) + "'>\n\t<tr><td colspan='3'>";
	var headerStringArray = headerText.split('^');
	//header
	stringHTML += "<input type='button' value='"+headerStringArray[0]+"' onclick='javascript:showSegment(0);' /> &nbsp; ";
	stringHTML += "<input type='button' id='print' value='"+headerStringArray[1]+"' onclick='printRouteResults()' /> &nbsp; ";
	stringHTML += "<select id='printType'>";
	for (var i = 0; i<4;i++)
	{
		stringHTML += "<option value='"+i+"'>"+headerStringArray[i+2]+"</option>";
	};
	stringHTML += "</select></td></tr>";
	//sub
	stringHTML += "<tr><td>&nbsp;</td><td>"+subText.split('^')[0]+"</td><td>"+subText.split('^')[1]+"</td></tr>";
	//directions

	stringHTML += "<tr><td><a href='javascript:showSegment("+1+");'><img src='images/magnifier.gif' alt='magnifier' style='border:0px'/></a></td>";
	stringHTML += "<td>"+1+"</td>";
	var tempText = infoRoute[3];
	stringHTML += "<td style='color:green; text-align:left'>"+tempText.split('^')[0]+"<br>"+tempText.split('^')[1]+"</td></tr>";

	for (var i = 6; i < infoRoute.length; i++)
	{
		stringHTML += "<tr><td><a href='javascript:showSegment("+(i-4)+");'><img src='images/magnifier.gif' alt='magnifier' style='border:0px'/></a></td>";
		stringHTML += "<td>"+(i-4)+"</td>";
		var tempText = infoRoute[i-2];
		stringHTML += "<td style='text-align:left'>"+tempText.split('^')[0]+"<br>"+tempText.split('^')[1]+"</td></tr>";
	};
	
	stringHTML += "<tr><td><a href='javascript:showSegment("+(infoRoute.length-5)+");'><img src='images/magnifier.gif' alt='magnifier' style='border:0px'/></a></td>";
	stringHTML += "<td>"+(infoRoute.length-4)+"</td>";
	var tempText = infoRoute[infoRoute.length-2];
	stringHTML += "<td style='color:red; text-align:left'>"+tempText.split('^')[0]+"<br>"+tempText.split('^')[1]+"</td></tr>";
	stringHTML+="</table></br></br><I>"+finalText+"<i>";
	
	tempText = infoRoute[infoRoute.length-1];
	if (tempText != "")
		rearangeSegments(tempText)
			
	displayInfo.innerHTML = stringHTML;
	endText = "";
	document.getElementById('endAddress').value = '';
	if (document.getElementById('reverse').style.display == '')
	{
		startText = "";
		document.getElementById('startAddress').value = '';
	}
	document.getElementById("wMode").value = current_wMode;
};



function showSegment(args)
{
	var receivedText = WebForm1.receiveInfo("showSegment&"+args);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		makeZoomActive(receivedArray[4]);
	}
	else if (receivedArray[0] == "error")
	{
		alert(receivedArray[1]);
	}
}




function rearangeSegments(args)
{
    var receivedInfo = args;
    var receivedArray = receivedInfo.split('^');
    var stopsArea = document.getElementById('stopsArea');
    for (var i = 0; i<stops.length; i++)
    {
        if (stops[i].split('^')[2]!= receivedArray[i])
        {   var j = i;
            for (j == i; j< stops.length; j++)
            {
                if (stops[j].split('^')[2] == receivedArray[i])
                    break;
            };
            
            if (j != stops.length)
            {
                //interchange
                var temp = stops[i];
                stops[i] = stops[j];
                stops[j] = temp;
            };
        };
        stopsArea.options[i].text = stops[i].split('^')[2];
    }
};



function showFindOptions()
{
    startText = "";
    endText = "";
    stops.length = 0;
    select.length = 0;
    document.getElementById("findNearbyParams").style.display = 'none';
    document.getElementById('startAddress').value = '';
    document.getElementById('startRowText').style.display = '';
    document.getElementById('startRowAddress').style.display = '';
    document.getElementById('roundRouting').style.display = "none";
    document.getElementById('endRowText').style.display = "none";
    document.getElementById('endRowAddress').style.display = "none";
    document.getElementById('newLocation').style.display = "none";
    document.getElementById('butGo').style.display = '';
    document.getElementById('prefered').style.display = "none";
    document.getElementById('reverse').style.display = "none";
    document.getElementById('interstates').style.display = "none";
    document.getElementById('multiplePanel').style.display = "none";
    document.getElementById('stopText').style.display = "none";
    document.getElementById('stopAddress').style.display = "none";
    document.getElementById('multiplePanel').style.display = "none";
    document.getElementById('startAddress').focus();
    
    //document.getElementById('displayRow').style.display = "none";
    //document.getElementById('displayInfo').innerHTML = '';
    
    document.getElementById('checkMultipleRoute').checked = false;
}

function showFindNearest()
{
	startText = "";
    endText = "";
    stops.length = 0;
    select.length = 0;
    document.getElementById("findNearbyParams").style.display = '';
    document.getElementById('startAddress').value = '';
    document.getElementById('startRowText').style.display = 'none';
    document.getElementById('startRowAddress').style.display = 'none';
    document.getElementById('roundRouting').style.display = "none";
    document.getElementById('endRowText').style.display = "none";
    document.getElementById('endRowAddress').style.display = "none";
    document.getElementById('newLocation').style.display = "none";
    document.getElementById('butGo').style.display = '';
    document.getElementById('prefered').style.display = "none";
    document.getElementById('reverse').style.display = "none";
    document.getElementById('interstates').style.display = "none";
    document.getElementById('multiplePanel').style.display = "none";
    document.getElementById('stopText').style.display = "none";
    document.getElementById('stopAddress').style.display = "none";
    document.getElementById('multiplePanel').style.display = "none";
    document.getElementById('layersEnum').focus();
    
    //document.getElementById('displayRow').style.display = "none";
    //document.getElementById('displayInfo').innerHTML = '';
    
    document.getElementById('checkMultipleRoute').checked = false;
}


function showMultipleStopsOptions()
{
    document.getElementById('startRowText').style.display = "none";
    document.getElementById('startRowAddress').style.display = "none";
    document.getElementById('roundRouting').style.display = "none";
    document.getElementById('endRowText').style.display = "none";
    document.getElementById('endRowAddress').style.display = "none";
    document.getElementById('newLocation').style.display = "none";
    document.getElementById('butGo').style.display = "none";
    document.getElementById('prefered').style.display = "none";
    document.getElementById('reverse').style.display = "none";
    document.getElementById('interstates').style.display = '';
    document.getElementById('multiplePanel').style.display = "none";
    document.getElementById('stopText').style.display = '';
    document.getElementById('stopAddress').style.display = '';
    document.getElementById('multiplePanel').style.display = '';
    
    document.getElementById('stopsArea').options.length = 0;
    document.getElementById('stopAddressText').value = '';
    document.getElementById('displayInfo').innerHTML = "";
    document.getElementById('checkMultipleRoute').checked = false;

}



function showStartingRoute()
{
	document.getElementById('displayInfo').innerHTML = "";
    document.getElementById("findNearbyParams").style.display = "none";
    document.getElementById('startRowText').style.display = '';
    document.getElementById('startRowAddress').style.display = '';
    document.getElementById('roundRouting').style.display = "none";
    document.getElementById('endRowText').style.display = '';
    document.getElementById('endRowAddress').style.display = '';
    document.getElementById('newLocation').style.display = "none";
    document.getElementById('butGo').style.display = '';
    document.getElementById('prefered').style.display = '';
    document.getElementById('reverse').style.display = '';
    document.getElementById('interstates').style.display = '';
    document.getElementById('multiplePanel').style.display = '';
    document.getElementById('stopText').style.display = "none";
    document.getElementById('stopAddress').style.display = "none";
    document.getElementById('multiplePanel').style.display = "none";
    
   // endText = "";
    stops.length = 0;
    select.length = 0;
    
    document.getElementById('startAddress').focus();
    document.getElementById('endAddress').value = 'End';
	document.getElementById('endAddress').style.color="#999999";
	
}

var bSecond = false;

function findAddress()
{
	// test if map is empty  
	if ( parseInt( REGION ) == EMPTY_MAP ) 
	{
		return;
	}
    //document.getElementById('displayInfo').innerHTML = '';
    current_wMode = document.getElementById("wMode").value;
    segments.length = 0;
    //options.length = 0;
    headerText = "";
    subText = "";
    document.getElementById('butGo').disabled=true;
    
    if (bSecond && startText != "")
    {
     if ( document.getElementById('endAddress').value == "" )
     {
		document.getElementById('butGo').disabled=false;
		document.getElementById("wMode").value = current_wMode;
		return;
     }
		var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('endAddress').value);
				var receivedArray = receivedText.value.split('&');
				
				if (receivedArray[0] == "picture")
				{
					refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
					showRoundOptions(receivedArray[4]);
				}
				else if (receivedArray[0] == "multiple")
				{
					var noParams = receivedArray[1];
					var header = receivedArray[2];
					headerArray = header.split('^');
							
					options.length = 0;
				
					for (var i = 0; i < noParams; i++)
					{
						options[i] = receivedArray[2*i + 3];
						optionsArray[i] = receivedArray[2*i + 4];
					};
					displayInfo();
				}
				else if (receivedArray[0] == "error")
				{
					alert(receivedArray[1]);
				}
				isEndAddress = true;
				bSecond = false;
    }
    else
    if (document.getElementById('reverse').style.display == '')
    {
    
		if ( document.getElementById('startAddress').value == "" || document.getElementById('startAddress').value == "")
		{
			document.getElementById('butGo').disabled=false;
			document.getElementById("wMode").value = current_wMode;
			return;
		}
        var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('startAddress').value);
        startText = "";
		var receivedArray = receivedText.value.split('&');
		if (receivedArray[0] == "picture")
		{
			startText = receivedArray[4];
			document.getElementById('mapImgUrl').value = receivedArray[1];
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		    if (startText == "" || (startAddressIsFound == "") || (startAddressIsFound != receivedArray[4])) // No address found or start addr changed
			{
				startAddressIsFound = "";
				startText = "";
				isEndAddress = false;
				showRoundOptions(receivedArray[4]);
			}
			else
			{
				var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('endAddress').value);
				var receivedArray = receivedText.value.split('&');
				
				if (receivedArray[0] == "picture")
				{
					refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
					showRoundOptions(receivedArray[4]);
				}
				else if (receivedArray[0] == "multiple")
				{
					var noParams = receivedArray[1];
					var header = receivedArray[2];
					headerArray = header.split('^');
							
					options.length = 0;
				
					for (var i = 0; i < noParams; i++)
					{
						options[i] = receivedArray[2*i + 3];
						optionsArray[i] = receivedArray[2*i + 4];
					};
					displayInfo();
				}
				else if (receivedArray[0] == "error")
				{
					alert(receivedArray[1]);
				}
				isEndAddress = true;
			} 
		}
		else if (receivedArray[0] == "multiple")
		{
			var noParams = receivedArray[1];
			var header = receivedArray[2];
			headerArray = header.split('^');
						
			options.length = 0;
				
			for (var i = 0; i < noParams; i++)
			{
				options[i] = receivedArray[2*i + 3];
				optionsArray[i] = receivedArray[2*i + 4];
			};
			
			displayInfo();
		}
		else if (receivedArray[0] == "error")
		{
			alert(receivedArray[1]);
		}
    } else if (document.getElementById('findNearbyParams').style.display == '') // find nearby
		{
			var selected = document.getElementById('layersEnum').value;
			var layer = document.getElementById('layersEnum').options[selected].text;
			var radius = document.getElementById('radius').value;				
		
			var receivedText = WebForm1.receiveInfo("findNearby&" + layer + "&" + radius );
			var receivedArray = receivedText.value.split('&');
			if (receivedArray[0] == "findNearby")
			{
				refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
				for (var i = 0; i <= parseInt( receivedArray[5] ); i++)
					segments[segments.length] = receivedArray[ i + 6 ];
				makeZoomActive(receivedArray[4]);
				displayNearbyItems();

			}
			else{
				window.alert(receivedArray[0]);
				document.getElementById("wMode").value = current_wMode;
			}
			
		} 
    else 
    if (document.getElementById('startRowAddress').style.display == '')
    {
		if ( document.getElementById('startAddress').value == "")
		{
			document.getElementById('butGo').disabled=false;
			document.getElementById("wMode").value = current_wMode;
			return;
		}
		bSecond = true;
        var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('startAddress').value);
		var receivedArray = receivedText.value.split('&');
		if (receivedArray[0] == "picture")
		{
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
			startAddressIsFound = receivedArray[4];
			showRoundOptions(receivedArray[4]);
			document.getElementById('displayInfo').innerHTML = "";
		}
		else if (receivedArray[0] == "multiple")
		{
			var noParams = receivedArray[1];
			var header = receivedArray[2];
			headerArray = header.split('^');
					
			options.length = 0;
				
			for (var i = 0; i < noParams; i++)
			{
				options[i] = receivedArray[2*i + 3];
				optionsArray[i] = receivedArray[2*i + 4];
			};
			
			displayInfo();
		}
		else if (receivedArray[0] == "error")
		{
			alert(receivedArray[1]);
		}
    }
    else 
    if (document.getElementById('multiplePanel').style.display == '')
    {
        var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('stopAddressText').value);
		var receivedArray = receivedText.value.split('&');
		
		if (receivedArray[0] == "picture")
		{
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
			addStop(receivedArray[4]);
		}
		else if (receivedArray[0] == "multiple")
		{
			var noParams = receivedArray[1];
			var header = receivedArray[2];
			headerArray = header.split('^');
					
			options.length = 0;
				
			for (var i = 0; i < noParams; i++)
			{
				options[i] = receivedArray[2*i + 3];
				optionsArray[i] = receivedArray[2*i + 4];
			};
			
			displayInfo();
			
		}
		else if (receivedArray[0] == "error")
		{
			alert( receivedArray[1]);
		}
		
    }
document.getElementById('butGo').disabled=false;
document.getElementById("wMode").value = current_wMode;
}


function doFindCoord(x)
{   
    var index = x;
    var sendText = options[index];
    if ((document.getElementById('reverse').style.display == '')||((document.getElementById('endRowAddress').style.display == '')))
    {
        if (startText == "")
        {
            startText = sendText;
            
            var receivedText = WebForm1.receiveInfo("find&location&"+document.getElementById('endAddress').value);
			var receivedArray = receivedText.value.split('&');
			if (receivedArray[0] == "picture")
			{
				refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
				showRoundOptions(receivedArray[4]);
			}
			else if (receivedArray[0] == "multiple")
			{
				var noParams = receivedArray[1];
				var header = receivedArray[2];
				headerArray = header.split('^');
						
				options.length = 0;
				
				for (var i = 0; i < noParams; i++)
				{
					options[i] = receivedArray[2*i + 3];
					optionsArray[i] = receivedArray[2*i + 4];
				};
				
				displayInfo();
			}
			else if (receivedArray[0] == "error")
			{
				alert(receivedArray[1]);
			}
        }
        else if (endText == "")
        {
            //fast&pref&rev&NoOfEnds&start&end0
            endText = sendText;
            //var sendText =document.getElementById('quickest').value+"&"+document.getElementById('preferred').value+"&0&"+document.getElementById('routeType').value+"&1&"+startText+"&"+endText;
            var sendText =document.getElementById('quickest').value+"&" + 
				              document.getElementById('preferred').value + "&" + 
				              document.getElementById('reverseCheck').value + "&" + 
				              document.getElementById('routeType').value+"&1&"+startText+"&"+endText+"&";

            var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
			var receivedArray = receivedText.value.split('&');
			if (receivedArray[0] == "picture")
			{
				refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
				var infoRoute = new Array();
				for (var i=4; i<receivedArray.length; i++)
				{
					infoRoute[i-4] = receivedArray[i];
				};
				showRoute(infoRoute);
			}
			else if (receivedArray[0] == "error")
			{
				alert(receivedArray[1]);
			}
        }
    }
    else if (document.getElementById('multiplePanel').style.display == '')
    {
        stops[stops.length] = sendText;
        var stopsArea = document.getElementById('stopsArea');
        stopsArea.length = stops.length;
        for (var i = 0; i< stops.length; i++)
        {
            var tempText = stops[i];
            stopsArea.options[i].text = tempText.split('^')[2];
        };
        startText = sendText;
        var sendArray = sendText.split('^');
        var receivedText = WebForm1.receiveInfo("coordinate&"+sendArray[1]+"^"+sendArray[2]+"^"+ sendArray[3]);
		var receivedArray = receivedText.value.split('&');
		
		if (receivedArray[0] == "picture")
		{
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		}
		document.getElementById('displayInfo').innerHTML = '';
    }
    else 
    {
        startText = sendText;
        var sendArray = sendText.split('^');
        var receivedText = WebForm1.receiveInfo("coordinate&"+sendArray[1]+"^"+sendArray[2]+"^"+ sendArray[3]);
		var receivedArray = receivedText.value.split('&');
		
		if (receivedArray[0] == "picture")
		{
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
			showRoundOptions(receivedArray[4]);
		}
    }
    select.length = 0;
    headerArray.length = 0;
    //options.length = 0;
    currentPage = 0;
    
}




function doFindRoute()
{
    
    document.getElementById('butGo').disabled=false;
    if (stops.length <2 )
    {
        alert(document.getElementById('par_twoStops').value);
        return;
    }
    
    
    //fast&pref&rev&optimize&NoOfEnds&start&end0
    var sendText = "1&"+document.getElementById('preferred').value+"&-1&0&"+(stops.length-1)+"&";
    
    for (var i=0; i<stops.length; i++)
    {
        sendText += stops[i]+"&";
    }
    recordsText.length = 0;
    records.length = 0;
    
    var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		var infoRoute = new Array();
		for (var i=4; i<receivedArray.length; i++)
		{
			infoRoute[i-4] = receivedArray[i];
		};
		showRoute(infoRoute);
	}
	else if (receivedArray[0] == "error")
	{
		alert(receivedArray[1]);
	}
}

function doFindOptimizedRoute()
{   
    document.getElementById('butGo').disabled=false;
    segments.length = 0;
    if (stops.length <4)
    {
        alert(document.getElementById('par_fourStops').value);
        return;
    }
    //fast&pref&rev&optimize&NoOfEnds&start&end0
    var sendText = "1&"+document.getElementById('preferred').value+"&-1&1&"+(stops.length-1)+"&";
    
    for (var i=0; i<stops.length; i++)
    {
        sendText += stops[i]+"&";
    }
    
    recordsText.length = 0;
    records.length = 0;
    var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		var infoRoute = new Array();
		for (var i=4; i<receivedArray.length; i++)
		{
			infoRoute[i-4] = receivedArray[i];
		};
		showRoute(infoRoute);
	}
	else if (receivedArray[0] == "error")
	{
		alert(receivedArray[1]);
	}
}



function doSetCenterMap()
{
	if (document.getElementById('wMode').value != 'center') current_wMode = document.getElementById('wMode').value;
	document.getElementById('wMode').value = "center";
	resetDIV();
}



function doSetIdentify()
{
	resetDIV();
    if (document.getElementById('wMode').value != 'identify') current_wMode =  document.getElementById('wMode').value;
    document.getElementById('wMode').value = "identify";
}



function doIdentify(x,y)
{
	var receivedText = WebForm1.receiveInfo("identify&"+x+"&"+y);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		makeIdentifyRecords(receivedArray[4]);
	}
	else if (receivedArray[0] == "error")
	{
		alert(receivedArray[1]);
	}
}



function makeIdentifyRecords(args)
{
    var receivedInfo = args;
    var receivedArray = receivedInfo.split('^');



    for (var i=0; i< receivedArray.length; i++)
    {
        records[i] = receivedArray[i];
        identifyArray[i] = "true";
    }

    displayRecords();

    //document.getElementById("wMode").value = current_wMode;
    if (( current_wMode == 'zoomin') || ( current_wMode == 'zoomout'))
    {
        initDIV();
     }
}



function displayRecords()
{
    var sendInfo = "";
    for (var i = 0; i < records.length; i++)
    {
		if (identifyArray[i] == "true")
              sendInfo += i+ "^";
    }
    if (sendInfo.length > 0)
    {
		document.getElementById('displayRow').style.display = "none";
        document.getElementById('displayInfo').innerHTML = "";
        var receivedText = WebForm1.receiveInfo("displayRecords&"+sendInfo);
        showIdentify(receivedText);
    }
    else 
    {
        window.alert(document.getElementById('par_errorIdentify').value);
    }
}

 function trimLeft(receivedText)
{     alert(receivedText);
	pos = 0;
	while (pos < receivedText.length)
		if (receivedText.charAt(pos) == ' ' ||
			receivedText.charAt(pos) == '\n' ||
			receivedText.charAt(pos) == '\r') pos++;
		else break;

	return receivedText.substring(pos, receivedText.length);
}

function showIdentify(args)
{
    var receivedInfo = args.value;
    recordsText = receivedInfo.split('&');
    var displayInfo =  document.getElementById('displayInfo');
    var stringHtml="<table border='1'><tr><td align='center' colspan='"+(records.length)+"'>" 
                       + PAR_IDEN_TITLE + "</td></tr><tr>";

        for (var i = 0; i < records.length ; i++)
        {
               if (identifyArray[i] == "true")
            {
                stringHtml+= "<th>"+records[i]+"</th>"
            }
        }
        stringHtml+="</tr>";
        
        for (var i = 0 ; i < recordsText.length-1 ;i++)
        {
            stringHtml+="<tr>";
            var stringInfo = recordsText[i].split('^');
            for (var j = 0; j< (stringInfo.length-1) ; j++){
                if (stringInfo[j].length >0 )
                    stringHtml+= "<td>"+stringInfo[j]+"</td>"
                else 
                    stringHtml+= "<td>&nbsp;</td>"
            };
            stringHtml+= "</tr>";        
        }
		stringHtml+="</table>";
		document.getElementById('displayRow').style.display = '';
		document.getElementById("displayInfo").innerHTML = stringHtml;
   
        recordsText.length = 0;
        records.length = 0;
        identifyArray.length = 0;
}


	
function show_data(strName){ 
	if (strName.length > 0){ 
		//Append the name to search for to the requestURL 
		var url = requestURL + strName; 
	        
		//Create the xmlHttp object to use in the request 
		//stateChangeHandler will fire when the state has changed, i.e. data is received back 
		// This is non-blocking (asynchronous) 
		xmlHttp = GetXmlHttpObject(stateChangeHandler); 
	        
		//Send the xmlHttp get to the specified url 
		xmlHttp_Get(xmlHttp, url); 
	} 
	else { 
		//Textbox blanked out, clear the results 
		document.getElementById('nameList').innerHTML = ''; 
	} 
} 

//stateChangeHandler will fire when the state has changed, i.e. data is received back 
// This is non-blocking (asynchronous) 
function stateChangeHandler() 
{ 
	//readyState of 4 or 'complete' represents that data has been returned 
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){ 
		//Gather the results from the callback 
		var str = xmlHttp.responseText; 

		//Populate the innerHTML of the div with the results 
		document.getElementById('nameList').innerHTML = str;
	} 
} 

// XMLHttp send GET request 
function xmlHttp_Get(xmlhttp, url) { 
	xmlhttp.open('POST', url, true); 
	xmlhttp.send(null); 
} 

function doZoomWheel(args)
{/*
	var sendText = args;
	if( parseInt( args ) <= 0){
		return;
	};
	var z = document.getElementById("zoom").value;
    var but_old = document.getElementById("zoom" + z);	
    var but_new = document.getElementById("zoom" + args );
    var queryString = "zoom&"+ args + "&" + 0 + "&" + 0 + "&" + 0 + "&" + 0 + "&nozoom";
    
    but_old.style.backgroundColor = "#336699";
    but_new.style.backgroundColor = "#66ffff";
    document.getElementById("zoom").value = args;
    var query = "zoom&"+sendText+"&0&0&0&0&0";
    var receivedText = WebForm1.receiveInfo(query);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
	}
	*/
};


function resetEndAddress()
{
	if ( document.getElementById('endAddress').value == "End")
	{
		document.getElementById('endAddress').value = '';
		document.getElementById('endAddress').style.color="#000000";	
	};
	
}


function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
    {
       var arVersion = navigator.appVersion.split("MSIE")
       var version = parseFloat(arVersion[1])
       if ((version >= 5.5) && (document.body.filters)) 
       {
          for(var i=0; i<document.images.length; i++)
          {
             var img = document.images[i]
             var imgName = img.src.toUpperCase()
             if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
             {
                var imgID = (img.id) ? "id='" + img.id + "' " : ""
                var imgClass = (img.className) ? "class='" + img.className + "' " : ""
                var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
                var imgStyle = "display:inline-block;" + img.style.cssText 
                if (img.align == "left") imgStyle = "float:left;" + imgStyle
                if (img.align == "right") imgStyle = "float:right;" + imgStyle
                if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
                var strNewHTML = "<span " + imgID + imgClass + imgTitle
                + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
                + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
                + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
                img.outerHTML = strNewHTML
                i = i-1
             }
          }
       }    
    }
	

function InitMainPage()
{
try{
	document.getElementById('wMode').value = 'pan';
	if (window.startAddress){
		document.getElementById("startAddress").focus();
	};
	correctPNG();
	resetDIV();
	}catch(e)
	{
		
	};
}


function SimulateGoIfEnter(event)
{
	if (event.keyCode == ENTER_CODE)
	{
		findAddress();
	}
}



/* Functions to receive the data about the findNearby features table*/

/* Init the transfer, set the received zoom level */
function startDataTransfer(args)
{
	// TODO set zoom active(args)
	makeZoomActive(args);
	segments.length = 0
	headerText = "";	
    SendDataToFlashMovie("_root.nearbySender", "true");    
}



/* store the table lines */
function processDataChunck()
{	
   var numArgs = arguments.length;  
   for (var i = 0; i < numArgs; i++)
        segments[segments.length] = arguments[i];

   SendDataToFlashMovie("_root.nearbySender", "true");
}








/*display the nearby items*/
function displayNearbyItems()
{
    document.getElementById('displayRow').style.display = '';
    var displayInfo = document.getElementById('displayInfo');    
    var headerStringArray = segments[0].split('=')[1].split('^');
    var routeButtonText = headerStringArray[0];        
    
    stringHTML = "<table border='1'>\n\t"; 
       
    // write the header
    stringHTML += "<tr><td colspan='2'>";    
    for (var i = 1; i < headerStringArray.length; i++)
		stringHTML += "<td><b>" + headerStringArray[i] + "</b></td>"      
    stringHTML += "</tr>"    
   
   // write the lines
    for (var i = 1; i < segments.length; i++)
    {
		var index = i - 1 ;
        stringHTML += "<tr>";
        stringHTML += "<td><a href='javascript:zoomOnNearbyItem(" + index + 
                      ");'><img src='images/magnifier.gif' alt='magnifier' style='border:0px'/></a></td>";
        stringHTML += "<td>" + "<input type='button' value='" + routeButtonText + 
                      "' onclick='javascript:routeToNearbyItem(" + index + ");' /> </td>";
        
        //write the columns        
        var segmentPartArray = segments[i].split('^');
        for (var j = 0; j < segmentPartArray.length; j++)
            stringHTML += "<td style='text-align:left'>" + replaceAll( segmentPartArray[j], '%26', '&' ) + "</td>";
        
        stringHTML += "</tr>"
    }
    
    stringHTML += "</table>";
    
    displayInfo.innerHTML = stringHTML;
    document.getElementById("wMode").value = current_wMode;
}



function zoomOnNearbyItem(args)
{	
	var currentItem = "";
	currentItem = args;
	
		var url="actions.asp"+"?option=centerNearbyItem&currentItem=" + currentItem;
	var sendText = document.getElementById('quickest').value+"&"+document.getElementById('preferred').value+"&"+document.getElementById('reverseCheck').value+"&0&1&"+startText+"&"+endText+"&";
                
	var receivedText = WebForm1.receiveInfo("centerNearbyItem&" + currentItem);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		makeZoomActive(receivedArray[4]);
	}
	var receivedArray = receivedText.value.split('&');
}



function routeToNearbyItem( currentItem )
{	
	
	
	var sendText = "1&50&0&0&1&";
	
	var startText = "center";
	var endText = currentItem;
	
	sendText += startText + "&" + endText + "&";
	
			
	var sendText = document.getElementById('quickest').value+"&"+document.getElementById('preferred').value+"&"+document.getElementById('reverseCheck').value+"&0&1&"+startText+"&"+endText+"&";
                
	var receivedText = WebForm1.receiveInfo("drivingDirections&"+sendText);
	var receivedArray = receivedText.value.split('&');
	if (receivedArray[0] == "picture")
	{
		refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		var infoRoute = new Array();
		for (var i=4; i<receivedArray.length; i++)
		{
			infoRoute[i-4] = receivedArray[i];
		};
		showRoute(infoRoute);
	}
	else if (receivedArray[0] == "error")
	{
		alert(receivedArray[1]);
	}

}


/***************************************************************
		code for zoom in rectangle ( the heighest div layer ) 
****************************************************************/

var clickDown = 0;
var mouseMove = 0;
var styles = ["none", "solid", "dashed", "hidden", "dotted"];
var positions = ["absolute", "relative"];
var colors = ["black", "red", "green"];
var DIV_ZINDEX = 1200;
var LEFT_BUTTON = 1;
TABLE_BORDER_WIDTH = 1;
var TABLE_OPACITY = 30;

/*****************************************************************
          redraw the table according with the new coordinates
*****************************************************************/
function drawRect( coord )
{

     if( clickDown == 1 ){
        document.getElementById("tabel").style.left = coord[0] ;
        document.getElementById("tabel").style.top = coord[1] ;
        document.getElementById("tabel").style.width = coord[2] - coord[0];
        document.getElementById("tabel").style.height = coord[3] - coord[1];
        document.getElementById("tabel").border = TABLE_BORDER_WIDTH;
        document.getElementById("tabel").style.borderStyle = styles[1];  //SOLID
        document.getElementById("cell_table").style.color = "#33bbff";// colors[1];
      }

}

/*****************************************************************
          capture  mouse move event
*****************************************************************/

function onMove(e){
    var current;
    var width = 0, height = 0 ;
    if ( clickDown ){
        current = calcCoord(e);
        drawRect( doCorrection( start, current, e) );
        
    }
    else{
		document.getElementById("tabel").style.width = 0;
		document.getElementById("tabel").style.height = 0;
		document.getElementById("tabel").style.borderStyle = styles[0];
     };
}

/*****************************************************************
                  capture  the mouse up event
*****************************************************************/
function onUp(e){
    var left = 0;
    var top = 0;
    var bottom = 0;
    var right = 0;
    var widht = 0;
    var height = 0;
    

    var wMode = document.getElementById('wMode').value;
   
    if( e == "out" || wMode == 'identify' || wMode == 'center'){
    	document.getElementById("tabel").style.top = "";
		document.getElementById("tabel").style.left = "";
		document.getElementById("tabel").style.width = 0;
		document.getElementById("tabel").style.height = 0;
		document.getElementById("tabel").style.borderStyle = styles[0];
		document.getElementById('wMode').value = current_wMode;
		clickDown = 0;
		return;
    };
    
    try{
		top = parseInt( document.getElementById("tabel").style.top);
		left = parseInt(document.getElementById("tabel").style.left);
		width = parseInt(document.getElementById("tabel").style.width);
		height = parseInt(document.getElementById("tabel").style.height);
		right = left + width;
		bottom = top + height;
	}catch(e){
		alert(e);
	}
    

    document.getElementById("tabel").style.width = 0;
    document.getElementById("tabel").style.height = 0;
    document.getElementById("tabel").style.borderStyle = styles[0];
    clickDown = 0;

	var mode = document.getElementById('wMode');

    if( document.getElementById('wMode').value == 'zoomin' || document.getElementById('wMode').value == 'zoomout' ){
			
		var z = document.getElementById("zoom").value;
		if (isNaN(top) || width == 0 || height == 0)
		{
			var x = e.clientX;
			var y = e.clientY;
			
			top = y - PAR_TOP - PAR_WIDTH/10;
			left = x - PAR_LEFT - PAR_WIDTH/10;
			bottom = y - PAR_TOP + PAR_WIDTH/10;
			right = x - PAR_LEFT + PAR_WIDTH/10;
			
		}
		

		var mode = document.getElementById('wMode').value;
		var queryString = "zoom&" + z + "& "+top + "&" + left + "&" + bottom +"&" + right +"&" + mode;
		var receivedText = WebForm1.receiveInfo(queryString);
		var receivedArray = receivedText.value.split('&');
		
		if (receivedArray[0] == "picture")
		{
			refreshDiv(receivedArray[1],receivedArray[3],fixAerial(receivedArray[2]));
		}
		var newLevel = receivedArray[4];
		
		
		
        if (newLevel <= 0) newLevel = 1;
        
        var z = document.getElementById("zoom").value;
		var but_old = document.getElementById("zoom" + z);	
		var but_new = document.getElementById("zoom" + newLevel );
	    
		but_old.style.backgroundColor = "#336699";
		but_new.style.backgroundColor = "#66ffff";
		document.getElementById("zoom").value = newLevel;
		document.getElementById('wMode').value = current_wMode;
	}

	     
	
}

/*****************************************************************
                 capture  mouse down event
*****************************************************************/
function onDown(e){

if (navigator.appName.indexOf("Netscape")!=-1 && parseInt(navigator.appVersion)>=5 )
	{
	    if(   e.which == LEFT_BUTTON  ) 
		  
		{
			clickDown = 1;
			start = calcCoord(e);
		  }
	}
	/* test if the browser is Internet Explorer --  valid opacity range [ 0 , 100 ] */
 else if (navigator.appName.indexOf("Microsoft")!= -1 && parseInt(navigator.appVersion)>=4 )
 {
    if(   e.button == LEFT_BUTTON  ) 
		  
		{
			clickDown = 1;
			start = calcCoord(e);
		  }
 }
 else if (navigator.appName.indexOf("Opera")!= -1 && parseInt(navigator.appVersion)>=5)
 {
    if(   e.which == LEFT_BUTTON  ) 
		  
		{
			clickDown = 1;
			start = calcCoord(e);
		  }
 }
	
    return;
}

/*****************************************************************
          calculates the current coordinates of the mouse relative
                to the invizible layer
******************************************************************/
function calcCoord(e){

    var posX = 0, divX = 0;
    var posY = 0, divY = 0;

    if (e.pageX || e.pageY){
        posX = e.pageX;
        posY = e.pageY;
    }
    else if (e.clientX || e.clientY){
        posX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        posY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }

    if (document.layers) {
           divX = parseInt(document.layers["invizLayer"].left);
           divY = parseInt(document.layers["invizLayer"].top);
        }
    else{
           divX = parseInt(document.all["invizLayer"].style.left);
           divY = parseInt(document.all["invizLayer"].style.top);
        }
    posX -= divX;
    posY -= divY;
    return [ posX, posY ];
}

/******************************************************************
                calculates the corecton for the top left point and
                buttom right point of the table (rectangle)
******************************************************************/
function doCorrection( startPoint, currentPoint, e ){
    var x0 = startPoint[0];
    var y0 = startPoint[1];
    var x1 = currentPoint[0];
    var y1 = currentPoint[1];

    if ( x1 < x0 && y1 < y0  ){
        return [ x1, y1, x0, y0 ];
    }

    if( x1 < x0){
        return [ x1, y0, x0, y1 ];
    }

    if ( y1  < y0 ){
        return [ x0, y1, x1, y0 ];
    }

    return [ x0, y0, x1, y1 ];
}


/******************************************************************
                initialize the invizible layer and the table
******************************************************************/
function initDIV()
{
        try{
			
            
           document.getElementById("big_table").style.width = PAR_WIDTH;
		   document.getElementById("big_table").style.height = PAR_HEIGHT;

           document.getElementById("invizLayer").style.zIndex = DIV_ZINDEX;
            
           document.getElementById("invizLayer").style.position = positions[0]; //ABSOLUTE
           document.getElementById("tabel").style.borderColor= "#33bbff";//colors[1];   //BLACK
           document.getElementById("tabel").style.position = positions[0];  //ABSOLUTE
           document.getElementById("cell_table").style.borderStyle = styles[0]; // NONE
           document.getElementById("tabel").cellpadding = 0;
           document.getElementById("tabel").cellspacing = 0;
       

		/*  test if the browser is Mozilla  -- valid  opacity range [ 0 , 1 ]*/
		if (navigator.appName.indexOf("Netscape")!=-1 && parseInt(navigator.appVersion)>=5 )
		{
			document.getElementById('cell_table').style.MozOpacity = TABLE_OPACITY / 100;
		}
		/* test if the browser is Internet Explorer --  valid opacity range [ 0 , 100 ] */
		else if (navigator.appName.indexOf("Microsoft")!= -1 && parseInt(navigator.appVersion)>=4 )
		{
			document.getElementById('cell_table').style.filter = "progid:DXImageTransform.Microsoft.alpha(opacity="+TABLE_OPACITY+")";
		}
		else if (navigator.appName.indexOf("Opera")!= -1 && parseInt(navigator.appVersion)>=7 ){
			document.getElementById('cell_table').style.opacity = TABLE_OPACITY / 100;
		}
     
	}catch(e){
        alert( e );
        //error on initialize invizible layer
    }
}

/*********************************************************************
                set the DIV ( invizible layer ) to 0 --
                 layers on lower z levels will catch the mouse events
**********************************************************************/
function resetDIV(){
	
	document.getElementById("big_table").style.width = 0;
    document.getElementById("big_table").style.height = 0;
    document.getElementById("invizLayer").style.height = 0;
    document.getElementById("invizLayer").style.width = 0;
   
}


