
function caGetClientHeight()
{
	if (document.clientHeight)
		return document.clientHeight;

	return Math.max(document.body.clientHeight, document.documentElement.clientHeight);
}

function caGetCookieVal(offset)
{
  var 	endstr=document.cookie.indexOf(';', offset);


  if (endstr == -1)
  	endstr = document.cookie.length;

  return caClearCookie(unescape(document.cookie.substring(offset, endstr)));
}

function caClearCookie(cookieStr)
{	
	return cookieStr.replace(/[^a-zA-Z0-9äÄöÖüÜß?:=//#~\-%&|,+. ]/gi, '');
}

function caGetCookie(name)
{
  var 	arg=name+"=";
  var 	alen=arg.length;
  var 	clen=document.cookie.length;
  var 	tCookie=document.cookie;
  var 	i=0;


  while (i < clen)
  {
    var j = i + alen;

    if (tCookie.substring(i, j) == arg)
      return caGetCookieVal(j);

    i = tCookie.indexOf(' ', i) + 1;
    if (i == 0)
      break;
  }

	return '';
}

function caSetCookie(name, value, expires)
{
	var 	AddStr='; path=/';


	if (expires != null)
    AddStr = AddStr + '; expires=' + expires.toGMTString();

  document.cookie = name + '=' + escape(value) + AddStr;
}

// Warenkorb berechnen und im Header anzeigen
function caGetBasketWert()
{
	var 	basket=caGetBasketArray();
	var 	artikelAnzahl=0;
	var 	basketAmount=0.00;
	var		i;


	for (i=0;i<basket.length;++i)
	{
		var 	tempWert=parseFloat(basket[i][3].replace(',', '.')) * parseInt(basket[i][4]);							//PriceSale * Menge


		artikelAnzahl += parseInt(basket[i][4]);
		basketAmount += tempWert;
	}

	return '<span style="font-weight:900;">' + artikelAnzahl + '</span>&nbsp;Teil' + ((artikelAnzahl != 1) ? 'e' : '') + ' | <span style="font-weight:900;">' + caToCurrency(basketAmount) + '</span>&nbsp;&euro;';
}

function caToCurrency(numNeedle)
{
	// ganzzahlig
	numNeedle = String(numNeedle).replace('.', ',');

	if (String(numNeedle).indexOf(',') < 0)	
		return numNeedle + ',00';

	// mit einer Nachkommastelle
	if (String(numNeedle).indexOf(',') > 0 && (String(numNeedle).length - String(numNeedle).indexOf(',') == 2))
		return numNeedle + '0';

	// mit zwei Nachkommastellen
	return String(numNeedle);
}

function caGetTransparencyCSS(transparency)
{
	var			retStyle='';
	var		  percentage;
 	var 	  filterValue='';
 	var 	  opacityValue='';


	// Transparenz in Prozent angeben und invertieren.
	percentage = (typeof transparency == 'undefined') ? 50 : 100 - transparency;

	filterValue = 'Alpha(opacity='+percentage+')';
	opacityValue = '' + percentage / 100;

	// IE.
	// Nur setzen, wenn IE verwedet wird => 100x weniger Fehler im Web Developer Toolbar! -ab
	if(document.all) retStyle += 'filter:' + filterValue + ';';
	// Mozilla.
	retStyle += '-moz-opacity:' + opacityValue + ';';
	// Konqueror/Safari.
	retStyle += '-khtml-opacity:' + opacityValue + ';';
	// CSS-3-Browser.
	retStyle += 'opacity:' + opacityValue + ';';

	return retStyle;
}

function caTrimString(str)
{
	// Erst fuehrende, dann abschliessende Whitespaces entfernen 
	// und das Ergebnis dieser Operationen zurueckliefern.
	return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

function caGetDeeplink(level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor)
{
	var		searchStr='';


	if (typeof level1 == 'undefined')
		level1 = '';
	if (typeof level2 == 'undefined')
		level2 = '';
	if (typeof level3 == 'undefined')
		level3 = '';
	if (typeof level4 == 'undefined')
		level4 = '';
	if (typeof productId == 'undefined')
		productId = '';
	if (typeof productColor == 'undefined')
		productColor = '';
	if (typeof overPage == 'undefined')
		overPage = 0;
	if (typeof lastProduct == 'undefined')
		lastProduct = '';
	if (typeof filters == 'undefined')
		filters = '';
	if (typeof anchor == 'undefined')
		anchor = '';

	if (level1 != '')
		searchStr += (searchStr==''?'':'&') + 'l1=' + escape('\''+level1+'\'');
	if (level2 != '')
		searchStr += (searchStr==''?'':'&') + 'l2=' + escape('\''+level2+'\'');
	if (level3 != '')
		searchStr += (searchStr==''?'':'&') + 'l3=' + escape('\''+level3+'\'');
	if (level4 != '')
		searchStr += (searchStr==''?'':'&') + 'l4=' + escape('\''+level4+'\'');
	if (productId != '')
		searchStr += (searchStr==''?'':'&') + 'pId=' + escape('\''+productId+'\'');
	if (productColor != '' || typeof productColor == 'number')
		searchStr += (searchStr==''?'':'&') + 'pClr=' + escape('\''+productColor+'\'');
	if (overPage > 0)
		searchStr += (searchStr==''?'':'&') + 'cP=' + escape('\''+overPage+'\'');
	if (lastProduct != '')
		searchStr += (searchStr==''?'':'&') + 'lP=' + escape('\''+lastProduct+'\'');
	if (filters != '')
		searchStr += (searchStr==''?'':'&') + 'flt=' + escape('\''+filters+'\'');

	if (caMP_mpsearch == true)
		searchStr += (searchStr==''?'':'&') + 'mpquery=true';

	if (caCamp != '' && caCamp != 'HDE')
		searchStr += (searchStr==''?'':'&') + 'camp=' + caCamp;

	if (searchStr != '' || anchor != '')
	{
		searchStr = '?' + searchStr;

		if (anchor != '')
			searchStr += (anchor.indexOf('#') == 0 ? anchor : '#' + anchor);
	}

	return searchStr;
}

function caGetNaviLevel1()
{
	return caNaviArray[0];
}

function caGetNaviLevel2()
{
	return caNaviArray[1];
}

function caGetNaviLevel3()
{
	return caNaviArray[2];
}

function caGetNaviLevel4()
{
	return caNaviArray[3];
}

function caGetNaviLevel5()
{
	return caNaviArray[4];
}

function caGetNaviLevel6()
{
	return caNaviArray[5];
}

function caGetNaviLevel7()
{
	return caNaviArray[6];
}

function caGetProductId()
{
	return caProductId;
}

function caGetProductColor()
{
	return caProductColor;
}

function caGetOverPage()
{
	return caOverPageNum;
}

function caGetLastProduct()
{
	return caLastProduct;
}

function caGetFilters()
{
	return caFilters;
}


function caSetNaviLevel1(level1)
{
	if (typeof level1 == 'undefined')
		level1 = '';

	caNaviArray[0] = level1;
}

function caSetNaviLevel2(level2)
{
	if (typeof level2 == 'undefined')
		level2 = '';

	caNaviArray[1] = level2;
}

function caSetNaviLevel3(level3)
{
	if (typeof level3 == 'undefined')
		level3 = '';

	caNaviArray[2] = level3;
}

function caSetNaviLevel4(level4)
{
	if (typeof level4 == 'undefined')
		level4 = '';

	caNaviArray[3] = level4;
}

function caSetNaviLevel5(level5)
{
	if (typeof level5 == 'undefined')
		level5 = '';

	caNaviArray[4] = level5;
}

function caSetNaviLevel6(level6)
{
	if (typeof level6 == 'undefined')
		level6 = '';

	caNaviArray[5] = level6;
}

function caSetNaviLevel7(level7)
{
	if (typeof level7 == 'undefined')
		level7 = '';

	caNaviArray[6] = level7;
}

function caSetProductId(productId)
{
	if (typeof productId == 'undefined')
		productId = '';

	caProductId = productId;
}

function caSetProductColor(productColor)
{
	if (typeof productColor == 'undefined')
		productColor = '';

	caProductColor = productColor;
}

function caSetOverPage(overPage)
{
	if (typeof overPage == 'undefined')
		overPage = 0;

	caOverPageNum = overPage;
}

function caSetFilters(filters)
{
	if (typeof filters == 'undefined')
		filters = '';

	caFilters = filters;
}

function caClickNavi(level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor)
{
	var			searchStr=caGetDeeplink(level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor);


	// Redirect content links from https to http.
	// NOTE: Opera 9.63 doesn't like to set the search separately.
	location.href = caURL.replace('https://', 'http://') + searchStr;
}

function caGetDeepLink(toHttps, level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor)
{
	var			searchStr=caGetDeeplink(level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor);
	var			url=caURL;


	if (typeof toHttps == 'undefined')
		toHttps = false;
	if (typeof onParent == 'undefined')
		onParent = false;

	if (toHttps)
		url = url.replace('http://', 'https://');
	else
		url = url.replace('https://', 'http://');

	return url + searchStr;
}

function caGetLinkBegin(toHttps, target, level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor)
{
	var			url=caGetDeepLink(toHttps, level1, level2, level3, level4, productId, productColor, overPage, lastProduct, filters, anchor);


	if (typeof target == 'undefined')
		target = '';

	if (target != '')
		target = ' onClick="' + target + '.location.href=this.href;"';

	// Redirect content links from https to http.
	return '<a href="' + url + '"' + target + '>';
}

function caGetCacheParam()
{
	var		rnd=new Date();


	return '?cache=' + rnd.getTime();
}

function caGetMerkzettel()
{
	var			mz=caGetCookie('mz');
	var			arrMz;
	var			result=new Array();
	var			tmpArr;
	var			i;
/*
return new Array(
				new Array('15680', '4', '368'), 
				new Array('13739', '1', '038'), 
				new Array('10981', '1', '222'), 
				new Array('15680', '1', '368'));
	if (mz == '')
		return result;
*/
	arrMz = (mz.indexOf('~') > 0) ? mz.split('~') : new Array(mz);
	for (i=0;i<arrMz.length;++i)
	{
		// There should be a ppid and one color per article.
		if (arrMz[i].indexOf('|') < 0)
			continue;

		tmpArr = arrMz[i].split('|');
		if (tmpArr.length != 3)
			continue;

		result[result.length] = tmpArr;
	}

	return result;
}

function caRandom(min, max)
{
	if (min > max)
		return -1;

	if (min == max)
		return min;

	return min + parseInt(Math.random() * (max-min+1));
}
