//setup the about images
var h2s= new Array()
h2s["switch1"]="onSpec";
h2s["switch2"]="onTime";
h2s["switch3"]="onBudget";

if (document.getElementById)
{
    $(document).ready(function()
    {
	    createAjaxLinks();
    	
	    if(document.getElementById('aboutImages'))
	    {
	        $('#about h2').hide();
	        $('#aboutText').hide();
	        document.getElementById('aboutImages').setAttribute("status",0);
	        aboutImageSetup();
	    }
    	
	    //clientDetails();
	    generateMapAddress();
        displayResponseFromCookie();
    });
}

function googleMapsApi(){
	var url = "http://maps.google.com/maps?file=api&amp;v=2&amp;key=";
	switch (window.location.host){
		case "www.arthur-mckay.co.uk":
		url += "ABQIAAAA8QaUwGHfGIV0zN14usLYOxTVnhWCzrs3deEO8pm_aDUB8qdnHBSkQiX26nnOY-TEOlE3H4MDaIgPJA";
		break;
		case "arthur-mckay.co.uk":
		url += "ABQIAAAA8QaUwGHfGIV0zN14usLYOxSbhWm0lHqO-2Lt4ClYjT213oV4OhT1fGgUtBf8ImPlJU_h30KBO3eUtg";
		break;
		case "arthur-mckay.com":
		url += "ABQIAAAA8QaUwGHfGIV0zN14usLYOxQWEzYBNBCL5dhtfaBW3ga8OpLieRRjyakUQeA5OCiwW5dR2lno9lQTmQ";
		break;
		case "arthurmckay.com":
		url += "ABQIAAAA8QaUwGHfGIV0zN14usLYOxSed_43M0kO-AJpU4Y_aaaYmSxA2RTKehXvv8GVtVw8kBdhFbun5E1UAw";
		break;
		case "www.arthurmckay.com":
		url += "ABQIAAAA8QaUwGHfGIV0zN14usLYOxQkKZLxQZ6XhZcnHbvrK9t8zNvpbhTZmygEy_3VDr3HfnIvw8EGNZWg7g";
		break;

		default : url +="ABQIAAAA8QaUwGHfGIV0zN14usLYOxQPBXQ9GODKHChpBiUZ48x6mbMprhR3CSESN25mFhygMIj-7EtiIJ51Sg";
	}
	return(url);	
}

function clientDetails(){
	$(".showClient").mouseover(function(){
	var linkParam = this.getAttribute("href").split("?");
	var link = "/client-list/ClientDetailsAjax.aspx?" + linkParam[1]; 
	getClient(link);
})
}




function aboutImageSetup(){
	$('.switch').click(function(){flickSwitch(this)});
}


function flickSwitch(lightSwitch){
	$(lightSwitch).remove();
	var ai = document.getElementById('aboutImages');
	var status = Number(ai.getAttribute("status"));
	ai.setAttribute("status", status+1);
	var h2 = '#' + h2s[lightSwitch.id];
	$(h2).show();
	checkSwitches();
}

function checkSwitches(){
	if(Number(document.getElementById('aboutImages').getAttribute("status")) >=3){
		$('#aboutText').fadeIn('slow');
	}
}

function ajaxImageNav(){
	grabFile('/home/ImageNavAjax.aspx?page=0');
}


function createAjaxLinks(){
	if(document.getElementById('imageNav')){
		// PrevLink
		var ajaxPrevLink = getLinkUrl('firstImage')[0];
		var prevLink = getLinkUrl('firstImage')[1];
		prevLink.onclick = function(){getFile(ajaxPrevLink, "prev");
                        setCookie('NavLinksPage', ajaxPrevLink, null);
			return false;
			}

		//Next Link
		var ajaxNextLink = getLinkUrl('lastImage')[0];
		var nextLink = getLinkUrl('lastImage')[1];
		nextLink.onclick = function(){getFile(ajaxNextLink, "next");
                        setCookie('NavLinksPage', ajaxNextLink, null);
			return false;
			}

	}
}

function displayInfo(newsItem){
	var selectedNewsItem;
	var div = document.getElementById('imageNav');
	var ul = div.getElementsByTagName('ul')[0];
	var li = ul.getElementsByTagName('li');
	var l = li.length;
	for ( var i = 0; i < l; ++i ){
		if(li[i].id != 'firstImage' || li[i].id != 'lastImage'){
			if(li[i].id != newsItem){
				li[i].className='';
			}else{
				li[i].className='highlight';
				selectedNewsItem = li[i];
			}
		}
	}
	var link = "/home/ImageNavAjaxAddInfo.aspx?newsItem="+selectedNewsItem.id;
	getXslt(link);
}

function getClient(file) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      displayClientDetails(request);
    };
    request.open("GET", file, true);
    request.send(null);
  }
}

function displayClientDetails(request) {
  if (request.readyState == 4) {
    if (request.status == 200 || request.status == 304) {
	$("#clientDetailsHolder").remove();
	var text = document.getElementById('text');
	text = text.getElementsByTagName('div');
	text[0].innerHTML = request.responseText + text[0].innerHTML;
	clientDetails();
	$("#close").click(function(){$("#clientDetailsHolder").remove(); return false});
	}
   }
}




function getXslt(file) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      displayNewsItem(request);
    };
    request.open("GET", file, true);
    request.send(null);
  }
}


function displayNewsItem(request) {
  if (request.readyState == 4) {
    if (request.status == 200 || request.status == 304) {
	var text = document.getElementById('text');
	text.innerHTML = request.responseText;
	}
   }
}



function getFile(file, side) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      displayResponse(request, side);
    };
    request.open("GET", file, true);
    request.send(null);
  }
}


