var lang;
// Look for event listener in the bottom of this file.
function postalCheck(pre,suf,lang)
{
	var errormsg = "";
	
	if(lang == "en")
		errormsg = "Please enter the postal code in the format X1X 1X1";
	else if (lang == "fr")
		errormsg = "Veuillez enter le code postal dans le format X1X 1X1";
	else
		errormsg = "Please enter the postal code in the format X1X 1X1";
	
	
	if(pre.length > 0 && suf.length > 0)
	{
		var postalPattern = /^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/;
		var address = pre+suf;
	}
	else if(pre.length > 0 && suf.length == 0)
	{
		var postalPattern = /^[A-Z][0-9][A-Z]$/;
		address = pre;
	}
	else if(pre.length < 3 || suf.length < 3)
	{
		alert(errormsg);
		return false;
	}
	
	/*************** VALIDATE *******************/
	var postalRegExp = new RegExp(postalPattern);
	if (address == "")
	{
		alert(errormsg);
		return false;
	}
	if (postalRegExp.test(address.toUpperCase()) == false )
	{
		alert(errormsg);
		return false;
	}
	return true;
}
    
    
    //<![CDATA[
    var map;
    var mgr;
    var icons = {};
	var geocoder = null;

    function load() 
    {
      if (GBrowserIsCompatible()) 
      {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        //map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(60, -98), 3);
        map.enableDoubleClickZoom();
		geocoder = new GClientGeocoder();
		//map.openInfoWindow(map.getCenter(),
               //    document.createTextNode("Hello, world"));
      }
    }

    /*function getIcon(images) {
      var icon = null;
      if (images) {
        if (icons[images[0]]) {
          icon = icons[images[0]];
        } else {
          icon = new GIcon();
          icon.image =  images[0] + ".png";
          var size = iconData[images[0]];
          icon.iconSize = new GSize(size.width, size.height);
          icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
		  icon.infoWindowAnchor = new GPoint(size.width, size.height);
          icon.shadow = images[1] + ".png";
          size = iconData[images[1]];
          icon.shadowSize = new GSize(size.width, size.height);
          icons[images[0]] = icon;
        }
      }
      return icon;
    }*/
	
	function getIcon() {
      var icon = null;
          icon = new GIcon();
          icon.image = "/modules/mod_findagent/icon.png";
          var anchorWidth =  21;
		  var anchorHeight = 36;
          icon.iconSize = new GSize(anchorWidth, anchorHeight);
          icon.iconAnchor = new GPoint(anchorWidth, anchorHeight);
		  icon.infoWindowAnchor = new GPoint(anchorWidth/2, 0);
          icon.shadow = "/modules/mod_findagent/icon_shadow.png";
          icon.shadowSize = new GSize(42, 36);
		  
      return icon;
    }
	
	function addMarkerEvent(marker,message, i){
	var value = marker["title"];
	 GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(message);
			map.setZoom(15);
  			});
	allmarkers[i] = marker;

	}
	
    //]]>
    
    
    /************* AJAX CODE **************/
    var req;
	var target;
	var isIE;
	
	function initRequest(url) 
	{
	    if (window.XMLHttpRequest) 
		{
	        req = new XMLHttpRequest();
			//alert("Created XMLHttpRequest object probably because you are NOT using IE");
	    } 
		else if (window.ActiveXObject) 
		{
	        isIE = true;
	        req = new ActiveXObject("Microsoft.XMLHTTP");
			//alert("Created ActiveX object because you ARE using IE");
	    }
		return req;
	}
    /*********** END AJAX CODE ************/
	
	function showAddress(pre,suf,lang) 
	{
		setLang(lang);
		if(postalCheck(pre,suf,lang))
		{
			var address = pre+suf;
			/******* AJAX CODE *********/
			var url = "../ajax/addressresponder.php?a="+escape(address); 
			
		    initRequest(url);
			
			req.onreadystatechange = processContent;
				
			req.open("GET", url, true); 
		    req.send(null);
			/***** END AJAX CODE *******/
		}
    }
    /*function doMarker(address,message)
    {
    	if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
            } else {
              map.setCenter(point, 10);
             var marker = new GMarker(point);
             map.addOverlay(marker);
            	marker.openInfoWindowHtml(message);
            }
          }
        );
      }
    }*/
	
	function doMarker(address,message, i)
    {
    	if (geocoder) 
    	{
    		geocoder.getLatLng(address,
          	function(point) 
          	{
            	if (!point) 
            	{
            	} 
            	else 
            	{
            		//map.setCenter(point, 12);
			 		var icon = getIcon(); 
             
			 		var marker = new GMarker(point,icon);
             		map.addOverlay(marker);
             		//marker.openInfoWindowHtml(message);
			 		addMarkerEvent(marker,message,i);
            	}
          	}
        );
      }
    }
    
