// JavaScript Document

function Set_Cookie( name, value, expires, path, domain, secure )
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
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" : "" );
}

// this fixes an issue with the old method, ambiguous values
// with this test document.cookie.indexOf( name + "=" );
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f

	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );


		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}

Set_Cookie( 'test', 'none', '', '/', '', '' );
// if Get_Cookie succeeds, cookies are enabled, since
//the cookie was successfully created.
if (!(Get_Cookie('test')))
{
	document.write('<div class="cookiejsmsg"><b>Cookies:</b> F&uuml;r eine korrekte Darstellung der Webseite und das Benutzen des Shopsystems m&uuml;ssen Cookies von dieser Seite akzeptiert werden. Gehen Sie unter Extras - Internetoptionen auf den Reiter Datenschutz und setzen Sie die Einstellung auf "Hoch" oder tiefer.</div>');
}

function load() {
	
	var menuh = document.getElementById('menu').offsetHeight;
	var contenth = document.getElementById('content').offsetHeight;
	var footerh = document.getElementById('footer').offsetHeight;
	var leftbarh = document.getElementById('leftbar').offsetHeight;
	var categoriesh = document.getElementById('categories').offsetHeight;
	var shoppingh = document.getElementById('shopping').offsetHeight;
	
	if(contenth > leftbarh){
		document.getElementById('wrapper').style.height = menuh + contenth + footerh + 22 + "px";
		document.getElementById('leftbar').style.height = contenth + "px";
		var leftbarh = document.getElementById('leftbar').offsetHeight;
		document.getElementById('infobar').style.height = leftbarh - categoriesh - shoppingh - 52 + "px";
	} else if(leftbarh > contenth) {
		document.getElementById('wrapper').style.height = menuh + leftbarh + footerh + 22 + "px";
		document.getElementById('content').style.height = leftbarh - 10 + "px";
		document.getElementById('infobar').style.height = leftbarh - categoriesh - shoppingh - 52 + "px";
	}
	
	truncateHTML();
	fillshopping_simple();
	moodAnim.init();

	var shoppingwrapper = document.getElementById('shoppingwrapper');
	var shoppingcontent = document.getElementById('shoppingcontent');
	var swap = document.getElementById('shoppingswap');
	
	if(shoppingcontent.innerHTML == '<span></span>') {
		swap.className = 'shoppingswap_off';
		shoppingwrapper.style.display = 'none';
		resizeshop();
	} else {
		swap.className = 'shoppingswap_on';
		shoppingwrapper.style.display = 'block';
		resizeshop();
	}

}

function googlemap() {

if(document.getElementById('map_canvas')) {
//Google Maps Laden	
	if (GBrowserIsCompatible()) {

		var map = new GMap2(document.getElementById("map_canvas"));
		map.setCenter(new GLatLng(47.37309134992528, 8.54432391508789),15);
 
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var lngSpan = northEast.lng() - southWest.lng();
		var latSpan = northEast.lat() - southWest.lat();

		var point = new GLatLng(47.37309134992528, 8.54432391508789);
    	map.addOverlay(new GMarker(point));
	
	}
}

}

function swapcontent() {
	
	var shoppingwrapper = document.getElementById('shoppingwrapper');
	var swap = document.getElementById('shoppingswap');
	
	if(swap.className == 'shoppingswap_on') {
		swap.className = 'shoppingswap_off';
		shoppingwrapper.style.display = 'none';
		resizeshop();
	} else {
		swap.className = 'shoppingswap_on';
		shoppingwrapper.style.display = 'block';
		resizeshop();
	}
	
}

function fillshopping_simple() {
	
	var shoppingcontent = document.getElementById('shoppingcontent');
	var shoppingfooter = document.getElementById('shoppingfooter');
	var leermeldung = document.getElementById('leermeldung');
	var shoppinghtml = shoppingcontent.innerHTML;
	
	var leertext = '<span></span>';
	
	if(shoppinghtml.toLowerCase() == leertext) {
		shoppingcontent.style.display = 'none';
		shoppingfooter.style.display = 'none';
		leermeldung.style.display = 'block';
	} else {
		shoppingfooter.style.display = 'block';
		leermeldung.style.display = 'none';
	}
	
}

