/*
 * Copyright (c) contentmetrics GmbH, 2008
 * THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
 * APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
 * HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
 * OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
 * IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
 * ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 *
 * Autor: Frank Räther, 20090508
 * Code: JavaScript Library zum Hinzufuegen von events
 * Kunde: G+J
 * v2.7.09 für Brigitte.de
 */
 
 /* array with all referer-domains that should be excluded (look at sc_get_external_referer()) */
 /* this is specific for every site ************************************************************/
 var excluded_referers = new Array('essen-und-trinken.de', 'www.essen-und-trinken.de'); // alle server die nicht als referrer auftauchen sollen.
 /**********************************************************************************************/
 
function cm_varIsSet(vn){//variable vn ist gesetzt und nicht leer
  if(typeof(vn)!="undefined"&&vn!="")return true;
  return false;
}
function cm_eventIsSet(ev){//event ev ist gesetzt
  if(!cm_varIsSet(s.events))return false;
  var events=''+s.events;
  if(events.indexOf(ev)>-1)return true;
  return false;
}
function cm_addEvent(ev){//setzt einen event ev einmalig pro seite
  if(!cm_varIsSet(s.events)){//1.fall events nicht definiert oder leer
    s.events=ev;
    return;
  }  
  if(cm_eventIsSet(ev)) return;//2.fall nicht leer aber schon drin
  s.events+=','+ev;//3.fall nicht leer aber nicht drin
}

/*Plugin cm_getGroup V1.0 20090508FRÄ
finds clustered values
*/

function cm_getGroup( value, values, titles ){
  if( typeof(value)=='string' ) value=parseInt(value);
  vals = values.split(';');
  if( titles ){
    names = titles.split(';');
  } else {
    names = vals;
  }
  for( pair in vals ){
    v = vals[pair].split('-');
    if( v.length==2 ){//has -
      if( v[0]=='' && parseInt(v[1])>=value ){
        return names[pair];
      }
      if( parseInt(v[0])<=value && (v[1]=='' || parseInt(v[1])>=value) ){
        return names[pair];
      }
    } else {//is max or min
      if( v[0].indexOf('<')==0 ){
        if( parseInt(v[0].substr(1))>=value ){
          return names[pair];
        }
      } else if( v[0].indexOf('>')==0 ){
        if( parseInt(v[0].substr(1))<=value ){
          return names[pair];
        }
      } else {//no match
        return '';
      }
    }
  }
}

//Clustering of search result amount.
function cm_numberOfSearchResults(number_of_results){
  return cm_getGroup(number_of_results,'<1;1-5;6-10;11-20;21-30;31-40;41-50;>50','<1;1-5;6-10;11-20;21-30;31-40;41-50;>50');
}

//Hilfsfunktionen Cookies
function Delete_Cookie(name,path,domain){
  if(Get_Cookie(name)){
    document.cookie=name+"="+((path)?";path="+path:"")+((domain)?";domain="+domain:"")+";expires=Thu, 01-Jan-1970 00:00:01 GMT";
  }
}
function Set_Cookie(name,value,expires,path,domain,secure){
  var today=new Date();
  today.setTime( today.getTime() );
  if(expires)expires = expires * 1000 * 60 * 60 * 24;
  var expires_date=new Date(today.getTime()+(expires));
  document.cookie=name+"="+escape(value)+((expires)?";expires="+expires_date.toGMTString():"")+((path)?";path="+path:"")+((domain)?";domain="+domain:"")+((secure)?";secure":"");
}
function Get_Cookie(check_name) {
  var a_all_cookies=document.cookie.split(';');
  var a_temp_cookie='';
  var cookie_name='';
  var cookie_value='';
  var b_cookie_found=false;
  for(i=0;i<a_all_cookies.length;i++){
    a_temp_cookie=a_all_cookies[i].split('=');
    cookie_name=a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
    if(cookie_name==check_name){
      b_cookie_found = true;
      if(a_temp_cookie.length>1){
        cookie_value=unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
      }
      return cookie_value;
      break;
    }
    a_temp_cookie=null;
    cookie_name='';
  }
  if (!b_cookie_found)return null;
}

/**
 * Helper function to parse a param-string into an array
 * ~paz
 */
function sc_get_params(str, sep) {
  var vars = new Array();
  if (str) {
    var pairs = str.split(sep);
    if (pairs) {
      for (var i in pairs) {
        pair = pairs[1];
        if (pair) {
          p = pair.split('=');
          vars[p[0]] = p[1];
        }
      }
    }
  }
  return vars;  
}

/**
 * Get the value of a query parameter. 
 * (Dummy-Code by CM, functionally rebuilt by paz.)
 */
function sc_get_hash_param(n, sep) {
  if (!sep) var sep = ';';
  return sc_get_params(window.location.hash.substr(1), sep)[name];
}

/**
 * Get the value of a query parameter. 
 * (Dummy-Code by CM, functionally rebuilt by paz.)
 */
