var geoXml ;
var map ;
var path_kml="france.kml";
var opt_global;
var opt_geo ;
var overview;
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.contains = function(t) { return this.indexOf(t) >= 0 ? true : false }
function jeval(str){
	return eval("("+str+")");
}
function ImageSize(src) {
	var newImg1 = new Image();
	newImg1.src = src;
	return {height:newImg1.height,width:newImg1.width};
}
function loadScript(callbackName, chemin_kml) {	
	path_kml = chemin_kml;
	eval(callbackName+"();");
}
function is_def(va){
	return (typeof(va) != "undefined");
}
if(!Array.indexOf){
	    Array.prototype.indexOf = function(obj){
	        for(var i=0; i<this.length; i++){
	            if(this[i]==obj){
	                return i;
	            }
	        }
	        return -1;
	    }
	}
function load_googlemap(){	
	if (GBrowserIsCompatible()) 
	{  
		map = new GMap2(cadre_map); 
		map.tab_marker_default = new Array();
		map.setCenter(new GLatLng(46.89023157359399, 4.04296875), 3);
//		overview = new GOverviewMapControl();
//		map.addControl(overview);
		map.addControl(new GMapTypeControl());
		map.addControl(new GSmallMapControl());
		map.addMapType(G_PHYSICAL_MAP);
	//	map.setMapType(G_PHYSICAL_MAP);
		map.enableScrollWheelZoom(); 
		
		chargerKML();
		GEvent.addListener(geoXml,'parsed');
	}
	else{
		alert('Votre navigateur n\'est pas compatible avec cette carte');
	}	
}
/*
function event_parsed(){
		GEvent.clearInstanceListeners(map);	
		GEvent.addListener(map, 'click',traite_marker );	
}
function traite_marker(overlay, point) {
	if(overlay && overlay.openInfoWindow){		
		if(!overlay.title || overlay.title.trim() == ""){
			var nouvo_zoom = parseInt(map.getZoom())+1;
			map.setCenter(new GLatLng(overlay.getLatLng().lat(),overlay.getLatLng().lng()),(nouvo_zoom));			
		}			
	}	
}*/

function chargerKML(){
	var s = "";
	
	if(geoXml)
	var tab_mark = new Array();
	if(geoXml == null ){
	    geoXml = new GeoXml("geoXml", map,path_kml,opt_geo);
	}
	else{
	    geoXml.url = path_kml;
	}
	geoXml.parse(); 
}
function afficheInfoWindowMarker(i){
	GEvent.trigger(geoXml.tab_marker[i],"click");
}
var currentMarker ;
var MyOverlay = function(marker, html) {
	this.marker = marker;
	this.html = html;
}
function subGPoints(a,b) {
	return new GPoint(a.x-b.x, a.y-b.y);
}    
function addGPoints(a,b) {
	return new GPoint(a.x+b.x, a.y+b.y);
} 

//retourne un tableau contenant tout les marqueurs présent dans le cadre
function setMarkerBound(include_hidden){	
var tab_marker_bound;
    if(typeof(include_hidden) == "undefined") include_hidden = true ;
	var b = map.getBounds();
	tab_marker_bound = new Array();
	var l = geoXml.tab_marker.length;
	for(var i = 0;i<l;i++){
		var m = geoXml.tab_marker[i];
		if(b.contains(m.getPoint()) && (include_hidden || (!include_hidden && !m.isHidden()))) {
			tab_marker_bound.push(m);
		}		
	}
	return tab_marker_bound ;
}

/****************** ENCODEUR /DECODEUR 64 *****************/
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
	var output = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;
	do {
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);
		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;
		if (isNaN(chr2)) {
			enc3 = enc4 = 64;
		} else if (isNaN(chr3)) {
			enc4 = 64;
		}
		output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
		keyStr.charAt(enc3) + keyStr.charAt(enc4);
	} while (i < input.length);
	return output;
}
function decode64(input) {
	var output = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;
	// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
	input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
	do {
		enc1 = keyStr.indexOf(input.charAt(i++));
		enc2 = keyStr.indexOf(input.charAt(i++));
		enc3 = keyStr.indexOf(input.charAt(i++));
		enc4 = keyStr.indexOf(input.charAt(i++));
		chr1 = (enc1 << 2) | (enc2 >> 4);
		chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
		chr3 = ((enc3 & 3) << 6) | enc4;
		output = output + String.fromCharCode(chr1);
		if (enc3 != 64) {
			output = output + String.fromCharCode(chr2);
		}
		if (enc4 != 64) {
			output = output + String.fromCharCode(chr3);
		}
	} while (i < input.length);
	return output;
}

