/* Google Maps (http://code.google.com/apis/maps/documentation/v3/examples/index.html)
---------------------------------------------------------------- */

var googlemaps = function(){
	var geocoder, map, bubble = '', paradd = '';
	return {
		initialize:function(add,fid,tools){
			geocoder = new google.maps.Geocoder();
			var latlng = new google.maps.LatLng(-34.397, 150.644);
			var _tools = false;
			if(!tools){_tools=false;}else{_tools=true;}
			var myOptions = {
				zoom: 15,
				center: latlng,
				disableDefaultUI: _tools,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			}
			var _fid = '';
			if(!fid){_fid='map_canvas';}else{_fid=fid;}
			map = new google.maps.Map(document.getElementById(_fid), myOptions);
			googlemaps.show(add);
		},
		show:function(add){
			var address = add;
			if(geocoder){
				geocoder.geocode({ 'address': address}, function(results, status){
					if(status == google.maps.GeocoderStatus.OK){
						map.setCenter(results[0].geometry.location);
						var image = 'gfx/googlemaps_marker.png';
						var marker = new google.maps.Marker({map: map, icon: image, position: results[0].geometry.location});
						if(bubble){
							var bub = document.getElementById(bubble+'_info');
							if(bub){
								var str = bub.innerHTML;
								var infowindow = new google.maps.InfoWindow({content: str});
								google.maps.event.addListener(marker, 'click', function(){infowindow.open(map,marker);});
								
								// Add static map to print
								var sta = document.getElementById('map_static_large');
								if(sta){
									var _add = add; var addhtml = '<div class="printaddress"><div class="inn">'+paradd+'</div></div>';
									_add = _add.replace(/ /gi, '+');
									var _static = '<img src="http://maps.google.com/maps/api/staticmap?center='+_add+'&zoom=15&size=650x520&maptype=roadmap&markers=size:mid|color:blue|'+_add+'&sensor=false&key=ABQIAAAAeAGTVl3etSVg_27n3ekj5RRbaaWroq0aHcmfIpsyflpCDggaTxQWHAYlOmeFpn78BWNGtUwVkvH7fA" alt="" />';
									document.getElementById('map_static_large').innerHTML = _static + addhtml;
								}
							}
						}
						
					}else{
						alert("Geocode was not successful for the following reason: " + status);
					}
			  });
			}
		},
		multiple:function(command,location,info,print){
			var elm = document.getElementById('pop');
			var abs = document.getElementById('abs');
			var canvas = document.getElementById('map_canvas_large');
			if(elm){
				paradd = print;
				if(info){bubble = info;}else{bubble = '';}
				if(command=='show'){
					showDark();
					elm.style.display = 'block';
					var elms = library.documentdimensions();
					var _elms = elms.split('/');
					var elmW = parseInt(_elms[0]);
					var elmH = parseInt(_elms[1]);
					var posr = library.windowscrollxy();
					var _posr = posr.split('/');
					var elmX = parseInt(_posr[0]);
					var elmY = parseInt(_posr[1]);
					if(abs){if(elmH<650){abs.style.top = (elmY + 20) + 'px';}else{abs.style.top = (((elmH / 2) - 325) + elmY) + 'px';}}
					if(canvas.innerHTML==''){googlemaps.initialize(location,'map_canvas_large');}
					googlemaps.printable('hide');
				}
				if(command=='hide'){
					elm.style.display = 'none';
					killDark();
					googlemaps.printable('show');
				}
			}
		},
		multiplechange:function(f,location,info,print){
			var tc = document.getElementById('mapx-locations');
			var sa = tc.getElementsByTagName('a');
			var current = sa.length;
			for(var d=0;d<current;d+=1){
				if(sa[d].className=='lmp-set' || sa[d].className=='lmp-def'){
					sa[d].className = 'lmp-def';
				}
			}
			paradd = print;
			// Set to active, change location
			f.className = 'lmp-set';
			if(info){bubble = info;}else{bubble = '';}
			googlemaps.initialize(location,'map_canvas_large');
		},
		fixtop:function(){
			var elm = document.getElementById('pop');
			var abs = document.getElementById('abs');
			if(abs){
				if(elm.style.display=='block'){
					var elms = library.documentdimensions();
					var _elms = elms.split('/');
					var elmW = parseInt(_elms[0]);
					var elmH = parseInt(_elms[1]);
					var posr = library.windowscrollxy();
					var _posr = posr.split('/');
					var elmX = parseInt(_posr[0]);
					var elmY = parseInt(_posr[1]);
					if(elmH<650){abs.style.top = (elmY + 20) + 'px';}else{abs.style.top = (((elmH / 2) - 325) + elmY) + 'px';}
				}
			}
		},
		printable:function(f){
			var items = document.getElementsByTagName('div');
			var current = items.length;
			for(d=0;d<current;d+=1){
				var str = items[d].className;
				if(str.indexOf('content')!=-1){
					if(f=='hide'){
						items[d].className='content no-print';
					}else{
						items[d].className='content';
					}
				}
			}
		}
	};
}();


