
// no jquery because we don't want to create conflicts on external sites
        var ALTPERKS = window.ALTPERKS || {};

        (function() {

          if (ALTPERKS && ALTPERKS.DealsGoingFast) return;

          var instance = 0;
          var widgetPath = "/remote/DealsGoingFastData.html";
          var divName = "AltPerksDealsGoingFast";
          var loadingImage = "http://assets.altperks.com/shared/images/spinner-big.gif";
          var skipLoadingIcon = new Array();

          function scriptInstance(thisInstance) {
            var matchedInstance = 0;
            var scripts = document.getElementsByTagName('script');
            for (var s = 0; s < scripts.length; s++) {
              if (scripts[s].className == divName + 'Script') {
                matchedInstance++;
                if (matchedInstance == thisInstance) {
                  return scripts[s];
                }
              }
            }
            return false;
          }

          function loadingIcon(thisInstance) {
            var script_element = scriptInstance(thisInstance);

            var image = new Image();
            image.src = loadingImage;
            image.onload = function() {
              if (!skipLoadingIcon[thisInstance]) {
                var loading_element = document.createElement('img');

                with(loading_element) {
                  id = divName + thisInstance + "Loading";
                  src = image.src;

                  style.display = "block";
                  style.margin = "0 auto";
                  style.padding = "10px";
                  //style.backgroundColor = "#fff";
                }

                script_element.parentNode.insertBefore(loading_element, script_element);
              }
            }
          }

          function getContent(options) {
            if (options.instance) instance = options.instance; // this is only used by the widget config form
            else instance++;

            skipLoadingIcon[instance] = false;

            if (options.appearance && options.appearance.loading && options.appearance.loading != "false") {
              loadingIcon(instance);
            }

            var params = "?version=" + ((options.version) ? options.version : "1");
            params += "&instance=" + instance;
            params += "&callback=ALTPERKS.DealsGoingFast.render";
            if (options.data) {
              for (var d in options.data) {
                if (options.data.hasOwnProperty(d) && options.data[d]) {
                  params += "&" + d + "=" + options.data[d];
                }
              }
            }
            if (options.appearance) {
              for (var a in options.appearance) {
                if (options.appearance.hasOwnProperty(a) && options.appearance[a]) {
                  if (a == "colors") {
                    for (var c in options.appearance.colors) {
                      if (options.appearance.colors.hasOwnProperty(c) && options.appearance.colors[c]) {
                        params += "&" + c + "=" + options.appearance.colors[c].replace("#", "");
                      }
                    }
                  } else {
                    if (a == "width" || a == "height" || a == "border" || a == "size") {
                      params += "&" + a + "=" + options.appearance[a].replace("px", "");
                    } else params += "&" + a + "=" + options.appearance[a];
                  }
                }
              }
            }

            var script_src;
            var scripts = document.getElementsByTagName('script');
            for (var s = 0; s < scripts.length; s++) {
              var script_name = "/remote/DealsGoingFast.js".toLowerCase();
              if (scripts[s].src.toLowerCase().indexOf(script_name) != -1) {
                script_src = scripts[s].src;
                break;
              }
            }
            var protocol = "http://";
            if (script_src.indexOf("https://") != -1) protocol = "https://";
            script_src = script_src.replace(protocol, "");
            var domain = script_src.substring(0, script_src.indexOf("/"));
            if (!domain) domain = document.domain;

            var jsonp = document.createElement('script');
            jsonp.setAttribute('src', protocol + domain + widgetPath + params);
            jsonp.id = divName + instance + "JSONP";
            document.getElementsByTagName('head')[0].appendChild(jsonp);
          }

          function setContent(data) {
            if (data) {
              skipLoadingIcon[data.myInstance] = true;

              var jsonp = document.getElementById(divName + data.myInstance + "JSONP");
              document.getElementsByTagName('head')[0].removeChild(jsonp);

              setCss(data.myCss, data.myInstance);
              setHtml(data.myHtml, data.myInstance);
            }
          }

          function setCss(myCss, thisInstance) {
            var doc_head = document.getElementsByTagName('head')[0];
            var myStyle = document.createElement('style');
            myStyle.setAttribute('type', 'text/css');
            myStyle.id = divName + thisInstance + 'Style';

            if (myStyle.styleSheet) {
              myStyle.styleSheet.cssText = myCss;
            } else {
              myStyle.appendChild(document.createTextNode(myCss));
            }
            doc_head.appendChild(myStyle);
          };

          function setHtml(myHtml, thisInstance) {
            var script_element = scriptInstance(thisInstance);

            var data_element = document.createElement('div');
            data_element.id = divName + thisInstance;
            data_element.className = divName + 'Widget';
            script_element.parentNode.insertBefore(data_element, script_element).innerHTML = myHtml;

            var loading_element = document.getElementById(divName + thisInstance + "Loading");
            if (loading_element) loading_element.style.display = "none";

            data_element.style.display = "block";
          };

          ALTPERKS.DealsGoingFast = function(options) {
            this.init(options);
          };

          ALTPERKS.DealsGoingFast.prototype = function() {
            return {
              init : function(options) {
                if (document.getElementById && document.getElementsByTagName && document.createTextNode) {
                  getContent(options);
                }
              }
            };
          }();

          ALTPERKS.DealsGoingFast.render = function(data) {
            setContent(data);
          };

        })();

