﻿if (typeof MiracleShopper == "undefined") {
    MiracleShopper = {
    
        xhtmlNS: "http://www.w3.org/1999/xhtml",
        loadFunctions: [],
        domLoaded: false,
        
        init: function() {
              for (var i = 0; i < MiracleShopper.loadFunctions.length; i++) {
                  MiracleShopper.loadFunctions[i]();
              }
         },

         loadData: function (url) {
              var s = this.createElement("script");
              s.setAttribute("charset", "UTF-8");
              s.setAttribute("type", "text/javascript");
              s.setAttribute("src", url);            
              var head = document.getElementsByTagName("head")[0] || document.documentElement;
              head.appendChild(s);
          },
          
         createElement: function (type) {
               if (document.createElementNS) {
                   return document.createElementNS(this.xhtmlNS, type);
               } else if (document.createElement) {
                   return document.createElement(type);
               }
         },

         formatNumber: function (n) {
                  var t = "";
                  if (typeof n == "string") { n = parseInt(n) }
                  if (typeof n == "number") {
                      s = n.toString();
                      for (var i = s.length - 3; i > 0; i -= 3) {
                          s = s.substring(0, i) + "," + s.substring(i);
                      }
                  }
                  return s;
         },

         addElement: function (e) {        
         },
            
         addLoadFunction: function(f) {

                    
                 if (this.loadFunctions.length == 0) {
                 
                   
                     if (document.addEventListener) {
                         document.addEventListener("DOMContentLoaded", MiracleShopper.init, false);
                     }

                     if (/WebKit/i.test(navigator.userAgent)) {
                     
                            var _trTimer = setInterval(function() {
                            
                                 if (/loaded|complete/.test(document.readyState)) {
                                    clearInterval(_trTimer);  
                                    MiracleShopper.init();
                                 
                            }}, 10);
                    }  
                        
                   /*@cc_on @*/
                   /*@if (@_win32)
                   
                   document.write("<script id=__tr-ie defer src=javascript:void(0)><\/script>");
                   var s = document.getElementById("__tr-ie");
                   s.onreadystatechange = function() {
                   if (this.readyState == "complete") { MiracleShopper.init(); }
                   };
                   
                   /*@end @*/
                     
                }
                
                this.loadFunctions.push(f);
        }  
        
    }
}

// Generic Static Widgets

if (typeof MiracleShopper.GSWidget == "undefined") {
    MiracleShopper.GSWidget = { 
    
        initialized: false,
        elementURLs: {},
        elementTargets: [],
        urlsToLoad: [],
        
        init: function() {
            if (MiracleShopper.GSWidget.initialized == false) {
                MiracleShopper.GSWidget.initialized = true;
                MiracleShopper.addLoadFunction(this.loadFunction);
            }
        },

        loadFunction: function () {
            MiracleShopper.GSWidget.runWidgets();
        },

        runWidgets: function () {
                
                if(this.elementURLs.length <= 0) {
                    return;
                }             
               
                var anchors = document.getElementsByTagName("a");
                for (var i = 0; i < anchors.length; i++) {
                    var anchor = anchors[i];
                    if(this.elementURLs[anchor.className] && this.elementURLs[anchor.className]['url']) {
                        var url = this.elementURLs[anchor.className]['url'];
                        if(url) {this.elementTargets.push(anchor);}
                    }
                }

                for (var i = 0; i < this.elementTargets.length; i++) {
                    var target = this.elementTargets[i];
                    var url = this.elementURLs[target.className]["url"];
                    if(url && target) {
                        MiracleShopper.loadData(url);
                    }
                }
                

        },

        callback: function(klass, data) {
              var anchors = document.getElementsByTagName("a");
              var todo = [];
              for (var i = 0; i < anchors.length; i++) {
                    var anchor = anchors[i];
                    if(anchor.className == klass && this.elementURLs[anchor.className] && this.elementURLs[anchor.className]['url']) {
                        todo.push(anchor);
                    }
              }
              for (var i = 0; i < todo.length; i++) {
                  var target = todo[i];
                  var div = MiracleShopper.createElement("div");
                  div.className = klass;
                  div.innerHTML = data;
                  target.parentNode.insertBefore(div, target);
                  target.parentNode.removeChild(target);
              }
        },
        
        addWidget: function (id, url, type) {
               this.elementURLs[id] = {'url': url, 'type': type};
        }
        
    };
}

if(typeof schema == "undefined") var schema = "default";

MiracleShopper.GSWidget.addWidget('ms-ts-tagcloud', 'http://widget.miracleshopper.com/syndication/data/general/ms-ts-tagcloud.js?schema='+schema, 'js');
MiracleShopper.GSWidget.addWidget('ms-fa-list', 'http://widget.miracleshopper.com/syndication/data/general/ms-fa-list.js?schema='+schema, 'js');

MiracleShopper.GSWidget.init();
