//define the namespace and add utilities
if (typeof(window.Gigmaven === "undefined")){
  var Gigmaven = {};

  Gigmaven.constants = {
    stylesheet_base: "http://www.gigmaven.com/stylesheets/css/embeddables/"
  }

  Gigmaven.util = {        
    addEvent: function( obj, type, fn ) {
      if ( obj.attachEvent ) {
        obj['e'+type+fn] = fn;
        obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
        obj.attachEvent( 'on'+type, obj[type+fn] );
      } else
        obj.addEventListener( type, fn, false );
    },
    cancelEvent: function(e){
      if ( e.preventDefault ){
        e.preventDefault();
      } else {
        e.returnValue = false;
      }
    },
    requestScript: function(uri, params){
      var noCacheIE = '&noCacheIE=' + (new Date()).getTime();
      var params = this.stringifyParams(params);
      var fullUri = uri + "?" + params + noCacheIE;
      var scriptObj = document.createElement("script");
      scriptObj.setAttribute("type", "text/javascript");
      scriptObj.setAttribute("charset", "utf-8");
      scriptObj.setAttribute("src",fullUri);
      this.documentHead().appendChild(scriptObj)
    }, 
    stringifyParams: function(params){
      var retval = []
      for (key in params){
        retval.push(key+"="+params[key]);
      }
      return retval.join("&");
    },
    documentHead: function(){
      return document.getElementsByTagName("head").item(0)
    },
    createNode: function(script_tag_id, node_id){
      var script_tag = document.getElementById(script_tag_id)
      var parentDiv = script_tag.parentNode
      var node = document.createElement("div")
      node.setAttribute("id", node_id)  
      parentDiv.insertBefore(node, script_tag)
      return node
    },
    requestStylesheet:function(folder, name){
      var linkObj = document.createElement("link")
      var stylesheetUri = Gigmaven.constants.stylesheet_base + folder + name + ".css"
      linkObj.setAttribute("rel", "stylesheet")
      linkObj.setAttribute("type", "text/css")
      linkObj.setAttribute("href", stylesheetUri)
      var head = this.documentHead()
      head.insertBefore(linkObj, head.firstChild)
    }
  }
}


Gigmaven.list = {
  uri: "http://www.gigmaven.com/embed/5015/event_list",
  stylesheet_folder: "",
  payload: null, 
  node: null,
  offset: 0,
  limit: 20,
  script_id: 'gigmaven_aY9H7ax',
  render: function(payload){
    this.payload = payload;
    this.content.innerHTML = this.content.innerHTML + payload
  },
  load: function(){
    Gigmaven.util.requestScript(this.uri, {'options[limit]': this.limit, 'options[offset]': this.offset, loaded: true})
  },
  incrementOffset: function(){
    this.offset = this.offset + this.limit
  },
  initialize: function(structure, stylesheet){
    var list = this
    Gigmaven.util.requestStylesheet(this.stylesheet_folder, stylesheet)     
    var load_in_context = function(e){list.load(); Gigmaven.util.cancelEvent(e);}
    this.node = Gigmaven.util.createNode(this.script_id, 'gigmaven_list')
    this.node.innerHTML = structure
    this.content = document.getElementById('gigmaven_list_content')
    var more_button = document.getElementById("gigmaven_list_more_button")  
    if (more_button) Gigmaven.util.addEvent(more_button, "click", load_in_context)
  },
  removeMoreButton: function(){
    var button = document.getElementById('gigmaven_list_more_button')
    button.parentNode.removeChild(button)
  }
};

//initialize list
Gigmaven.list.initialize("<div id=\'gigmaven_list_content\'><\/div>\n<div id=\'gigmaven_list_controls\'>\n<\/div>\n", "list_standard")    
//fill the list
Gigmaven.list.render("")
Gigmaven.list.incrementOffset()


