// 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);
}

var classGA = classGA || {};

classGA = function (){
    
    var pixelSource = false;
           
    return {
       // 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)
        {
          var myVersion      = (version == null)? 'noversion' : version;
          var myFileName     = (fileName == null)? 'nofileName': fileName;
          var myHref         = (obj == null)? null : obj.href;
          var 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(amount)
        {
          _gaq.push(['localTracker._trackEvent', 'cart', 'select quantity', "'" + amount + "'", parseInt(amount)]);
          _gaq.push(['globalTracker._trackEvent', 'cart', 'select quantity', "'" + amount + "'", parseInt(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) {
            if (typeof jQuery == 'undefined') {  
                console.log("jquery is not loaded");
            } else {
                this.pixelSource = jQuery.parseJSON(src);
            }
            
        }
    };
};

var gan = new classGA();
