// declare Google-Analitics-Object
var _gaq = _gaq || [];
var embedPixels = true;
var domainName = 'none';
var edit_cookie = false;

// setzt Grundinformationen von Google Analytics
function initializeGaqObj(localId, globalId, countrycode, language, uri, generic_uri)
{
  //LocalTracker
  _gaq.push(['localTracker._setAccount', localId]);
  // solange nicht anders bekannt setzen wir DomainName = none
  _gaq.push(['localTracker._setDomainName', domainName]);
  _gaq.push(['localTracker._setAllowHash', false]);
  _gaq.push(['localTracker._setAllowLinker', true]);
  _gaq.push(['localTracker._addOrganic', 'suche.web.de', 'su']);
  _gaq.push(['localTracker._addOrganic', 'suche.t-online.de', 'q']);
  _gaq.push(['localTracker._addOrganic', 'suche.gmx.net', 'su']);
  _gaq.push(['localTracker._setAllowAnchor', true]);
  _gaq.push(['localTracker._setCampNameKey', 'm']);
  _gaq.push(['_gat._anonymizeIp']);
  if(language == ""){
    _gaq.push(['localTracker._trackPageview', uri]);
    _gaq.push(['localTracker._trackPageLoadTime', uri]);
  } else {
    _gaq.push(['localTracker._trackPageview', language + "/" + generic_uri]);
    _gaq.push(['localTracker._trackPageLoadTime', language + "/" + generic_uri]);
  }
  
  
  // GlobalTracker
  _gaq.push(['globalTracker._setAccount', globalId]);
  // solange nicht anders bekannt setzen wir DomainName = none
  _gaq.push(['globalTracker._setDomainName', domainName]);
  _gaq.push(['globalTracker._setAllowHash', false]);
  _gaq.push(['globalTracker._setAllowLinker', true]);
  _gaq.push(['globalTracker._addOrganic', 'suche.web.de', 'su']);
  _gaq.push(['globalTracker._addOrganic', 'suche.t-online.de', 'q']);
  _gaq.push(['globalTracker._addOrganic', 'suche.gmx.net', 'su']);
  _gaq.push(['globalTracker._setAllowAnchor', true]);
  _gaq.push(['globalTracker._setCampNameKey', 'm']);
  _gaq.push(['_gat._anonymizeIp']);
  _gaq.push(['globalTracker._trackPageview', countrycode + "/" +  generic_uri]);
  _gaq.push(['globalTracker._trackPageLoadTime', countrycode + "/" + generic_uri]);
}


function readCookie(cookieName) {
	try {
    return unescape(document.cookie.match(new RegExp(cookieName + '=([^\;]*)', 'gi'))[0].substr(cookieName.length + 1));
	} catch(e) {
		return '';
	}
}

var utmv = readCookie('__utmv');

function checkCookieEntryExist(utmv){
	var search_var1 = new Array("voucher_count","buyer_count","login_count");
  for(var i = 0; i <= search_var1.length; i++){
    var result1 = utmv.search(search_var1[i]);
    if (result1 != -1){
    }
    else{
      _gaq.push(['localTracker._setCustomVar', 4, search_var1[i] ,'0', 1]);
      _gaq.push(['globalTracker._setCustomVar', 4, search_var1[i] ,'0', 1]);
      edit_cookie = true;
    }
  }
}		

checkCookieEntryExist(utmv);


/**
 * Google Analytics Counter
 */
function counterUp(type){

  if (edit_cookie == true){
    _gaq.push(['localTracker._setCustomVar', 4, type,'1', 1]);
    _gaq.push(['globalTracker._setCustomVar', 4, type,'1', 1]);
  }
  else{
  var zeichenkette ="";
  var position = utmv.indexOf(type);
  var zaehler = position + 12;
  
  if(type == "voucher_count"){
    var zaehler = position + 14;
  }
  
  var zahl;

  for (var i = 0; i <= 4; i++){
    var test = utmv.charAt(zaehler)
    if (test == ("=")){
    }
    else{

      zeichenkette = zeichenkette.concat(utmv.charAt(zaehler));
      zaehler++;
      }
  }
  zahl = parseInt(zeichenkette);
  zahl++;
  _gaq.push(['localTracker._setCustomVar', 4, type, zahl, 1]);
  _gaq.push(['globalTracker._setCustomVar', 4, type, zahl, 1]);
  }
}

//
function initializeGa() {
  var ga = document.createElement('script');ga.type = 'text/javascript';ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
}

