/* external loader.js
	J. Kalikstein 01/22/2007
	This is the code that any page embedding the route engine includes.
	It can be loaded by external sites (i.e. cross-domain) 

	COPYRIGHT 2007, MapMyFitness LLC
*/

var MMF_CREATE_PAGE = "create";
var MMF_EDIT_PAGE = "edit";
var MMF_VIEW_PAGE = "view";
var MMF_COBRAND_PAGE = "cobrand";
var MMF_PARTNER_TOOL = "partner_tool";

function mmfInit(id, page) {
	var args = [];

	if(page.indexOf('?') >= 0) {
		// parameters have been passed in
	} else {
	
		args.push('p=' + escape(window.location.href));

		var the_cookie = document.cookie.split(';');
			
		for(var i=0; i<the_cookie.length; i++) {
			var s = the_cookie[i];
			if(s.indexOf("mmrun_user") >= 0) {
				var mmrun_user;
				eval(unescape(s));
				try{
					if(mmrun_user.user_id > 0) {
						args.push('u=' + mmrun_user.user_id);
					}
				}catch(err) {
				}
			} else {
				//alert('nope: ' + s);
			}
		}
	}
	if(typeof(mmf_parms) != 'undefined') {
		args.push('mmf_parms=', mmf_parms);
	}

	// Automaticlly determin the base URL
	var scripts = document.getElementsByTagName("script");
	var urlBase = "http://ws.mapmyfitness.com/route_engine/2/engine/";
	for(var i=0; i < scripts.length; i++) {
		var s=scripts[i];
		var strScriptSrc = s.src;
		var idx = s.src.indexOf("ws.mapmyfitness.com/route_engine");
		if(idx > 0 && idx < 10) { 
			// < make the ws instance is  towrds the beginning of the src, and not a parameter passed in to another hoset
			urlBase = s.src.substring(idx) + 'engine/';
		}
	}
	
	if(null === urlBase) {
		alert("mapmyfitness engine init error, code 14");
	}

	/* We will add our IFRAME into the container */
	var c = document.getElementById(id);
	
	var strSRC = "";
	
	if(arguments.length < 2) {
		page = MMF_COBRAND_PAGE;
	}
	
	if (urlBase.indexOf("http") == -1) {	
		strSRC = "http://" + urlBase + page;
	} else {
		strSRC = urlBase + page;
	}

	if (arguments.length >2) {
		args.push(arguments[2]);
	}

	// Optional Parametesr
	if (args.length>0) {
		strSRC += "?";
		while(args.length > 0) {
			strSRC += args.pop();
			if(args.length > 0) {
				strSRC += '&';
			}
		}
	}
			
	c.innerHTML = "<iframe id='engine_iframe' src='" + strSRC + "' width='100%' height='100%' scrolling='no' frameborder='0'></iframe>";
}


// Dynamically load a js file, can optionally call into 
function loadJS(url, callback) {
	// If the script is already loaded, just call the callback
	var scripts = document.getElementsByTagName("script");
	for(var i=0; i < scripts.length; i++) {
		if(scripts[i].getAttribute("src") == url) {
			if(callback) {
				callback();
			}
			return;
		}
	}
	
	var e = document.createElement("script");
	e.setAttribute("language", "javascript");
	e.setAttribute("type", "text/javascript");
	e.setAttribute("src", url);

	if(callback) {
		e.onload = e.onreadystatechange = function() {
			if(window.event) { // IE
				if(this.readyState == "loaded") {
					callback();
				}
			} else {
				//GLog.write(this.src + ' loaded');
				callback();
			}
		};
	}
	document.getElementsByTagName("head")[0].appendChild(e);

}