function resizeshop() {
	
	var leftbar = document.getElementById("leftbar");
	var menu = document.getElementById('menu');
	var categories = document.getElementById('categories');
	var shopping = document.getElementById('shopping');
	var infobar = document.getElementById('infobar');
	var footer = document.getElementById('footer');
	var wrapper = document.getElementById('wrapper');
	
	var limit = 200;
	
	infobar.style.height = leftbar.offsetHeight - categories.offsetHeight - shopping.offsetHeight - 52 + "px";
	leftbar.style.height = categories.offsetHeight + shopping.offsetHeight + infobar.offsetHeight + 30 + "px";
	wrapper.style.height = menu.offsetHeight + leftbar.offsetHeight + footer.offsetHeight + 22 + "px";
	
	if(infobar.offsetHeight < limit) {
		infobar.style.height = limit + "px";
		leftbar.style.height = categories.offsetHeight + shopping.offsetHeight + infobar.offsetHeight + 30 + "px";
		wrapper.style.height = menu.offsetHeight + leftbar.offsetHeight + footer.offsetHeight + 22 + "px";
	}
	
}

function paymentshow() {
	
	if(document.getElementById('payments')) {
		
		var paying = document.getElementById('payment');
		var zahlungsart = paying.value;
		var infos = getElementsByClassName('paymentinfo');
		
		for(var i = 0; i < infos.length; i++) {
			
			infos[i].style.display = 'none';
			
		}
		
		document.getElementById('info_' + zahlungsart).style.display = 'block';
		
	/*	if(zahlungsart == "ccard") {
			document.getElementById('bstform_forwlink').className = 'bstform_forwlink_blocked';
		} else {
			document.getElementById('bstform_forwlink').className = 'bstform_forwlink';
		}*/
		
	}
	
}

function kaufm(x) {
  var k = (Math.round(x * 100) / 100).toString();
  k += (k.indexOf('.') == -1)? '.00' : '00';
  return k.substring(0, k.indexOf('.') + 3);
}


function truncateHTML() {
	
	var len = 350;
	var details;
	var p;
	var trunc;
	var dhtml;
	var dlink;
	var delim;
	var tsplits;
	var tpart;
	var dot;
	
	details = getElementsByClassName('details');
	p = getElementsByClassName('bookpretext');
	
	if(p.length != 0){
	
		for(i in p) {
			
			if(!isNaN(parseFloat(i))){
			
				trunc = p[i].innerHTML;
				dhtml = details[i].innerHTML;
		
				dlink = dhtml.split('"', 2)[1]
					
				// Set delimiter for splitting trunc
				if(trunc.indexOf('<br>')){
					delim = '<br>';
				} else if(trunc.indexOf('<br />')){
					delim = '<br />';
				} else if(trunc.indexOf('<br/>')){
					delim = '<br/>';
				}
				
				var delims = new RegExp(delim);
				
				// Eliminate all '\n' and '&nbsp;' for proper text display
				trunc = trunc.replace(/\n/g, ' ');
				trunc = trunc.replace(/&nbsp;/g, '');
				
				tsplits = trunc.split(delim).length;
				
				// Clear trunc from breaks and replace them correctly with space or dot space
				for(var x = 0;x < tsplits;x++){
						
					tpart = trunc.split(delim)[0];
						
					if(tpart != '') {var dot = tpart.charAt(tpart.length - 1);}else{}
						
					while(dot == ' '){
						tpart = tpart.substr(0, tpart.length -1);
						dot = tpart.charAt(tpart.length - 1);
					}
					
					/*if(dot == '.' || dot == ',' || dot == ':' || dot == ';' || dot == '?' || dot == '!'){
						trunc = trunc.replace(delims, ' ');
					}else{
						trunc = trunc.replace(delims, ' ');
					}*/
					trunc = trunc.replace(delims, ' ');
					
				}
				
				if (trunc.length > len) {
					
					// Truncate the content of p, then go back to the end of the previous word to ensure that we don't truncate in the middle of a word
					trunc = trunc.substring(0, len);
					
					while(trunc.charAt(trunc.length - 1) != ' ') {trunc = trunc.substr(0, trunc.length - 1);}
			
					// Add a link to the detail view
					trunc += '<a href="' + dlink + '"> ...mehr<\/a>';
					
				}
				
				p[i].innerHTML = trunc;
				
			}	
  		}
	}
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
}