/************************* END GOOGLE CODE *******************************/

var allmarkers;
function processContent() 
{
	map.clearOverlays()
	allmarkers = new Array();
	if(getLang()=="en")
		errormsg = "Sorry! No agents could be found with that postal code. Please try another search";
    else if(getLang()=="fr")
    	errormsg = "D\351sol\351, aucun courtier n'est disponible pour ce code postal. Veuillez effectuer une nouvelle recherche.";
	else
		errormsg = "Sorry! No agents could be found with that postal code. Please try another search";
    	
	if (req.readyState == 4) 
	{
        if (req.status == 200) 
		{
			if(req.responseXML.getElementsByTagName("msg")[0].childNodes[0])
				alert(errormsg);
				//document.getElementById('agadcopy').innerHTML="No results";
			else
			{
				var message = "";
				var agentNum = "";			
				var firstName = "";
				var lastName = "";
				var address_one = "";
				var address_two = "";
				var city = "";
				var provState = "";
				var postalZip = "";
				var phone = "";
				var fax = "";
				var email = "";
				var url = "";
				rsp = req.responseXML.getElementsByTagName("agents")[0].childNodes;
				var output = "";
				var floatOutput = "";
				document.getElementById('fa_out').style.display='block';
				for(var i = 0, cnt = rsp.length; i < cnt; ++i)
				{
					var message = "";
					var address = "";
						//alert(req.responseXML.getElementsByTagName("first_name")[i].childNodes[0].nodeValue);
						if(req.responseXML.getElementsByTagName("agent_num")[i].childNodes[0])
							agentNum = req.responseXML.getElementsByTagName("agent_num")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("first_name")[i].childNodes[0])
							firstName = req.responseXML.getElementsByTagName("first_name")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("last_name")[i].childNodes[0])
							lastName = req.responseXML.getElementsByTagName("last_name")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("agency")[i].childNodes[0])
							agency = req.responseXML.getElementsByTagName("agency")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("address_one")[i].childNodes[0])	
							address_one = req.responseXML.getElementsByTagName("address_one")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("address_two")[i].childNodes[0])	
							address_two = req.responseXML.getElementsByTagName("address_two")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("city")[i].childNodes[0])	
							city = req.responseXML.getElementsByTagName("city")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("prov_state")[i].childNodes[0])	
							provState = req.responseXML.getElementsByTagName("prov_state")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("postal_zip")[i].childNodes[0])
							postalZip = req.responseXML.getElementsByTagName("postal_zip")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("phone")[i].childNodes[0])	
							phone = req.responseXML.getElementsByTagName("phone")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("fax")[i].childNodes[0])	
							fax = req.responseXML.getElementsByTagName("fax")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("email")[i].childNodes[0])	
							email = req.responseXML.getElementsByTagName("email")[i].childNodes[0].nodeValue;
						if(req.responseXML.getElementsByTagName("url")[i].childNodes[0])	
							url = req.responseXML.getElementsByTagName("url")[i].childNodes[0].nodeValue;
						
						if(getLang()=="en") // English
						{

							message += "<table cellpadding='0' cellspacing='2'>"+
							"<tr><td colspan='2'><h3>"+agency+"</h3></td></tr>"+
							"<tr><td align='left' width=15%>First Name:&nbsp;&nbsp;</td><td>"+firstName+"</td></tr>"+
							"<tr><td align='left'>Last Name:&nbsp;&nbsp;</td><td>"+lastName+"</td></tr>"+
							"<tr><td align='left'>Address:&nbsp;&nbsp;</td><td>"+address_one+"</td></tr>"+
							"<tr><td align='left'>&nbsp;&nbsp;</td><td>"+address_two+"</td></tr>"+
							"<tr><td align='left'>City:&nbsp;&nbsp;</td><td>"+city+"</td></tr>"+
							"<tr><td align='left'>Province:&nbsp;&nbsp;</td><td>"+provState+"</td></tr>"+
							"<tr><td align='left'>Postal:&nbsp;&nbsp;</td><td>"+postalZip+"</td></tr>"+
							"<tr><td align='left'>Phone:&nbsp;&nbsp;</td><td>"+phone+"</td></tr>"+
							"<tr><td align='left'>Fax:&nbsp;&nbsp;</td><td>"+fax+"</td></tr>"+
							"<tr><td align='left'>Email:&nbsp;&nbsp;</td><td><a href=\"mailto:"+email+"\">"+email+"</a></td></tr>"+
							"<tr><td align='left'>URL:&nbsp;&nbsp;</td><td><a href=\""+url+"\" target=\"_blank\">"+url+"</a></td></tr>"+
							"<tr><td colspan=2><hr /></td></tr>"+
							"</table>";
						}
						else if(getLang()=="fr") // French
						{
							message += "<table cellpadding='0' cellspacing='2'>"+
							"<tr><td colspan='2'><h3>"+agency+"</h3></td></tr>"+
							"<tr><td align='left' width=15%>Pr&eacute;nom:&nbsp;&nbsp;</td><td>"+firstName+"</td></tr>"+
							"<tr><td align='left'>Nom de famille:&nbsp;&nbsp;</td><td>"+lastName+"</td></tr>"+
							"<tr><td align='left'>Adresse:&nbsp;&nbsp;</td><td>"+address_one+"</td></tr>"+
							"<tr><td align='left'>&nbsp;&nbsp;</td><td>"+address_two+"</td></tr>"+
							"<tr><td align='left'>Ville:&nbsp;&nbsp;</td><td>"+city+"</td></tr>"+
							"<tr><td align='left'>Province:&nbsp;&nbsp;</td><td>"+provState+"</td></tr>"+
							"<tr><td align='left'>Ville:&nbsp;&nbsp;</td><td>"+postalZip+"</td></tr>"+
							"<tr><td align='left'>T&eacute;l&eacute;phone:&nbsp;&nbsp;</td><td>"+phone+"</td></tr>"+
							"<tr><td align='left'>T&eacute;l&eacute;copieur:&nbsp;&nbsp;</td><td>"+fax+"</td></tr>"+
							"<tr><td align='left'>Adresse &eacute;lectronique:&nbsp;&nbsp;</td><td><a href=\"mailto:"+email+"\">"+email+"</td></tr>"+
							"<tr><td align='left'>URL:&nbsp;&nbsp;</td><td><a href=\""+url+"\" target=\"_blank\">"+url+"</a></td></tr>"+
							"<tr><td colspan=2><hr /></td></tr>"+
							"</table>";
						}
						else // Default English
						{
							message += "<table cellpadding='0' cellspacing='2'>"+
							"<tr><td colspan='2'><h3>"+agency+"</h3></td></tr>"+
							"<tr><td align='right'>First Name:&nbsp;&nbsp;</td><td>"+firstName+"</td></tr>"+
							"<tr><td align='right'>Last Name:&nbsp;&nbsp;</td><td>"+lastName+"</td></tr>"+
							"<tr><td align='right'>Address:&nbsp;&nbsp;</td><td>"+address_one+"</td></tr>"+
							"<tr><td align='right'>&nbsp;&nbsp;</td><td>"+address_two+"</td></tr>"+
							"<tr><td align='right'>City:&nbsp;&nbsp;</td><td>"+city+"</td></tr>"+
							"<tr><td align='right'>Province:&nbsp;&nbsp;</td><td>"+provState+"</td></tr>"+
							"<tr><td align='right'>Postal:&nbsp;&nbsp;</td><td>"+postalZip+"</td></tr>"+
							"<tr><td align='right'>Phone:&nbsp;&nbsp;</td><td>"+phone+"</td></tr>"+
							"<tr><td align='right'>Fax:&nbsp;&nbsp;</td><td>"+fax+"</td></tr>"+
							"<tr><td align='right'>Email:&nbsp;&nbsp;</td><td><a href=\"mailto:"+email+"\">"+email+"</a></td></tr>"+
							"<tr><td align='right'>URL:&nbsp;&nbsp;</td><td><a href=\""+url+"\" target=\"_blank\">"+url+"</a></td></tr>"+
							"<tr><td colspan=2><hr /></td></tr>"+
							"</table>";
						}
						//address = address_one+", "+city+" "+provState+" "+postalZip;
						address = postalZip;
						//output += message;
						//document.getElementById('agadcopy').innerHTML=output;
							doMarker(address,message, i);
							floatOutput += '<div>';

							floatOutput += '<div class="fa_marker"><img src="/modules/mod_findagent/icon.png" id="' + i + '" onclick="GEvent.trigger(allmarkers[this.id],\'click\');" alt="" style="cursor:pointer;" /></div>';
							floatOutput += '<div class="fa_content">' + agency + '<br />' + firstName + ' ' + lastName + '<br />' + address_one + '<br />' + address_two + '<br/>' + city + '<br />' + provState + '<br />' + phone + '<br /><a href="mailto:' + email + '">' + email + '</a><br />' + url + '</div><div style="clear: both;"></div>';


							floatOutput += '</div>';

					document.getElementById('facopy').innerHTML = floatOutput;
				}
			}
		}
    }
}
function setLang(lang)
{
	this.lang = lang;
}
function getLang()
{
	return lang;
}



