mogado = {

	server_url : 'http://www.mogado.com',
	jquery_url : 'http://www.mogado.com/lib/jquery/dist/jquery.pack.js',
	appsrv_url : 'http://www.mogado.com/mgd/app_server/js',
	default_css_url : 'http://www.mogado.com/mgd/common/tmpl/show_apps.css',

	default_css_search : 'mogado-',
	session : '',
	inst : new Array(),

	setCookie : function (c_name,value,expiredays) {
		var exdate=new Date();
		exdate.setDate(exdate.getDate()+expiredays);
		document.cookie=c_name+ "=" +escape(value)+
		((expiredays==null) ? "" : ";expires="+exdate.toGMTString())+";path=/";
	},


	getCookie : function (c_name) {
		if (document.cookie.length>0) {
			c_start=document.cookie.indexOf(c_name + "=");
			if (c_start!=-1) { 
				c_start=c_start + c_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 "";
	},

	getScript : function (url,callback) {
		var html_doc=document.getElementsByTagName('head')[0];
		js=document.createElement('script');
		js.setAttribute('type','text/javascript');
                js.setAttribute('charset','utf-8');
		js.setAttribute('src', url);
		html_doc.appendChild(js);
		if (callback!=null) {
	//        js.onload=function () { callback(); };
			try {
				if ($.browser.opera) {
					js.onload=callback();
				} else if (! $.browser.msie) {
					js.onload=callback;
				}
			} catch (e) {
				js.onload=callback;
			}
			js.onreadystatechange = function () {
	//	        alert('readystatechange '+js.readyState);
				if (js.readyState == 'loaded' || js.readyState == "complete") {
					callback();
				}
			}
		}
	},

	getMogadoParams : function (inst_id,link) {
		name="mogado-params-"+inst_id;
		var pat=new RegExp(name+"=([^;])+", "m");
		var m=link.match(pat);
		var params='';
		if (m!=null) {
			params=m[0].substr(name.length+1);
		}
//		alert(link);
		return params;
	},

        execJS : function (node) {
          var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
          var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
          var bMoz = (navigator.appName == 'Netscape');

          if (!node) return;

          var st = node.getElementsByTagName('SCRIPT');
          var strExec;

          for(var i=0;i<st.length; i++) { //
            if (bSaf) {
              strExec = st[i].innerHTML;
              st[i].innerHTML = "";
            } else if (bOpera) {
              strExec = st[i].text;
              st[i].text = "";
            } else if (bMoz) {
              strExec = st[i].textContent;
              st[i].textContent = "";
            } else {
              strExec = st[i].text;
              st[i].text = "";
//              alert(strExec);
            }


            try {
              var x = document.createElement("script");
              x.type = "text/javascript";

              if ((bSaf) || (bOpera) || (bMoz)) {
                x.innerHTML = strExec;
              } else {
                x.text = strExec;
              }
              if (st[i].src) {
                  x.src=st[i].src;
              }

              document.getElementsByTagName("head")[0].appendChild(x);
            } catch(e) {
              alert(e);
            }
          }
        },

	getPage : function (inst_id,page_url) {
		var callback=function() {
			document.body.style.cursor = 'default';
            		document.getElementById("mogado-appinst-"+inst_id).innerHTML=mogado.inst[inst_id].html;
			if (mogado.session != '') {
			    mogado.setCookie('mogado-session',mogado.session,356);
			}
                        mogado.execJS(document.getElementById("mogado-appinst-"+inst_id));

		};
		document.body.style.cursor='wait';
		
	        mogado.session=mogado.getCookie('mogado-session');	
		page_url=page_url+';mogado-session='+mogado.session
		  +';mogado-unique='+mogado.inst[inst_id].unique
		  +';mogado-url='+escape(location.href)
                  +';mogado-cookies='+escape(document.cookie)
		  + ';'+new Date().valueOf();
		mogado.getScript(page_url,callback);
//		alert(page_url);
		
		return false;
	},
	
	linkOnClick : function (inst_id,page_url) {
	    try {
		    var mode=mogado.inst[inst_id].mode;
		} catch (e) {
		    mogado.inst[inst_id]=new Object();
		    mogado.inst[inst_id].mode='';
		}
		
	    if (mogado.inst[inst_id].mode == 'dom') {
		    page_url=mogado.appsrv_url+'/'+inst_id+'/'+page_url;
		    return mogado.getPage(inst_id,page_url);  
		} else {
		    return true;
		}
	},
	

	formSubmitCallback: function (inst_id) {
		if (mogado.inst[inst_id].submit_form) {
			app_url=mogado.appsrv_url+'/'+inst_id+'?mogado-response-'+inst_id
			  +'=1;mogado-unique='+mogado.inst[inst_id].unique+';'+new Date().valueOf();
			mogado.getPage(inst_id,app_url);
		} else {
			mogado.inst[inst_id].submit_form++;
		}
	},


	importApp : function (inst_id,mode) {
		mogado.inst[inst_id]=new Object();
		mogado.inst[inst_id].submit_form=0;
		mogado.inst[inst_id].unique=""+Math.random();
		mogado.inst[inst_id].unique=mogado.inst[inst_id].unique.substr(2,8);	
		mogado.inst[inst_id].mode='dom';
		if (mode != null && mode == 'url') {
		    mogado.inst[inst_id].mode='url';
		}
		document.write('<div id="mogado-appinst-'+inst_id+'">Loading Mogado application...</div>');
		document.write("<iframe onLoad='mogado.formSubmitCallback("+inst_id
		  +");' style='display: none;' name='mogado-post-"
		  +inst_id+"' id='mogado-post-"+inst_id+"'></iframe>");
		params=mogado.getMogadoParams(inst_id,location.href);
		page_url=mogado.appsrv_url+'/'+inst_id+'?mogado-params-'+inst_id+'='+params;
		mogado.getPage(inst_id,page_url);
	},
	
	loadStyles : function () {
        var loaded=0;
		for ( i = 0; i < document.styleSheets.length; i++ ) {
		    var styleRules=null;
			try {
			    styleRules=document.styleSheets[i].cssRules;
		    } catch(e) {
			    styleRules=document.styleSheets[i].rules
			}
			try {
				for (s =0; s < styleRules.length; s++) {
					var css=styleRules[s].cssText;
					if (css.indexOf(mogado.default_css_search)>-1) {
						loaded=1;
					}
				}
			} catch (e) {}
		}
		if (loaded<1) {
			var cssNode = document.createElement('link');
			cssNode.type = 'text/css';
			cssNode.rel = 'stylesheet';
			cssNode.href = mogado.default_css_url;
			cssNode.media = 'screen';
			cssNode.title = 'default';
			document.getElementsByTagName("head")[0].appendChild(cssNode);
		}
	},


	atScriptLoad : function () {
		try {
			$('html');
			mogado.loadStyles();
		} catch (e) {
		    var callback=function () { mogado.loadStyles() };
			mogado.getScript(mogado.jquery_url,callback);
		}
	}

	
    
};



mogado.atScriptLoad();

