/**************************/
/* Media players */
var _mediaTested = false;
var _mediaHaveQuickTime = false;
var _mediaHaveWindowsMediaPlayer = false;

/* http://developer.apple.com/internet/webcontent/examples/detectplugins_source.html */
if (isInternetExplorer()) {
    document.writeln('<script language="VBscript">');

    document.writeln('\'do a one-time test for a version of VBScript that can handle this code');
    document.writeln('detectableWithVB = False');
    document.writeln('If ScriptEngineMajorVersion >= 2 then');
    document.writeln('  detectableWithVB = True');
    document.writeln('End If');

    document.writeln('\'this next function will detect most plugins');
    document.writeln('Function detectActiveXControl(activeXControlName)');
    document.writeln('  on error resume next');
    document.writeln('  detectActiveXControl = False');
    document.writeln('  If detectableWithVB Then');
    document.writeln('     detectActiveXControl = IsObject(CreateObject(activeXControlName))');
    document.writeln('  End If');
    document.writeln('End Function');

    document.writeln('\'and the following function handles QuickTime');
    document.writeln('Function detectQuickTimeActiveXControl()');
    document.writeln('  on error resume next');
    document.writeln('  detectQuickTimeActiveXControl = False');
    document.writeln('  If detectableWithVB Then');
    document.writeln('    detectQuickTimeActiveXControl = False');
    document.writeln('    hasQuickTimeChecker = false');
    document.writeln('    Set hasQuickTimeChecker = CreateObject("QuickTimeCheckObject.QuickTimeCheck.1")');
    document.writeln('    If IsObject(hasQuickTimeChecker) Then');
    document.writeln('      If hasQuickTimeChecker.IsQuickTimeAvailable(0) Then ');
    document.writeln('        detectQuickTimeActiveXControl = True');
    document.writeln('      End If');
    document.writeln('    End If');
    document.writeln('  End If');
    document.writeln('End Function');

    document.writeln('</scr' + 'ipt>');
}

function detectMediaPlayers() {
	if (_mediaTested) return;
	detectQuickTime();
	detectWindowsMediaPlayer();
	_mediaTested = true;
}

function detectWindowsMediaPlayer() {
	if (isInternetExplorer()) {
		_mediaHaveWindowsMediaPlayer = detectActiveXControl('MediaPlayer.MediaPlayer.1');
	}
	else if (navigator && navigator.plugins) {
		for (var i=0; i < navigator.plugins.length; i++ ) {
			if (navigator.plugins[i].name.indexOf("Windows Media") >= 0) {
				_mediaHaveWindowsMediaPlayer = true;
				break;
			}
		}
	}
}

function all_checked(suffix, number) {
	var i = 0;
	var loopOk = true;
	while(i < number && loopOk) {
		var d = document.getElementById(suffix + i);		
		loopOk = d.checked || !d.checked && d.disabled;
		i++;
	}
	return loopOk;
}

function at_least_one_checked(suffix, number) {
	var i = 0;
	while(i < number && !document.getElementById(suffix+i).checked) {
		i++;
	}
	return i < number;
}

function checkboxes(form, name) {
    var arr = getFormElementsByName(form, name);        
    for(var i = 0; i < arr.length; i++) {
        if (i == 0) {
            arr[i].checked = !arr[i].checked;
        } else {
            arr[i].checked = arr[0].checked;
        }
    }
}

function checkboxes_n(suffix, number, state) {
    for(var i = 0; i < number; i++) {
		var check = document.getElementById(suffix+i);
		if (check && !check.disabled) {
			check.checked = state;
		}
    }
}

function hide_n(suffix, number) {
	for(var i = 0; i < number; i++) {
		var hide = document.getElementById(suffix+i);
		if (hide) hide.style.display = 'none';
    }
}

function deploy(id) {
	var comp = document.getElementById(id);
	if (comp != null) {
		if (comp.style.display != 'none') {
			comp.setAttribute('old_display', comp.style.display);
			comp.style.display = 'none';
		} else {
			if (comp.getAttribute('old_display') != null) {
				comp.style.display = comp.getAttribute('old_display');
			}
			else {
				comp.style.display = '';
			}
		}
	}
}

function apply_opacity(elt, op) {
	if (elt.style.display != 'block') {
		elt.style.display = 'block';
	}
	elt.style.MozOpacity = op;
	elt.style.filter = "alpha(opacity=" + parseInt(op * 100) + ")";
	elt.style.opacity = op;
}