/* Alpha google maps */
function multiple(command, map, linkIdToHighlight, considerMapsize){
    var map = map;
	var elm = document.getElementById('pop');
	var abs = document.getElementById('abs');
	var canvas = document.getElementById(map);

	
	if(elm){
	    if(command=='show'){
		    showDark();
		    elm.style.display = 'block';
		    var elms = library.documentdimensions();
		    var _elms = elms.split('/');
		    var elmW = parseInt(_elms[0]);
		    var elmH = parseInt(_elms[1]);
		    var posr = library.windowscrollxy();
		    var _posr = posr.split('/');
		    var elmX = parseInt(_posr[0]);
		    var elmY = parseInt(_posr[1]);
		    if(abs){if(elmH<650){abs.style.top = (elmY + 20) + 'px';}else{abs.style.top = (((elmH / 2) - 325) + elmY) + 'px';}}
		    if(canvas.innerHTML!=''){canvas.innerHTML=='';}
		    if (linkIdToHighlight) {
		        LinkStyle(linkIdToHighlight);
		    }
		    else{
                LinkStyle('');
            }
            setTimeout('ChangeMapFocus("' + map + '")', 50);

			if(considerMapsize != 'false') 
			{
			    if(map=="map_canvas_large2"){
					ShowOnlyMain(true);
				}
				else
				{
					ShowOnlyMain(false);
				}  
			}
			googlemaps.printable('hide');
	    }
	    if(command=='hide'){
		    elm.style.display = 'none';
		    killDark();
			googlemaps.printable('show');
	    }		
    }
}

/* ALPHA - used for printing google maps  */
function FindActiveAddresses() 
{
	var ni = document.getElementById('addressprint');
	ni.innerHTML = '';
	
	var newdiv = document.createElement('div');
	newdiv.setAttribute('id','selectedAddresses');


	var leftSelected = false;
	var mapselected = false;	
	var addresses = '';
	
	var maplocations = document.getElementById('mapx-locations').getElementsByTagName('a');
	for(i = 0; i < maplocations.length; i++) 
	{
		if(maplocations[i].className == 'lmp-set') 
		{
			var address = maplocations[i].innerHTML;
			address = address.replace(/\<STRONG>/g, '');
			address = address.replace(/\<\/STRONG>/g, '');
			address = address.replace(/<A[^<]+?<\/A>/g, '');
			address = address.replace(/\<BR>/g, ' ');				
			addresses = addresses + address;
			leftSelected = true;
		}		
		newdiv.innerHTML = addresses;	
	}			

	if(leftSelected == false) 
	{
		var mappointsselected = document.getElementById('map_canvas_large').getElementsByTagName('div');
		for(i = 0; i < mappointsselected.length; i++) 
		{		
			if(mappointsselected[i].className == 'gmapinfo') 
			{
				var address = mappointsselected[i].innerHTML;
				address = address.replace(/\<STRONG>/g, '');
				address = address.replace(/\<\/STRONG>/g, '');
				address = address.replace(/<A[^<]+?<\/A>/g, '');
				address = address.replace(/\<BR>/g, ' ');				
				addresses = addresses + address;
				mapselected = true;
			}		
			newdiv.innerHTML = addresses;	

		}		
	}


	if(leftSelected == false && mapselected == false)
	{
		var allmappoints = document.getElementById('pop').getElementsByTagName('a');
		for(i = 0; i < allmappoints.length; i++) 
		{
			if(allmappoints[i].id.substring(6,0) == 'marker' ) 
			{
				var address = allmappoints [i].innerHTML;
				address = '<p>' + address.replace(/\<STRONG>/g, '');
				address = address.replace(/\<\/STRONG>/g, '');
				address = address.replace(/<A[^<]+?<\/A>/g, '');
				address = address.replace(/\<BR>/g, ' ');				
				addresses = addresses + address + '</p>';
			}		
			newdiv.innerHTML = addresses;			
		}				
	}

	ni.appendChild(newdiv);
}
/* ALPHA - used for printing google maps   */