var posx;
var posy;
var target;

var target_x = 500;
var target_y = 150;

var has_inner = typeof(window.innerWidth) == 'number';
var has_element = document.documentElement && document.documentElement.clientWidth;

var fm_id='fa_out';
var floating_menu;
var fm_shift_x, fm_shift_y, fm_next_x, fm_next_y;
function loadFloatMenu()
{
	floating_menu = document.getElementById ? document.getElementById(fm_id) : document.all ? document.all[fm_id] : document.layers[fm_id];
	compute_shifts();
	if (document.layers)
	{
	    fm_next_x = 0;
	    fm_next_y = 0;
	}
	else
	{
	    fm_next_x = fm_shift_x + target_x;
	    fm_next_y = fm_shift_y + target_y;
	    move_menu();
	}
	float_menu();
}

function move_menu()
{
    if (document.layers)
    {
        floating_menu.left = fm_next_x;
        floating_menu.top = fm_next_y;
    }
    else
    {
        floating_menu.style.left = fm_next_x + 'px';
        floating_menu.style.top = fm_next_y + 'px';
    }
}

function compute_shifts()
{
    fm_shift_x = has_inner
        ? pageXOffset
        : has_element
          ? document.documentElement.scrollLeft
          : document.body.scrollLeft;
    if (target_x < 0)
        fm_shift_x += has_inner
            ? window.innerWidth
            : has_element
              ? document.documentElement.clientWidth
              : document.body.clientWidth;

    fm_shift_y = has_inner
        ? pageYOffset
        : has_element
          ? document.documentElement.scrollTop
          : document.body.scrollTop;
    if (target_y < 0)
        fm_shift_y += has_inner
            ? window.innerHeight
            : has_element
              ? document.documentElement.clientHeight
              : document.body.clientHeight;
}

