/*
Copyright (c) 2010 Guanoo Inc. All Rights Reserved.
Developer docs are at http://sitesure.net/developer
System patented in the US (patent number 7,752,308)
Other patents pending worldwide.
*/
var $ss = top.$ss || {
  base: 'http://sitesure.net',
  count: 0,
  data: {site: '5'},
  attach: function(obj, name, f) {
    if (obj.addEventListener) // Mozilla
      obj.addEventListener(name, f, false);
    else if (obj.attachEvent) // IE
      obj.attachEvent('on'+name, f);
    else // other
      eval('var e = obj.on'+name+'; obj.on'+name+' = e ? function() { e.call(); f.call() } : f;');
  },
  callback: function(f) {
    var name = '_jsonp'+($ss.count++);
    $ss[name] = f ? f : function() {};
    return '$ss.'+name;
  },
  decode: decodeURIComponent,
  encode: encodeURIComponent,
  error: function(msg) {
    var img = new Image();
    msg = $ss.data.site  + '.js: "' + msg + '" in ' + navigator.userAgent;
    img.src = $ss.base + '/events/error.gif?error=' + $ss.encode(msg);
  },
  has_jquery: function() {
    return (window.jQuery && window.$ && window.jQuery === window.$);
  },
  load: function(scripts, f) {
    if (typeof scripts == 'string') scripts = [scripts];
    $ss.script($ss.base + '/scripts/load.php?scripts=' + scripts.join() + '&callback=' + $ss.callback(f));
  },
  module: function(name, obj) {
    return $ss[name] ? $ss[name] : $ss[name] = obj;
  },
  script: function(src) {
    var script = document.createElement('SCRIPT');
    script.src = src
    script.type = 'text/javascript';
    var head = document.getElementsByTagName('HEAD')[0];
    head.appendChild(script);
  }
};

$ss.module('services', {
  init: function() {
    var scripts = ['services/feedback.js'];
    if (!$ss.has_jquery()) scripts.splice(0, 0, 'jquery/all.js');
    $ss.load(scripts, $ss.services.loaded);
  },
  loaded: function() {
    if ($ss.feedback) $ss.feedback.init({color:'blue',mode:'fade'});
  }
});

$ss.module('traffic', {
  PAGE: 0,
  FILE: 1,
  LINK: 2,
  GOAL: 3,
  EXIT: 4,
  event: function(type, name) {
    var ua = $ss.browser;
    var js = $ss.base + '/scripts/traffic.php?site=' + $ss.data.site;
    js += '&window_size=' + ua.window_size();
    js += '&screen_size=' + ua.screen_size();
    js += '&local_clock=' + ua.local_clock();
    js += '&event_time=' + ua.event_time();
    js += '&referrer=' + $ss.encode(ua.referrer());
    js += '&visitor=' + ua.visitor();
    js += '&visit=' + ua.visit();
    js += '&type=' + type + '&name=' + $ss.encode(name);
    $ss.script(js);
  },
  init: function() {
    var name = location.href;
    this.event(this.PAGE, name);
    $ss.attach(window, 'beforeunload', function() { $ss.traffic.event($ss.traffic.EXIT, name) });
  }
});

$ss.module('browser', {
  visit: function() {
    var visit = $ss.cookie.get('visit');
    if (visit) return visit;
    return $ss.cookie.set('visit', this.event_time());
  },
  visitor: function() {
    var visitor = $ss.cookie.get('visitor');
    if (!visitor) visitor = this.visit();
    return $ss.cookie.set('visitor', visitor, 24*90);
  },
  event_time: function() {
    return ($ss.data.event_time ? $ss.data.event_time:
           ($ss.data.event_time = this.local_time()));
  },
  local_time: function() {
    return (new Date()).getTime();
  },
  local_clock: function() {
    var t = new Date();
    return ''+t.getFullYear()+'/'+(t.getMonth()+1)+'/'+t.getDate()+' '+t.getHours()+':'+t.getMinutes()+':'+t.getSeconds();
  },
  referrer: function() {
    var referrer = $ss.cookie.get('referrer');
    if (referrer) return referrer;
    return $ss.cookie.set('referrer', document.referrer);
  },
  screen_size: function() {
    return (screen.width + 'x' + screen.height);
  },
  window_size: function() {
    var b = document.body;
    return (b.clientWidth + 'x' + b.clientHeight);
  }
});

$ss.module('cookie', {
  set: function(name, value, hours) {
    var cookie = 'sitesure_' + name + '=' + $ss.encode(value) + '; path=/'
    if (hours) {
      var expires = new Date();
      expires.setTime(expires.getTime() + hours*60*60*1000);
      cookie += '; expires=' + expires.toGMTString();
    }
    document.cookie = cookie;
    return value;
  },
  get: function(name)
  {
    var cookie = document.cookie;
    var prefix = 'sitesure_' + name + '=';
    var begin = cookie.indexOf('; ' + prefix);
    if (begin == -1) {
      begin = cookie.indexOf(prefix);
      if (begin != 0) return '';
    }
    else begin += 2;
    var end = document.cookie.indexOf(';', begin);
    if (end == -1) end = cookie.length;
    return $ss.decode(cookie.substring(begin + prefix.length, end));
  }
});

try {
  $ss.traffic.init();
  $ss.services.init();
} catch(e) {
  $ss.error(e.message ? e.message : e.description);
}

// End of "/scripts/sites/5.js"