function detectQuickTime() {
	if (isInternetExplorer()) {
		_mediaHaveQuickTime = detectQuickTimeActiveXControl();
	}
	else if (navigator.plugins) {
		for (i=0; i < navigator.plugins.length; i++ ) {
			if (navigator.plugins[i].name.indexOf("QuickTime") >= 0) {
				_mediaHaveQuickTime = true;
				break;
			}
		}
	}
}

function showMedia(mediaUrl, mediaExt, mediaId) {
	var elem = document.getElementById(mediaId);
	if (!elem) return "Missing div element";
	
	/* navigateurs */
	var opera = isOpera();
	var ie = isInternetExplorer();
	
	/* type et dimensions */
	var video = new Array('mov', '3gp', 'avi', 'wmv', 'mp4');
	var width = 100;
	var height;
	var mediaType;
	if (inArray(mediaExt, video)) {
		height = 100;
		mediaType = "video";
	}
	else {
		height = 20;
		mediaType = "audio";
	}
	
	/* extensions par player */
	var quicktime = new Array('mov', '3gp', 'wav', 'mp3');
	var windowsmediaplayer = new Array('avi', 'wav', 'mp3', 'wmv', 'mp4');
	
	/* Audio Opera avec Quicktime */
	if (opera && _mediaHaveQuickTime && mediaType == 'audio') {
		elem.innerHTML =
			'<embed src="'+mediaUrl+'" width="'+width+'" height="'+height+'" autoplay="'+false+'"/>';
	}		
	/* Quicktime */
	else if (_mediaHaveQuickTime && inArray(mediaExt, quicktime) ) {
		elem.innerHTML = 
			"<object classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\""+
			(ie ? " width=\"" + width + "\" height=\"" + height + "\"" : "") +
			" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\">" +
    		"<param name=\"src\" value=\"" + mediaUrl + "\"/>" +
    		"<param name=\"href\" value=\"" + mediaUrl + "\"/>" +
			"<param name=\"controller\" value=\"true\"/>" +
    		"<param name=\"autoplay\" value=\"false\"/>" +
    		(mediaType == "video" ? "<param name=\"scale\" value=\"aspect\"/>" : "") +
    		"<object type=\""+
    		(mediaType == "video" ? "video/quicktime" : "audio/x-wav") + 
    		"\" data=\"" + mediaUrl + "\""+
    		(!ie ? " width=\"" + width + "\" height=\"" + height + "\"" : "") +
    		" class=\"" + mediaExt + "\">" +
    		"<param name=\"href\" value=\"" + mediaUrl + "\"/>" +
			"<param name=\"controller\" value=\"true\"/>" +
    		"<param name=\"autoplay\" value=\"false\"/>" +
    		(mediaType == "video" ? "<param name=\"scale\" value=\"aspect\"/>" : "") +
    		"Failed initializing quicktime player<br/>(plugin: " + _mediaHaveQuickTime + ", ext: "+mediaExt+")"+
    		"</object>" +
    		"</object>";
	}
	/* Windows Media Player */
	else if (_mediaHaveWindowsMediaPlayer && inArray(mediaExt, windowsmediaplayer) && !(opera && mediaType == 'audio') ) {
		if (mediaType == 'audio') {
			if (ie) {
				height += 45;
				width += 60;
			}
			else {
				height += 25;
				width += 70;
			}
		}
		
		if (ie) {
			elem.innerHTML = 
				"<object classid=\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\""+
				" width=\"" + width + "\" height=\"" + height + "\"" +
	    		" type='application/x-mplayer2'>" +
	    		"<param name=\"url\" value=\"" + mediaUrl + "\"/>" +
	    		"<param name='uiMode' value='mini'/>"+
	    		"<param name=\"autoStart\" value=\"false\"/>" +
	    		(mediaType == "video" ? "<param name=\"stretchToFit\" value=\"true\"/>" : "") +
	    		"Failed initializing windows media player<br/>(plugin: " + _mediaHaveWindowsMediaPlayer + ", ext: "+mediaExt+")"+
	    		"</object>";
		}
		else {
			elem.innerHTML = 
				"<object classid=\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\">" +
	    		"<object type='application/x-mplayer2' data=\"" + mediaUrl + "\""+
	    		" width=\"" + width + "\" height=\"" + height + "\"" +
	    		">" +
	    		"<param name=\"src\" value=\"" + mediaUrl + "\"/>" +
	    		"<param name=\"autostart\" value=\"0\"/>" +
	    		"<param name=\"uiMode\" value=\"0\"/>" +
	    		"Failed initializing windows media player<br/>(plugin: " + _mediaHaveWindowsMediaPlayer + ", ext: "+mediaExt+")"+
	    		"</object>" +
	    		"</object>";
	    }
	}
	else {
		elem.innerHTML = "<em class='textSmall'>(no player for "+mediaExt+")</em>";
	}
}

