/*	---------------------------------------------

	Uhrzeit
	---------------------------------------------	*/
	
function start() {
	time();
	window.setInterval("time()", 1000);
}

function time() {
	var now = new Date();
	var hours = now.getHours();
	var minutes = now.getMinutes();
	var seconds = now.getSeconds();

	var thetime = (hours < 10) ? "0" + hours + ":" : hours + ":";
	thetime += (minutes < 10) ? "0" + minutes + ":" : minutes + ":";
	thetime += (seconds < 10) ? "0" + seconds : seconds;

	var element = document.getElementById("time");
	element.innerHTML = thetime;
}

/*	---------------------------------------------

	E-Mail-Hider
	---------------------------------------------	*/

function deStealthMail(node,linkText){
	var mail = "";
	for(var i=0; i<node.childNodes.length; i++){
		var n = node.childNodes[i];
		if(n.src!=undefined) mail+="@";
		else if(n.nodeType==3) mail+=n.data;
	}
	node.href="mailto:"+mail;
	if (linkText == "") node.innerHTML = mail;
	else node.innerHTML = linkText;
}

function deStealthMails(e){
	//if(!e) var e=document;
	if(!e) e = Element.select(e, "body")[0];
	var nodes = Element.select(e, "a");
	//var nodes = Element.select(e, "[href='#stealth']");
	//alert(e+"\n\n"+nodes);
	var linkText = "";
	for(var i=0; i<nodes.length; i++) {
		if( (nodes[i].href).indexOf("#stealth")!=-1 ) {
			var linkImage = nodes[i].getElementsByTagName("img");
			var linkText = linkImage[0].getAttribute('alt');
			if(linkText == null) {linkText = ""};
			deStealthMail(nodes[i],linkText);
		}
	}
}

/*	---------------------------------------------

	Detailansicht Produkte
	---------------------------------------------	*/
function toggleDetails( n ) {
	var ob = $('#pDetails' + n);
	var b = '#d' + n;

	if(ob[0].opened){
		ob[0].opened = false;
		ob.slideUp('slow');
		$(b).html('Details +');	
	} else {
		ob[0].opened = true;
		ob.slideDown('slow');
		$(b).html('Details &ndash;');	
	}
}

function doDivs( n ) {
	var a = $(n);
	if(a) for (var i=0;i<a.length;i++) {
		var h =	a[i].innerHTML;
		var d = $(a[i]).height();
		$(a[i]).html( '<div style="height:'+d+'px">' + h + '</div>' );
	}
}

function initBoxes() {
	start(); // uhr
	doDivs('.pDetails');
	//$('.pDetails').invoke('hide');
	$(".pDetails").hide();
}


// Init Reposition Cols

function pxToNumber( str ){	
	return (str)? Number( str.substring(0, str.length-2) ) : 0;
}

var info = "";

function initCollections(){
	collections = [];
	$(".products").each( function(){
		this.no = collections.length;
		collections[this.no] = this;
		
		boxNo = 0;
		collection = this;
		this.boxes = $(".pBox", this).each( function(){
			this.no = boxNo;
			this.collection = collection;
			boxNo++;
		});
		
		this.cols = [];
		this.boxWidth = $( this.boxes[0] ).width();
		this.boxMargin = pxToNumber( $( this.boxes[0] ).css("margin-right") );
		this.colNo = 0;
		
		this.reOrganize = function(){		
			var colNo = Math.floor( $( this ).width()/( this.boxWidth+this.boxMargin ) );
			if( colNo != this.colNo){
				var i;
				collection = this;				
				this.colNo = colNo;
				var oldCols = this.cols;
				
				for(i=0; i<this.colNo; i++) $( this ).append("<div class='boxCol' style='width:"+(this.boxWidth+this.boxMargin)+"px; float:left'></div>")[0];				
				this.cols = $(".boxCol", this);				
				
				//$(".pBox", this)
				this.boxes.each( function(){
					$( collection.cols[ this.no%collection.colNo ] ).append( this );
				});
			}
		}
		this.reOrganize();
	});
	
	if(collections.length>0) $(window).bind('resize', function(){
		for(var i=0; i<collections.length; i++) collections[i].reOrganize();
	});
}