function displayResponse(request, side) {
  if (request.readyState == 4) {
    if (request.status == 200 || request.status == 304) {
	var div = document.getElementById('imageNav');
	div.innerHTML= request.responseText + div.innerHTML;
	var ulnew = div.getElementsByTagName('ul')[0];
	var ulold = div.getElementsByTagName('ul')[1];
	if (side == "next"){
		ulnew.style.left = "762px";
		$(ulold).animate({ 
        		left:"-762px"
      		}, 600 );
		$(ulnew).animate({ 
        		left:"0"
      		}, 600 );
	}
	if (side == "prev"){
		ulnew.style.left = "-762px";
		$(ulold).animate({ 
        		left:"762px"
      		}, 600 );
		$(ulnew).animate({ 
        		left:"0"
      		}, 600);
	}
	setTimeout(function(){
	div.removeChild(ulold);
	createAjaxLinks();},1250);
    }
  }
}

function displayResponseFromCookie()
{
    var cookieValue = getCookie('NavLinksPage');
    var div = document.getElementById('imageNav');
    
    if(div != null && cookieValue != null && cookieValue != '')
    {
        var request = getHTTPObject();
        
        if (request)
        {
            request.onreadystatechange = function()
            {
                if (request.readyState == 4)
                {
                    if (request.status == 200 || request.status == 304)
                    {
                        div.innerHTML = request.responseText;
                        
                        setTimeout(function()
                        {
                            createAjaxLinks();
                        },1250);
                    }
                }
            };
            
            request.open('GET', cookieValue, true);
            request.send(null);
        }
    }
}


function getLinkUrl(linkId){
	var ajaxLinkPrefix = "/home/ImageNavAjax.aspx?";
	var li = document.getElementById(linkId);
	var link = li.getElementsByTagName('a')[0];
	var linkUrl = link.getAttribute('href');
	var linkArray = linkUrl.split('?')
	return[ajaxLinkPrefix + linkArray[1], link];
}


function addLoadEvent(func){
	var oldonload = window.onload;
	if(typeof window.onload != 'function'){
		window.onload = func;	
	} else {
		window.onload = function(){
			oldonload();
			func();
		}
	}	
}



function getHTTPObject() {
  var xhr = false;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  }
  return xhr;
}



var map;
var gdir;
var long, lat, address, showAddress;

function generateMapAddress(){
	if (document.getElementById('map')){

		var loc = $('#map').attr('class');
		switch(loc){
                        case 'Edinburgh':
                               long=55.874600;
                               lat=-3.166200;
                               address = "Arthur McKay Building Services, EH20 9LZ";
                               showAddress = "<strong>Arthur McKay Building Services</strong><br />42 Drysden Road<br />Bilston Industrial Estate<br />Loanhead<br />Edinburgh<br />EH20 9LZ";
                               break;
                        case 'Glasgow':
                               long=55.858557;
                               lat=-4.372429;
                               address = "Arthur McKay Building Services, G52 4JG";
                               showAddress = "<strong>Arthur McKay Building Services</strong><br />Cameron Court,<br />Cameron Street<br />Hillington Park<br />Glasgow<br />G52 4JG";
                               break;
                        default:
                               long=51.508003;
                               lat=-0.010432;
                               address = "Arthur McKay Building Services, E14 9RL";
                               showAddress = "<strong>Arthur McKay Building Services</strong><br />Units B6&amp;7 Poplar Business Park<br />10 Prestons Road<br />London<br />E14 9RL";
                               break;
                }
                generateMap(long,lat);
	}
}


function generateMap(long, lat) {
      if (GBrowserIsCompatible() && document.getElementById('map')) {
        map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
        map.setCenter(new GLatLng(long, lat), 13);
        map.addControl(new GMapTypeControl()); 
        map.addControl(new GOverviewMapControl());
        map.enableDoubleClickZoom();

	gdir = new GDirections(map, document.getElementById("directions"));
	GEvent.addListener(gdir, "error", handleErrors);

	var point = new GLatLng(long, lat);
	map.addOverlay(new GMarker(point));
	map.addOverlay(GetPlaceMarker());
	
	window.unload=GUnload;
      }
    }

function setDirections(fromAddress){
	var locale = "en_GB";
	var toAddress = address;
	gdir.load("from: " + fromAddress + " to: " + toAddress,
                { "locale": locale });
	//gdir.load(fromAddress + " to" + address);	
}

function setCookie(name, value, expiredays){
      var exdate = new Date();
      exdate.setDate(exdate.getDate() + expiredays);
      document.cookie = name + "=" + escape(value) +
           ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(name){
      if (document.cookie.length > 0)
      {
            c_start = document.cookie.indexOf(name + "=");
            if (c_start != -1)
            { 
                  c_start = c_start + name.length+1; 
                  c_end = document.cookie.indexOf(";", c_start);

                  if (c_end == -1) c_end = document.cookie.length;

                  return unescape(document.cookie.substring(c_start, c_end));
            } 
       }

       return "";
}


function GetPlaceMarker()
                {
                    var point = new GLatLng(long, lat);
                   var newMarker = new GMarker(point);
                
                var markerHtml = "<div class='mapBubble'>";
		markerHtml += showAddress;
		markerHtml += "</div>";

		GEvent.addListener(newMarker, "click", function()
                        {
                            newMarker.openInfoWindowHtml(markerHtml);
                        });

                        
                return newMarker;
                }

    
function handleErrors(){
	   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	     alert("No corresponding geographic location could be found. Please enter the address in the format: house number street name, city");
	   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	     alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: ");
	   
	   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	     alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.");

	//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.");
	     
	   else if (gdir.getStatus().code == G_GEO_BAD_KEY)
	     alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

	   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	     alert("A directions request could not be successfully parsed." );
	    
	   else alert("An unknown error occurred.");
	   
	}