/**************************/
function isOpera() {
	return navigator.userAgent.indexOf('Opera') != -1;
}

function isInternetExplorer() {
	return (navigator.userAgent.indexOf('MSIE') != -1) && (navigator.userAgent.indexOf('Win') != -1);
}

function isMozilla() {
	return 
		("" + navigator.userAgent).toLowerCase().indexOf('mozilla') != -1 &&
		!isInternetExplorer();
}

function isSafari() {
	 return ("" + navigator.userAgent).toLowerCase().indexOf('safari') > 0
}

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure.
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}


/**************************/
var cssCacheValues = new Array;
var cssCacheRules = new Array;

function getCssProperty(ruleName, property) {
	for(var c = 0; c < cssCacheRules.length; c++) {
		if (cssCacheRules[c] == ruleName + '_' + property) {
			return cssCacheValues[c];
		}
	}	
	
	for(var i = 0; i < document.styleSheets.length; i++) {
		var rules = document.styleSheets.item(i);
		rules = rules.cssRules ? rules.cssRules : rules.rules;
		for (var j = 0; j < rules.length; j++) {
			if (rules.item(j).selectorText && rules.item(j).selectorText.indexOf(ruleName) >= 0) {
				var r = null;
				eval('r = rules.item(j).style.' + property + ';');
				if (r && r != null) {
					cssCacheRules.push(ruleName + '_' + property);
					cssCacheValues.push(r);
					return r;
				}
			}
		}
	}
	return null;
}
/**************************/

function burstBubble(e) {
	var ev;
	if (!e) ev = window.event;
	else ev = e;
	ev.cancelBubble = true;
	if (ev.stopPropagation) ev.stopPropagation();
}

function inArray(elem, arr) {
	var found = false;
	var i = 0;
	while(!found && i < arr.length) {
		found = arr[i] == elem;
		i++;
	}
	return found;
}

function getScreenWidth() {
	if (navigator.appName.indexOf("Microsoft") != -1) {
        if (window.clientInformation.width) return window.clientInformation.width;
		if (document.documentElement.clientWidth) return document.documentElement.clientWidth;
        return document.body.clientWidth;		
    } else {
        var netscapeScrollWidth=15;
        return window.innerWidth - netscapeScrollWidth;
    }
}

function getScreenHeight() {
	if (navigator.appName.indexOf("Microsoft") != -1) {
		if (window.clientInformation.height) return window.clientInformation.height;
		if (document.documentElement.clientHeight) return document.documentElement.clientHeight;
		return document.body.clientHeight;		
    } else {
        return window.innerHeight;
    }
}

function hex2dec(hex) {
	var h = hex.toLowerCase();
	var p = h.indexOf('0x');
	if (p >= 0) {
		h = h.substring(p + 1);
	}
	var ref = '0123456789abcdef';
	var res = 0;
	var start = h.length - 1;
	for(var i = start; i >= 0; i--) {
		res += ( ref.indexOf(h.charAt(i)) *  Math.pow(16, start - i ) );
	}
	
	return res;
}

function InfoBox(id, show, event/*, time*/) {
    /*if (id == null) return false;*/
    var ibox = document.getElementById(id);
    if (!ibox) return false;
    /* foutus browsers incapables de parler la m�me langue */
    /* http://www.quirksmode.org/js/events_properties.html */
    var x = 0;    
    var y = 24;    
    var posx = 0;
	var posy = 0;    
	if (event.pageX || event.pageY) {
		posx = event.pageX;
		posy = event.pageY;
	}
	else /*if (event.clientX || event.clientY)*/ {
		posx = event.clientX + document.body.scrollLeft;
		posy = event.clientY + document.body.scrollTop;
	}    
    x += posx;
    y += posy;        
    /*if (ibox) { != null && ibox != 'undefined') {*/
        if (show) {
            /*if (ibox.style.display != 'block' && time > 0) {
                clearTimeout(infoBoxTimeOut);
                infoBoxTimeOut = setTimeout("_DispInfoBox('"+ibox.id+"', "+x+", "+y+")", time);   
            }
            else {
                _DispInfoBox(ibox.id, x, y);
            }*/
            ibox.style.left = x + 'px';
	        ibox.style.top = y + 'px';
	        ibox.style.display = 'block';
        }
        else {
            /*clearTimeout(infoBoxTimeOut);*/
            ibox.style.display = 'none';
        }
    /*}*/
    return true;
}
/*
function _DispInfoBox(id, x, y) {
    var ibox = document.getElementById(id);
    if (ibox != null) {
        ibox.style.left = x + 'px';
        ibox.style.top = y + 'px';
        ibox.style.display = 'block';
    }
}*/

