
// Polar Rose Widget/Dashboard
// http://info.polarrose.com/partners
// http://info.polarrose.com/terms/
// http://info.polarrose.com/partners/#Terms
//
// Copyright (c) 2008, Polar Rose
//
// 2008-12-19 v0.9.7

if (!window.polarrosewidgetanddashboard) {
(function(){
this.polarrosewidgetanddashboard = {};

var loaded = {
  dom: false,
  page: false,
  widget: false,
  dashboard: false,
  all: false,
  add: function(what) {
    if (what) {
      if (what==='dom' && !this.dom && isBrowserOk()) {
        var scripturl = getScriptUrl();
        loadWidgetScript(scripturl);
        loadDashboardScript(scripturl);
      }
      this[what] = true;
      if (this.dom && this.page && this.widget && this.dashboard && !this.all) {
        this.all = true;
        /*if (window.polarrosewidget && window.polarrosewidget.run) {
          window.polarrosewidget.run();
        }*/
        if (window.polarrosedashboard && window.polarrosedashboard.run) {
          window.polarrosedashboard.run();
        }
      }
    }
  }
};

var isBrowserOk = function() {
  // from DOJO, http://www.dojotoolkit.org
  var n = navigator;
  var dua = n.userAgent;
  var dav = n.appVersion;
  var tv = parseFloat(dav);
  var isOpera = (dua.indexOf("Opera") >= 0) ? tv : 0;
  var isSafari = 0;
  var idx = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
  if (idx) {
    isSafari = parseFloat(dav.split("Version/")[1]) || ( ( parseFloat(dav.substr(idx+7)) >= 419.3 ) ? 3 : 2 ) || 2;
  }
  //var isAIR = (dua.indexOf("AdobeAIR") >= 0) ? 1 : 0;
  var isKhtml = (dav.indexOf("Konqueror") >= 0 || isSafari) ? tv : 0;
  var isMoz = (dua.indexOf("Gecko") >= 0 && !isKhtml) ? tv : 0;
  var isFF = 0;
  var isIE = 0;
  if (isMoz) {
		isFF = parseFloat(dua.split("Firefox/")[1]) || 0;
  }
  if (document.all && !isOpera) {
		isIE = parseFloat(dav.split("MSIE ")[1]) || 0;
  }
  if ((isSafari>=2) || (isFF>=2) || (isIE>=7)) {
    return true;
  } else {
    if (window.console && window.console.info) {
      window.console.info("Polar Rose Widget/Dashboard is only supported on Firefox2+, IE7+ and Safari2+.");
    }
    return false;
  }
};

var getScriptUrl = function() {
  var scripts = document.getElementsByTagName("script");
  for (var i=0; i<scripts.length; i++) {
    var src = scripts[i].getAttribute("src");
    if (src && /polarrosewidgetanddashboard[0-9]*\.js/i.test(src)) {
      return src.replace(/polarrosewidgetanddashboard[0-9]*\.js(.*)$/i,"");
    }
  }
  return "";
};

var loadWidgetScript = function(scriptUrl) {
  var head = document.getElementsByTagName('head')[0];
  var scriptWidget = document.createElement('script');
  scriptWidget.setAttribute('type','text/javascript');
  scriptWidget.onreadystatechange = function(){
    if (/loaded|complete/.test(this.readyState)) {
      loaded.add('widget');
    }
  };
  scriptWidget.onload = function(){
    loaded.add('widget');
  };
  scriptWidget.setAttribute('src',scriptUrl+'polarrosewidget.js');
  head.appendChild(scriptWidget);
};

var loadDashboardScript = function(scriptUrl) {
  var head = document.getElementsByTagName('head')[0];
  var scriptDashboard = document.createElement('script');
  scriptDashboard.setAttribute('type','text/javascript');
  scriptDashboard.onreadystatechange = function(){
    if (/loaded|complete/.test(this.readyState)) {
      loaded.add('dashboard');
    }
  };
  scriptDashboard.onload = function(){
    loaded.add('dashboard');
  };
  scriptDashboard.setAttribute('src',scriptUrl+'polarrosedashboard.js');
  head.appendChild(scriptDashboard);
};

var isPageLoadedLoop = function() {
  if (!loaded.page) {
    if (isPageLoaded()) {
      loaded.add('dom');
      loaded.add('page');
    } else {
      setTimeout(function(){isPageLoadedLoop();}, 1000);
    }
  }
};
var isPageLoaded = function() {
  if (document.images && 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;
};
isPageLoadedLoop();

if (window.addEventListener) {
  document.addEventListener('DOMContentLoaded', function(e){
    loaded.add('dom');
  }, false);  
  window.addEventListener('load', function(e){
    loaded.add('dom');
    loaded.add('page');
  }, false);
} else if (window.attachEvent) {
  document.attachEvent('onreadystatechange', function(e){
    if (/loaded|complete/.test(document.readyState)) {
      loaded.add('dom');
    }
  }, false);
  window.attachEvent('onload', function(e){
    loaded.add('dom');
    loaded.add('page');
  }, false);
};

})();
}
