
//****************************************************************************************************
// 
//  Polar Rose
//  www.polarrose.com
// 
//****************************************************************************************************

if (typeof polarroseroselet === "undefined") {
var polarroseroselet = {};

//****************************************************************************************************

polarroseroselet.debug = function(message) {
  if (!message) return;
  if (polarroseroselet.loaded.dom) {
    var debug = document.getElementById("polarroseroseletdebug");
    if (!debug) {
      if (!polarroseroselet.debugenabled()) {
        polarroseroselet.debug = function(){};
        polarroseroselet.debugbacklog = [];
        return;
      }
      debug = document.createElement("div");
      debug.id = "polarroseroseletdebug";
      debug.style.width = "100%";
      debug.style.height = "300px";
      debug.style.zIndex = "1000";
      debug.style.margin = "0px";
      debug.style.padding = "0px";
      debug.style.backgroundColor = "white";
      debug.style.backgroundImage = "none";
      debug.style.borderColor = "black";
      debug.style.borderStyle = "solid";
      debug.style.borderWidth = "2px";
      debug.style.display = "block";
      debug.style.visibility = "visible";
      debug.style.overflow = "auto";
      document.body.appendChild(debug);
      while (polarroseroselet.debugbacklog.length) {
        polarroseroselet.debug(polarroseroselet.debugbacklog.shift());
      }
    }
    var row = document.createElement("div");
    row.style.zIndex = "1001";
    row.style.margin = "0px";
    row.style.padding = "2px 8px 1px 6px";
    row.style.backgroundColor = "white";
    row.style.backgroundImage = "none";
    row.style.borderColor = "#dddddd";
    row.style.borderStyle = "solid";
    row.style.borderWidth = "0px 0px 1px 0px";
    row.style.display = "block";
    row.style.visibility = "visible";
    row.style.overflow = "auto";
    row.style.fontFamily = "Lucida Grande,Tahoma,sans-serif";
    row.style.fontSize = "11px";
    row.style.color = "black";
    row.appendChild(document.createTextNode(message));
    debug.appendChild(row);
    if ((debug.scrollTop+300+2)>=(row.offsetTop-debug.offsetTop)) {
      debug.scrollTop += row.offsetHeight;
    }
  } else {
    polarroseroselet.debugbacklog.push(message);
  }
}

polarroseroselet.debugbacklog = [];

polarroseroselet.debugenabled = function() {
  var scripts = document.getElementsByTagName("script");
  for (var i=0; i<scripts.length; i++) {
    var src = scripts[i].getAttribute("src");
    if (src && /roselet[a-zA-Z0-9]*\.js$/i.test(src)) {
		  var cfg = scripts[i].getAttribute("config");
      if (cfg) {
        try {
		      var cfgo = eval("({ "+cfg+" })");
          if (typeof cfgo.debug === "boolean") return cfgo.debug;
          else if (typeof cfgo.debug !== "undefined") throw "config.debug is not a boolean";
        } catch(err) {
          if (console && console.error) {
            console.error("Roselet config error: "+err+".");
          }
        }
		  }
		  break;
    }
  }
  return false;
}

//****************************************************************************************************

polarroseroselet.loaded = {};
polarroseroselet.loaded.dom = false;
polarroseroselet.loaded.page = false;
polarroseroselet.loaded.dojo = false;
polarroseroselet.loaded.cometd = false;
polarroseroselet.loaded.polarrose = false;
polarroseroselet.loaded.all = false;

polarroseroselet.loaded.add = function(what) {
  if (what) {
    if (what === 'dom' && !polarroseroselet.loaded.dom) {
      polarroseroselet.loadDojoScript();
      polarroseroselet.loadPolarRoseScript();
    }
    if (what === 'dojo' && !polarroseroselet.loaded.dojo) {
      polarroseroselet.loadCometdScript();
    }
    polarroseroselet.loaded[what] = true;
    var loaded = polarroseroselet.loaded;
    if (loaded.dom && loaded.page && loaded.dojo && loaded.cometd && loaded.polarrose && !loaded.all) {
      loaded.all = true;
      polarroseroselet.debug("all loaded.");
      //polarrose.init();
      polarrose.run();
    }
  }
}

//****************************************************************************************************

polarroseroselet.loadDojoScript = function() {
  polarroseroselet.debug("loading dojo script...");
  var head = document.getElementsByTagName('head')[0];
  var scriptDojo = document.createElement('script');
  scriptDojo.setAttribute('type','text/javascript');
  scriptDojo.onreadystatechange = function(){
    if (this.readyState=='loaded'||this.readyState=='complete') {
      polarroseroselet.debug("dojo script loaded, onreadystatechange.");
      polarroseroselet.loaded.add('dojo');
    }
  };
  scriptDojo.onload = function(){
    polarroseroselet.debug("dojo script loaded, onload.");
    polarroseroselet.loaded.add('dojo');
  };
  scriptDojo.setAttribute('src','http://roselet.polarrose.com/dojo.js.uncompressed.js');
  scriptDojo.setAttribute("djConfig","isDebug: false, parseOnLoad: false");
  head.appendChild(scriptDojo);
}

polarroseroselet.loadCometdScript = function() {
  polarroseroselet.debug("loading cometd script...");
  var head = document.getElementsByTagName('head')[0];
  var scriptCometd = document.createElement('script');
  scriptCometd.setAttribute('type','text/javascript');
  scriptCometd.onreadystatechange = function(){
    if (this.readyState=='loaded'||this.readyState=='complete') {
      polarroseroselet.debug("cometd script loaded, onreadystatechange.");
      polarroseroselet.loaded.add('cometd');
    }
  };
  scriptCometd.onload = function(){
    polarroseroselet.debug("cometd script loaded, onload.");
    polarroseroselet.loaded.add('cometd');
  };
  scriptCometd.setAttribute('src','http://roselet.polarrose.com/cometd.js.uncompressed.js');
  head.appendChild(scriptCometd);
}

polarroseroselet.loadPolarRoseScript = function() {
  polarroseroselet.debug("loading polar rose script...");
  var head = document.getElementsByTagName('head')[0];
  var scriptPolarRose = document.createElement('script');
  scriptPolarRose.setAttribute('type','text/javascript');
  scriptPolarRose.onreadystatechange = function(){
    if (this.readyState=='loaded'||this.readyState=='complete') {
      polarroseroselet.debug("polar rose script loaded, onreadystatechange.");
      polarroseroselet.loaded.add('polarrose');
    }
  };
  scriptPolarRose.onload = function(){
    polarroseroselet.debug("polar rose script loaded, onload.");
    polarroseroselet.loaded.add('polarrose');
  };
  scriptPolarRose.setAttribute('src','http://roselet.polarrose.com/polarrose.js');
  head.appendChild(scriptPolarRose);
}

//****************************************************************************************************

if (window.addEventListener) {
  document.addEventListener('DOMContentLoaded', function(e){
    polarroseroselet.debug("dom loaded, addEventListener.");
    polarroseroselet.loaded.add('dom');
  }, false);  
  document.addEventListener('load', function(e){
    polarroseroselet.debug("page loaded, addEventListener.");
    polarroseroselet.loaded.add('dom');
    polarroseroselet.loaded.add('page');
  }, false);
} else if (window.attachEvent) {
  document.attachEvent('onreadystatechange', function(e){
    if (/loaded|complete/.test(document.readyState)) {
      polarroseroselet.debug("dom loaded, attachEvent.");
      polarroseroselet.loaded.add('dom');
    }
  }, false);
  document.attachEvent('onload', function(e){
    polarroseroselet.debug("page loaded, attachEvent.");
    polarroseroselet.loaded.add('dom');
    polarroseroselet.loaded.add('page');
  }, false);
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
polarroseroselet.isPageLoadedLoop = function() {
  if (!polarroseroselet.loaded.page) {
    if (polarroseroselet.isPageLoaded()) {
      polarroseroselet.debug("page loaded, 'isPageLoaded()'.");
      polarroseroselet.loaded.add('dom');
      polarroseroselet.loaded.add('page');
    } else {
      setTimeout(function(){polarroseroselet.isPageLoadedLoop();}, 1000);
    }
  }
}
polarroseroselet.isPageLoaded = function() {
  if (document.images.length > 0) {
    for (var i=0, leni=document.images.length; i<leni; i++) {
      if (!document.images[i].complete) return false;
    }
    return true;
  }
  return false;
}
polarroseroselet.isPageLoadedLoop();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

} // polarroseroselet undefined