var boxFilter;
function initBoxFilter(){
	boxFilter = $("#boxFilter");
	if(boxFilter){
		boxFilter.basePosition = boxFilter.position();
		boxFilter.baseOffset = boxFilter.offset();
		boxFilter.marginTop =  pxToNumber( boxFilter.css('margin-bottom') );		
		boxFilter.marginRight = $(window).width() - boxFilter.baseOffset.left - boxFilter.width();
		boxFilter.isFixed = false;
			
		boxFilter.rePosition = function(){	
			var fix = ( $('html').scrollTop()+this.marginTop > this.baseOffset.top );
			
			if(fix != this.isFixed){
				
				if(fix){		
					$(this).css({
						'position':	'fixed',
						'top':		Math.round(this.marginTop)+'px',
						'right':	Math.round(this.marginRight)+'px'
						//'left':		Math.round($("#logo").offset().left)+"px"
					});
				} else {
					$(this).css({
						'position':	'static',
						'top':		'0px',
						'right':	'0px'
					});
				}				
				
				this.isFixed = fix;
			}
		}
		
		boxFilter.rePosition();
		
		$(window).bind('resize scroll', function(){
			boxFilter.rePosition();
		});
	}
}

function initHide(){
	$(".hideContainer").each( function(){
									   
		var hLink = $(".hideLink", this).attr("href", "#d")[0];
		var hContent = hLink.content = $(".hideContent", this).hide();
		
		hLink.hidden = false;	
		hLink.switchHide = function(){
			this.hidden = !this.hidden;
			if(this.hidden){
				this.content.slideUp(3000);
				$(this).html('Details +');
			} else {
				this.content.slideDown(3000);
				$(this).html('Details &ndash;');	
			}
		}	
		$(".hideLink", this).click( function(){
			this.switchHide();			
		});
		hLink.switchHide();		
		
	});
}

function getCompleteNode( xml, name, pS ){
	var p = pS;
	var pC = xml.indexOf( "/>", p );
	var pO = xml.indexOf( ">", p );
	var str;
	if( pC < pO) return xml.substring( pS, pC+2 );
	else {
		var closed = false;
		p = pO;		
		do{	pC = xml.indexOf("</"+name, p);
			pO = xml.indexOf("<"+name, p);
			//alert(pS+" // "+pC+" < "+pO+" // "+xml.substring(pC, pC+30)+" < "+xml.substring(pO, pO+30) );
			if(pO==-1 || pC<pO){
				closed = false;				
				return xml.substring( pS, xml.indexOf( ">", pC )+1 );
			} else {
				str = getCompleteNode( xml, name, pO )
				p = pO + str.length;
			}			
		} while(!closed)
	}
}

function getNodefromString( xml, id ){	
	var expression = "<([a-z]+)([^>]*)id\s*=\s*[\"\']" + id + "[\"\']";
	var startPos = xml.search( expression );
	var tagName = RegExp.$1;
	/*
	var expStartTag = "<"+tagName+"[^>\/]*>";
	var endTagStartTag = "<\/"+tagName+">";
	
	var pStartTag = 0;
	var pEndTag = startPos;
	
	do{
		pStartTag = xml.search( expression );;
	} while(pStartTag!=-1 && pStartTag<pEndTag)
	
	
	//var expression = "<(\w+)(\s+\w=[\"\'][^\"\'>]*[\"\'])*\s+id=[\"\']" + id + "[\"\']";
	var p = xml.search( expression );
	*/
	return getCompleteNode( xml.substr(startPos), RegExp.$1, 0);
}

function loadBaukasten(href){
	$.ajax({
		url: href,
		cache: false,
		success: function(xml){
			//alert("loaded");
			var str = getNodefromString( xml, "baukastenInfo" );
			//alert(str+" // "+str.length);
			$("#baukastenInfo").html( str );
		}
	});	
}

function initBaukasten(){
	$(".baukastenLink").click(function () {
		loadBaukasten(this.href);	
		$(this).hide();
		return false;
	});
	$(".baukastenOutLink").click(function () {
		loadBaukasten(this.href);
		$(this).parents(".pBox").remove();
		return false;
	});
}

inited = false;
function init(){
	if(!inited){
		inited = true;
		initHide();
		initBoxFilter();
		initCollections();
		initBoxes();
		initBaukasten();
	}
}

$(document).ready( init );