function ChangeMapFocus(map)
{
	var mapName = map;
	
	if(mapName=='map_canvas_large2'){
	document.getElementById('map_canvas_large').style.display = 'none';
	document.getElementById('map_canvas_large2').style.display = 'block';
	}
	else{
	document.getElementById('map_canvas_large').style.display = 'block';
	document.getElementById('map_canvas_large2').style.display = 'none';
	};
	
	mapInit(map,false);
}

function LinkStyle(link) {
    var linkID = link;
    var x = document.getElementsByName('mapListLink');
    for (i = 0; i < x.length; i++) {
		document.getElementsByName('mapListLink')[i].className='lmp-def';       		
    }
    if (linkID != '') {
        SelectedLink(linkID);
    }
}

function SelectedLink(linkID) {
	document.getElementById(linkID).className='lmp-set';
}

function changeFocus(map, lat1, lng1, lat2, lng2) { 
	var latLng1 = new google.maps.LatLng(lat1, lng1);
    var latLng2 = new google.maps.LatLng(lat2, lng2);
    map.fitBounds(new google.maps.LatLngBounds(latLng1, latLng2));
}


/* Library
---------------------------------------------------------------- */

var library = function(){
	return {
		elementposition:function(obj){
			var curleft=curtop=0;
			if (obj.offsetParent){
				curleft=obj.offsetLeft;
				curtop=obj.offsetTop;
				while(obj=obj.offsetParent){
					curleft+=obj.offsetLeft
					curtop+=obj.offsetTop
				}
			}
			return curleft+'/'+curtop;
		},
		cursorposition:function(e){
			e = e || window.event;
		    var cursor = {x:0, y:0};
		    if(e.pageX || e.pageY){
		        cursor.x = e.pageX;
		        cursor.y = e.pageY;
		    }else{
		        var de = document.documentElement;
		        var b = document.body;
		        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
		        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
		    }
		    return cursor.x+'/'+cursor.y;
		},
		documentdimensions:function(){
			var myWidth = 0, myHeight = 0;
			if(typeof(window.innerWidth)=='number'){
				myWidth = window.innerWidth;
				myHeight = window.innerHeight;
			}else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
				myWidth = document.documentElement.clientWidth;
				myHeight = document.documentElement.clientHeight;
			}else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
				myWidth = document.body.clientWidth;
				myHeight = document.body.clientHeight;
			}
			return myWidth+'/'+myHeight;
		},
		windowscrollxy:function(){
			var scrOfX = 0, scrOfY = 0;
			if(typeof(window.pageYOffset)=='number'){
				scrOfY = window.pageYOffset;
				scrOfX = window.pageXOffset;
			}else if(document.body &&(document.body.scrollLeft||document.body.scrollTop)){
				scrOfY = document.body.scrollTop;
				scrOfX = document.body.scrollLeft;
			}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){
				scrOfY = document.documentElement.scrollTop;
				scrOfX = document.documentElement.scrollLeft;
			}
			return scrOfX+'/'+scrOfY;
		}
	};
}();

var selectmultiple = function(){
	return {
		add:function(from,to){
			var m1 = document.getElementById(from);
			var m2 = document.getElementById(to);
			if(m1){
				if(m2){
					var m1len = m1.length;
				    for(var i=0;i<m1len;i++){
				        if(m1.options[i].selected==true){
				            m2len = m2.length;
				            m2.options[m2len]= new Option(m1.options[i].text);
				        }
				    }
				    for(i=(m1len-1);i>=0;i--){
				        if(m1.options[i].selected==true){
				            m1.options[i] = null;
				        }
				    }
				}
			}
		},
		remove:function(from,to){
			var m1 = document.getElementById(from);
			var m2 = document.getElementById(to);
		    if(m1){
				if(m2){
					var m2len = m2.length;
					for(var i=0;i<m2len;i++){
						if(m2.options[i].selected==true){
							m1len = m1.length;
							m1.options[m1len]= new Option(m2.options[i].text);
						}
					}
					for(i=(m2len-1);i>=0;i--){
						if(m2.options[i].selected==true){
							m2.options[i] = null;
						}
					}
				}
			}
		},
		fill:function(from,val,txt){
			var m1 = document.getElementById(from);
			if(m1){
				
				var _opt = document.createElement('option');
				_opt.text = txt;
				_opt.value = val;
				
				try{
					m1.add(_opt, null);
				}catch(ex){
					m1.add(_opt);
				}
				
			}
		},
		reset:function(from){
			var m1 = document.getElementById(from);
			for(var i = m1.length-1;i>=0;i--){
				m1.remove(i);
			}
		}
	};
}();

window.onscroll = function(){
	var elm = document.getElementById('pop');
	if(elm){
		if(elm.style.display=='block'){
			setTimeout("googlemaps.fixtop();", 500);
		}
	}
}


