// Copyright © 2010 Nanigans, Inc. All Rights Reserved
function NaN_api(app_id, user_id) {
  this.app_id   = app_id;
  this.user_id  = user_id;
  this.visit    = function(name, value, extra){this.event('visit',name,value,extra);};
  this.install  = function(name, value, extra){this.event('install',name,value,extra);};
  this.purchase = function(name, value, extra){this.event('purchase',name,value,extra);};
  this.viral    = function(name, value, extra){this.event('viral',name,value,extra);};
  this.user     = function(name, value, extra){this.event('user',name,value,extra);};
  this.event = function(type,name,value,extra){NaN_api.event(this.app_id,this.user_id,type,name,value,extra);};
}
// Core event logic
NaN_api.baseURL = '//api.nanigans.com/event.php?';
NaN_api.event = function(app_id,user_id,type,name,value,extra){
  var qs = extra ? extra : {};
  qs.app_id = app_id;
  qs.user_id = user_id;
  qs.type = type;
  qs.name = name;
  qs.value = value;
  qs.nan_uid = NaN_api.qParams.get('nan_uid') || NaN_api.rParams.get('nan_uid');
  qs.nan_pid = NaN_api.qParams.get('nan_pid') || NaN_api.rParams.get('nan_pid');
  qs.nan_hash = NaN_api.getHash();
  var q = [];
  for (var p in qs) { if (qs[p]) { q.push(p + '=' + encodeURIComponent(qs[p])); } }
  var i = new Image();
  i.src = NaN_api.baseURL + q.join('&');
};

// Support
NaN_api.getHash = function() {
  var hval = NaN_api.cookieJar.get("NaN_hash");
  if (!hval) {
    hval = (new Date()).valueOf() + '';
    NaN_api.cookieJar.set("NaN_hash",hval,180);
  }
  return hval;
};
NaN_api.qParams = {
  get: function(name) {
    NaN_api.qParams.load();
    return NaN_api.qParams.params[name];
  },
  load: function(){
    if (!NaN_api.qParams.params){
      var params = {};
      var pairs = window.location.search.substring(1).split("&");
      for(var i=0;i<pairs.length;i++){
        var kv = pairs[i].split("=");
        params[kv[0]]=kv[1];
      }
      NaN_api.qParams.params = params;
    }
  }
};
NaN_api.rParams = {
  get: function(name) {
    NaN_api.rParams.load();
    return NaN_api.rParams.params[name];
  },
  load: function(){
    if (!NaN_api.rParams.params){
      var params = {};
      var qAt = document.referrer.indexOf('?');
      if (qAt != -1) {
        var pairs = document.referrer.substring(qAt+1).split("&");
        for(var i=0;i<pairs.length;i++){
          var kv = pairs[i].split("=");
          params[kv[0]]=kv[1];
        }
      }
      NaN_api.rParams.params = params;
    }
  }
};
NaN_api.cookieJar = {
  get: function(name){
    NaN_api.cookieJar.load();
    return NaN_api.cookieJar.cookies[name];
  },
  set: function(name, value, days){
    var expires = '';
    if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      expires = '; expires='+date.toGMTString();
    }
    document.cookie = name+"="+value+expires+"; path=/";
    NaN_api.cookieJar.clear();
  },
  load: function(){
    if (!NaN_api.cookieJar.cookies) {
      var cookies = {};
      var pairs = document.cookie.split(';');
      for(var i=0;i<pairs.length;i++){
        var pair = pairs[i].replace(/^\s+/,'');
        var eq = pair.indexOf('=');
        cookies[pair.slice(0,eq)] = pair.slice(eq+1);
      }
      NaN_api.cookieJar.cookies=cookies;
    }
  },
  clear: function() { NaN_api.cookieJar.cookies = null; }
};
// Copyright © 2010 Nanigans, Inc. All Rights Reserved