function getElementLeft(elmID) {
	var obj = document.getElementById(elmID);
	if (!obj) return 0;
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x){
		curleft += obj.x;
	}
	return curleft;
}

function getElementTop(elmID) {
	var obj = document.getElementById(elmID);
	if (!obj) return 0;
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getElementHeight(elmID) {
	var elem = document.getElementById(elmID);
	if (elem) {
		if(elem.clientHeight) {
			return elem.clientHeight;
		}
		
		if(elem.offsetHeight) {
			return elem.offsetHeight;
		}
		
			
	}
	return 0;
}

function getElementWidth(elmID) {
	var elem = document.getElementById(elmID);
	if (elem) {
		if (elem.scrollWidth) {
			return elem.scrollWidth;
		}
		
		if (elem.clientWidth) {
			return elem.clientWidth;
		}
		
		if (elem.offsetWidth) {
			return elem.offsetWidth;
		}
		
		var w = null;
		
		if (elem.className) {
			w = getCssProperty(elem.className, 'width');			
		}
		if (!w && elem.style && elem.style.width) {
			w = style.width;
		}
		
		if (w) {
			return w.replace(/[^0-9]/g, '');
		}
	}
	return 0;
}

function getFormElementsByName(form, name) {
    var tab;
    var ev = "";
    for(var i = 0; i < form.elements.length; i++) {
        if (form.elements[i].name == name) {
            if (ev == "") {
                ev = "tab = new Array(";   
            }
            else {
                ev += ", ";
            }
            ev += "form.elements["+i+"]";
        }
    }
    ev += ");";
    eval(ev);
    return tab;
}


function GetCookieVal(offset) {
	var endstr=document.cookie.indexOf (";", offset);
	if (endstr==-1) endstr=document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
function ReadCookie(nom) {
	var arg=nom+"=";
	var alen=arg.length;
	var clen=document.cookie.length;
	var i=0;
	while (i<clen) {
		var j=i+alen;
		if (document.cookie.substring(i, j)==arg) return GetCookieVal(j);
		i=document.cookie.indexOf(" ",i)+1;
		if (i==0) break;
	}
	return null;
}
/* http://www.actulab.com/ecrire-les-cookies.php */
function WriteCookie(nom, valeur) {
    var argv = arguments;
    var argc = arguments.length;
    
    var date=new Date;
    date.setDate(date.getDate()+ (365 * 5));
    var expires = date;
    
    var path=(argc > 3) ? argv[3] : null;
    var domain=(argc > 4) ? argv[4] : null;
    var secure=(argc > 5) ? argv[5] : false;
    
    document.cookie=nom+"="+escape(valeur)+
    ((expires==null) ? "" : ("; expires="+expires.toGMTString() ))+
    ((path==null) ? "" : ("; path="+path))+
    ((domain==null) ? "" : ("; domain="+domain))+
    ((secure==true) ? "; secure" : "");
}

function trim(chaine) { 
	return chaine.replace(/(^\s*)|(\s*$)/g, "");
}

var calendarsI = new Array;
var calendarsV = new Array;
function getCalendar(elemId) {
	var cal = null;
	var i = 0;
	while(cal == null && i < calendarsI.length) {
		if (calendarsI[i] == elemId) {
			cal = calendarsV[i];
		}
		else {
			i++;
		}
	}

	if (cal == null) { 
		cal = new CalendarPopup('calendar_popup_zone');
		cal.setCssPrefix('calendar_');
		calendarsI.push(elemId);
		calendarsV.push(cal);
	}
	
	return cal;
}
function openCalendar(elemId, format) {
	var cal = getCalendar(elemId);	 
	cal.select(document.getElementById(elemId), 'anchor_field_' + elemId, format);
}

// http://blog.vishalon.net/Post/57.aspx
function getCaretPosition (ctrl) {
	var CaretPos = 0;
	// IE Support
	if (document.selection) {

		ctrl.focus ();
		var Sel = document.selection.createRange ();

		Sel.moveStart ('character', -ctrl.value.length);

		CaretPos = Sel.text.length;
	}
	// Firefox support
	else if (ctrl.selectionStart || ctrl.selectionStart == '0')
		CaretPos = ctrl.selectionStart;

	return (CaretPos);
}
// http://blog.vishalon.net/Post/57.aspx
function setCaretPosition(ctrl, pos) {

	if(ctrl.setSelectionRange)
	{
		ctrl.focus();
		ctrl.setSelectionRange(pos,pos);
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
}

function highlightRowAndColumnHeads(element,table,col){
	element.className += " highlight_nobold";
	element.parentNode.firstChild.className += " highlight_nobold";
	document.getElementById('element_'+table+'_'+col).className += " highlight_nobold";
}

function downlightRowAndColumnHeads(element,table,col){
	element.className = "";
	element.parentNode.firstChild.className = element.parentNode.firstChild.className.replace("highlight_nobold", "");
	document.getElementById('element_'+table+'_'+col).className = document.getElementById('element_'+table+'_'+col).className.replace("highlight_nobold", "");
}

function hideSubformPopup() {
	disablePopup();  
	/*
	//Edited By Sebastien Clement, May 28 2009:
	//Next function should not be usefull anymore as a div is display between the page and the popup
	//Check if everything's ok before deleting code
	//setDocumentEnable(true, 'ancre_subform');

	document.getElementById('ancre_subform').style.display='none';
	
	//document.getElementById('div_body').className = 'div_body_enabled';
	document.getElementById('overlay').style.display = 'none';    
    _bodyDisabled = false;
	*/
}

function showSubformPopup() {
	//centering with css  
	centerPopup(); 

	//Click out event!  
	$("#overlay").click(function(){  
		disablePopup();  
	});  
	//Press Escape event!  
	$(document).keypress(function(e){  
		if(e.keyCode==27 && popupStatus==1){  
			disablePopup();  
		}  
	});  	
	var bodyheight = document.body.clientHeight + 20;
	if(bodyheight>screen.height)
		document.getElementById('overlay').style.height = bodyheight +'px';
	document.getElementById('ancre_subform').style.marginTop = getScrollPosition()[1]+'px';
	
	//load popup  
	loadPopup();
	
	/*
	//Edited By Sebastien Clement, May 28 2009:
	//Next function should not be usefull anymore as a div is display between the page and the popup
	//Check if everything's ok before deleting code
	//setDocumentEnable(false, 'ancre_subform');

	//document.getElementById('div_body').className = 'div_body_disabled';
	
	var bodyheight = document.body.clientHeight + 100;
	if(bodyheight>screen.height)
		document.getElementById('overlay').style.height = bodyheight +'px';
	document.getElementById('overlay').style.display = 'block';
	
	var ancre = document.getElementById('ancre_subform');
	ancre.style.display = 'block';
	ancre.style.marginLeft = ((getElementWidth('root_body') - getElementWidth('form_table') ) / 2) + 'px';
	ancre.style.marginTop = getScrollPosition()[1]+'px';
	
    _bodyDisabled = true;	
	*/
}

var popupStatus = 0;
function centerPopup(){  
	//request data for centering  
	var windowWidth = document.documentElement.clientWidth;  
	var windowHeight = document.documentElement.clientHeight;  
	var popupHeight = $("#ancre_subform").height();  
	var popupWidth = $("#ancre_subform").width();  
	//centering  
	var top = windowHeight/2-popupHeight/2;
	var left = windowWidth/2-popupWidth/2;
	if(top<10) top=10;
	if(left<10) left=10;
	$("#ancre_subform").css({  
		"position": "absolute",  
		"top": top,  
		"left": left  
	});  
	//only need force for IE6  
	  
	$("#overlay").css({  
		"height": windowHeight  
	});  
	  
}  

function loadPopup(){  
	//loads popup only if it is disabled  
	if(popupStatus==0){  
		$("#overlay").css({  
			"opacity": "0.7"  
		});  
		$("#overlay").fadeIn("slow");  
		$("#ancre_subform").fadeIn("slow");  
		popupStatus = 1;  
	}  
}

function disablePopup(){  
	//disables popup only if it is enabled  
	if(popupStatus==1){  
		$("#overlay").fadeOut("slow");  
		$("#ancre_subform").fadeOut("slow");  
		popupStatus = 0;  
	}  
}  

function getScrollPosition()
{
    return Array((document.documentElement && document.documentElement.scrollLeft) || window.pageXOffset || self.pageXOffset || document.body.scrollLeft,(document.documentElement && document.documentElement.scrollTop) || window.pageYOffset || self.pageYOffset || document.body.scrollTop);
}

var map;
var map_api = "googlemap";
var directionDisplay;
var directionsService;

var new_markers = new Array;
var old_markers = new Array;
var hidden_markers = new Array();
var infowindow;
function add_marker_to_map(map_id, latitude, longitude, comments, icon, rememberMarker, id, draggable, custom_icon, icon_class){
	var marker = null;
	
	if(rememberMarker && id!="" && id!=0 && (old_markers[map_id]!=undefined && old_markers[map_id][id]!=undefined || hidden_markers[map_id]!=undefined && hidden_markers[map_id][id]!=undefined)){
		if(hidden_markers[map_id][id]!=undefined){
			//if(hidden_markers[map_id][id].getIcon() != icon)
			//	hidden_markers[map_id][id].setIcon(icon);
			if(map_api=="googlemap"){
				hidden_markers[map_id][id].setMap(map);
			}
			else if(map_api=="bing"){
				hidden_markers[map_id][id].Show();
			}
			
			new_markers[map_id][id] = hidden_markers[map_id][id];
			delete hidden_markers[map_id][id];
		}
		else{
			//if(old_markers[map_id][id].getIcon() != icon)
			//	old_markers[map_id][id].setIcon(icon);
			new_markers[map_id][id] = old_markers[map_id][id];
			delete old_markers[map_id][id];
		}
		marker = new_markers[map_id][id];
	}
	else{
		if(map_api=="googlemap" && typeof(google) != 'undefined') {
			point = new google.maps.LatLng(latitude, longitude);
			marker = new google.maps.Marker({
				map: map,
				position: point, 
				title: comments,
				icon:icon,
				draggable:draggable
			});
			google.maps.event.addListener(marker, 'click', function() {
				if (infowindow) {
					infowindow.close();
				}
				infowindow = new google.maps.InfoWindow({ 
				    content: comments,
			        size: new google.maps.Size(50,50),
			        position: new google.maps.LatLng(latitude, longitude)
			    });
			  	infowindow.open(map);
			});	
		}
		else if(map_api=="bing"){
			point = new VELatLong(latitude, longitude);
			marker = new VEShape(VEShapeType.Pushpin, point);
			marker.SetTitle(comments);
	        if(icon != "")
	        	marker.SetCustomIcon('<img src="'+icon+'" alt="Pushpin" class="'+icon_class+'"/>');
	        if(custom_icon != "")
	        	marker.SetCustomIcon(custom_icon);
	        marker.Draggable = draggable;
	        map.AddShape(marker);
		}
		
		if(rememberMarker && id!="" && id!=0 && marker){
			if(new_markers[map_id] == undefined)
				new_markers[map_id] = new Array;
			new_markers[map_id][id] = marker;
		}
	}
	return marker;
}
function remove_old_markers(map_id){
	for(i in old_markers[map_id]){
		if(old_markers[map_id][i]!=undefined){
			if(map_api=="googlemap"){
				old_markers[map_id][i].setMap(null);
			}
			else if(map_api=="bing"){
				old_markers[map_id][i].Hide();
			}
			hidden_markers[map_id][i] = old_markers[map_id][i];
		}
	}
}

function hide_bing_maps_directions_shapes(route)
{
  // Unroll route and populate DIV
  var legs = route.RouteLegs;
  var leg = null;
  var legItinerary = null;

  for (var i = 0; i < legs.length; i++) {
	    leg = legs[i];
	    legItinerary = leg.Itinerary;
	    
	    for (var j = 0; j < legItinerary.Items.length; j++) {
	          legItinerary.Items[j].Shape.Hide(); 
	    }
	}
}

function bing_map_resize(){
	map.Resize();
	var width = $('#gpsmap_frame').width();
	if($('#gpsmap_arbo').css('position') != "absolute"){
		width -= $('#gpsmap_arbo').width();
	}
	map.Resize(width, $('#gpsmap_map').height());
}

function ReplaceAll(Source, stringToFind, stringToReplace){
	var temp = Source;
	var index = temp.indexOf(stringToFind);
	while(index != -1){
	    temp = temp.replace(stringToFind,stringToReplace);
	    index = temp.indexOf(stringToFind);
	}
	return temp;
}