/*
 * 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
 *
 */
 
 /* 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('www.eltern.de');
 /**********************************************************************************************/

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_getQueryParamCustom V1.0 20090508FRÄ
tries to split document.location.search at separator sep,
finds the parameter name case-insensitive and returns the value

Wie vereinbart liefert CM hier ein Beispiel,
Bitte umprogrammieren!! für HASHMARK-BENUTZUNG
*/
function cm_getQueryParamCustom(n){//ACHTUNG SELBST PROGRAMMIEREN!!!!
	ret='';
	n=n.toLowerCase();
	sep=';';
	qstr=document.location.search.substr(1);
	qs=qstr.split(sep);
	for(i=0;i<qs.length;i++){
		pair=qs[i];
		p=pair.split('=');
		if(p[0].toLowerCase()==n)return p[1];	
	}
	return '';	
}
/*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();
  var pairs = str.split(sep);
  for(var i in pairs){
    p = pairs[i].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() {
  s.server = window.location.hostname;

  var url_first_subdir = window.location.pathname.split('/')[1];

  if (url_first_subdir == 'foren') {
  	 var forum_title = document.title;
  	 forum_title = forum_title.replace(/,/,'-');

    s.prop1="foren:"+ forum_title;
    s.prop12="Community:Foren:Forum:" + forum_title;
  }

  // catch campaigns
  // 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 = '';
	} 
  }
  
  // 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)
  }
  
  // finally, all to lower case...
	var props = new Array('pageName','channel','prop1','prop2','prop3','prop6','prop7','prop8','prop9',
						  'prop10','prop11','prop12','hier1','hier2','campaign','evar12','evar13','evar14');
	for (i in props) {
		if (typeof props[i] != 'function')
		{
			eval('tmp = s.'+props[i] + ';');
			if (typeof tmp == 'string') {
				eval('s.'+props[i]+'=s.'+props[i]+'.toLowerCase()');
			}
		}
	}
}

function sc_do_request(s) {
  
  s_doPlugins();

  var s_code = s.t();
  // it looks like this is doing nothing, but it's taken from sc-code so we better let it be
  if (s_code) {
    document.write(s_code);
  }
}