function float_menu()
{
    var step_x, step_y;

    compute_shifts();

    step_x = (fm_shift_x + target_x - fm_next_x) * .07;
    if (Math.abs(step_x) < .5)
        step_x = fm_shift_x + target_x - fm_next_x;

    step_y = (fm_shift_y + target_y - fm_next_y) * .07;
    if (Math.abs(step_y) < .5)
        step_y = fm_shift_y + target_y - fm_next_y;

    if (Math.abs(step_x) > 0 ||
        Math.abs(step_y) > 0)
    {
        fm_next_x += step_x;
        fm_next_y += step_y;
        move_menu();
    }

    setTimeout('float_menu()', 20);
};
function getMouse(e)
{
	posx=0;posy=0;
	var ev=(!e)?window.event:e;//IE:Moz
	if (ev.pageX)
	{//Moz
		posx=ev.pageX+window.pageXOffset;
		posy=ev.pageY+window.pageYOffset;
	}
	else if(ev.clientX)
	{//IE
		posx=ev.clientX+document.body.scrollLeft;
		posy=ev.clientY+document.body.scrollTop;
	}
	else
	{
		return false
	}//old browsers
	//document.getElementById('lnk').firstChild.data='X='+posx+' Y='+posy;
	//alert(posy);
	return posy;
}
if(window.addEventListener) // Mozilla, Netscape, Firefox
{
	window.addEventListener('load', loadFloatMenu, false);
}
else // IE
{
	window.attachEvent("onload", loadFloatMenu);
}