function sc_get_query_param(name, sep) {
  if (!sep) var sep = '&';
  return sc_get_params(document.location.search.substr(1), sep)[name];
}

function sc_get_external_referer() {
  var ref = document.referrer;
  if (ref != '') {
    ref = ref.replace(/https:\/\//,'');
    ref = ref.replace(/http:\/\//,'');
    ref = ref.substr(0,ref.indexOf('/')); // get domain of referer 
    if (!is_excluded_referer(ref) && ref != window.location.hostname) {
      // so this is an external referer
      return ref;
    }
  } 
  return '';
}
function is_excluded_referer(item) {
  for (i=0; i < excluded_referers.length; i++) {
    if (item == excluded_referers[i]) {
      return true;
    }
  }    
  return false;
}

function sc_get_campaign() {
  var url = window.location.href;
  var index = url.indexOf('#');
  if (index > 0) {
    var string = url.substr(index);
    string = string.replace(/#/,'');
    string = string.replace(/osc_/g,'');
    string = string.replace(/utm_/g,'');
    var pairs = string.split('&');
    var campaign = new Array();
    for (var i = 0; i < pairs.length; i++) {
      var tmp = pairs[i].split('=');
      campaign[tmp[0]] = tmp[1];
    }
    return campaign;
  } else if (index == -1 && url.indexOf('?') != -1) {
    var campaign = new Array();
    campaign['source'] = s.getQueryParam('utm_source');
    campaign['medium'] = s.getQueryParam('utm_medium');
    campaign['campaign'] = s.getQueryParam('utm_campaign');
    if (campaign['source'] == '') {
      campaign['source'] = s.getQueryParam('osc_source');
      campaign['medium'] = s.getQueryParam('osc_medium');
      campaign['campaign'] = s.getQueryParam('osc_campaign');
    }
    return campaign;
  }
  return null;
}

function s_doPlugins() {
  // number of attempts -- may be used to break recursion
  if (!s.numattempt) {
    s.numattempt = 0;
  }

  // correct some values for framework-pages based on URL-params
  var url = window.location.pathname.split('/');
  // first elem is empty
  url.shift();

  // remove controller names
  if (url[0] == 'wwd_dev.php' || url[0] == 'wwd_prod.php') {
    url.shift();
  }

  // poor man's cast
  if (url[0] == undefined) {
    url = [''];
  }

  prefix = "wiewohnstdu:";

  switch (url[0]) {
    case 'search':
      s.pageName = prefix + 'Suche';
      s.channel = s.pageName;
      s.prop1 = s.pageName;
      s.prop7 = s.pageName;
      s.prop8 = s.getQueryParam('query');
      s.prop10 = s.getQueryParam('pageNum');
      s.hier1 = 'wiewohnstdu,Suche';
      break;
    case '':
      s.pageName = prefix + "Homepage";
      s.channel = s.pageName;
      s.prop1 = s.pageName;
      s.prop7 = s.pageName;
      s.hier1 = "wiewohnstdu,Homepage";
      s.prop12 = s.pageName;
      s.prop10 = 1;
      break;
    default:
      //console.log(url[0]);
      var last = url[url.length-1].split('.');
      if (last.length > 1) {
        // last url-part has a dot -- this probably is
        // an article (aka album
        s.prop7 = 'Artikel';
        artikel = url[1] + ':' + last[0];
        s.prop1 = prefix + artikel;
        path = prefix + url[0] + ':';
        s.pageName = path + s.prop7;
        s.hier1 = (path + artikel).replace(/:/g, ',');
        s.prop12 = s.pageName + ':' + artikel;
        s.prop10 = url[2];
      } else {
        s.prop7 = 'Indexseite';
        s.prop1 = prefix + url.join(':');
        s.pageName = s.prop1 + ':' + s.prop7;
        s.hier1 = s.pageName.replace(/:/g, ',');
        s.prop12 = s.pageName;
        s.prop10 = url[3];
      }
      s.channel = url[0];
  }

  // s.prop11: external referer
  var referer = sc_get_external_referer();
  if (referer != '') {
    s.prop11 = referer;
  }
  
  // s.server 
  s.server = window.location.hostname;

  // catch campaigns
  // old param
  if (!s.campaign) {
    s.campaign=s.getQueryParam('CMP')
    s.campaign=s.getValOnce(s.campaign,'s_campaign',0)
  }
  // new param
  if (!s.campaign) {
    s.campaign=s.getQueryParam('campaign')
    s.campaign=s.getValOnce(s.campaign,'s_campaign',0)
  }
  // utm_source or osc_source
  if (!s.campaign && (window.location.href.indexOf('utm_source') != -1 || window.location.href.indexOf('osc_source') != -1)) {
    var campaign = sc_get_campaign();
    if (campaign != null) {
      s.campaign = campaign['source'] + '-' + campaign['medium'] + '-' + campaign['campaign'];
      s.evar12 = campaign['source'];
      s.evar13 = campaign['medium'];
      s.evar14 = '';
    }
  }
  //console.log(s.pageName);

}