// manages the google analytics functionality
var classGA = Class.create();
classGA.prototype = {

  pixelSource : false,
  
  initialize: function(){},

  // extract the filename out fo the url
  prepareFileName: function(fn)
  {
    if(fn.indexOf('/',0) != -1)
    {
      arr  = fn.split('/');
      fn  = arr[(arr.length - 1)];
    }
    return fn;
  },

  integratePixels: function ()
  {
    var __autoFirePixels = true;

    if(embedPixels) {
        for (var pixel = 0; pixel <= this.pixelSource.length; pixel++)
        {
          var img = document.createElement("img");
          img.src = this.pixelSource[pixel].TagUrl;
          img.alt = this.pixelSource[pixel].TagName;
          img.width = 1;
          img.height = 1;
          document.getElementsByTagName('body')[0].appendChild(img);
          embedPixels = false;
        }
    }
  },

  // recieves and prepare data for the no flash download
  trackNoFlashDownload: function(obj,fileName,version)
  {
    myVersion      = (version == null)? 'noversion' : version;
    myFileName     = (fileName == null)? 'nofileName': fileName;
    myHref         = (obj == null)? null : obj.href;
    myDownloadType = (obj == null)? "download/no-flash" : obj.className;

    myFileName  = this.prepareFileName(myHref);
      
    this.gaqPushDownloads(myFileName, myVersion, myDownloadType);
    this.integratePixels();
  },

  // recieves and prepare data for the badge download
  trackBadgeDownload: function(msg, appversion, appurl)
  {

    var myMsg          = (msg == null)? 'def' : msg;

    //so is the global variable from the badge
    var myDownloadType = "download/badge";

    myFileName  = this.prepareFileName(appurl);

    if(msg == 'installSuccess')
    {
      this.gaqPushDownloads(appurl, appversion, "installation/badge", "installations");
      this.integratePixels();
    } else if(msg == 'airInstalled')
    {
      this.gaqPushDownloads(appurl, appversion, myDownloadType, "downloads");
    }
  },

  gaqPushLink: function(link)
  {
    _gaq.push(
      ['localTracker._link', link],
      ['globalTracker._link', link]
    );
  },
  
  // pushes data into the google analytic array
  gaqPushDownloads: function(myFileName, myVersion, myDownloadType, eventName)
  {
    _gaq.push(
      ['localTracker._trackEvent', eventName, myFileName, myVersion],
      ['localTracker._trackPageview', myDownloadType]
    );
    _gaq.push(
      ['globalTracker._trackEvent', eventName, myFileName, myVersion],
      ['globalTracker._trackPageview', myDownloadType]
    );
  },

  gaqPushDeleteCart: function()
  {
    _gaq.push(['localTracker._trackEvent', 'cart', 'delete cart']);
    _gaq.push(['globalTracker._trackEvent', 'cart', 'delete cart']);
  },

  gaqPushDeleteOneItem: function()
  {
    _gaq.push(['localTracker._trackEvent', 'cart', 'delete item from cart']);
    _gaq.push(['globalTracker._trackEvent', 'cart', 'delete item from cart']);
  },

  gaqPushSelectQuantity: function(event, amount)
  {
    _gaq.push(['localTracker._trackEvent', 'cart', 'select quantity', "'" + amount + "'", amount]);
    _gaq.push(['globalTracker._trackEvent', 'cart', 'select quantity', "'" + amount + "'", amount]);
  },

  gaqPushStandardShipping: function()
  {
    _gaq.push(['localTracker._trackEvent', 'shipping', 'standard shipping', 'choose standard shipping']);
    _gaq.push(['globalTracker._trackEvent', 'shipping', 'standard shipping', 'choose standard shipping']);
  },

  gaqPushPremiumShipping: function()
  {
   _gaq.push(['localTracker._trackEvent', 'shipping', 'premium shipping', 'choose premium shipping']);
   _gaq.push(['globalTracker._trackEvent', 'shipping', 'premium shipping', 'choose premium shipping']);
  },

  gaqPushElv: function()
  {
    _gaq.push(['localTracker._trackEvent', 'payment', 'bank collection']);
    _gaq.push(['globalTracker._trackEvent', 'payment', 'bank collection']);
  },

  gaqPushCreditCard: function()
  {
     _gaq.push(['localTracker._trackEvent', 'payment', 'creditcard']);
     _gaq.push(['globalTracker._trackEvent', 'payment', 'creditcard']);
  },

  gaqPushPrepayment: function()
  {
    _gaq.push(['localTracker._trackEvent', 'payment', 'bank transfer']);
    _gaq.push(['globalTracker._trackEvent', 'payment', 'bank transfer']);
  },

  setPixelSource : function (src){
    this.pixelSource = src.evalJSON();
  }
};

var gan = new classGA();
