// page init
$(function() {
	$('.hide-row').show();
	initCustomForms();
	$('.hide-row').hide();
	
	initSlideShow();
	//initTopSlide();
	initCufon();
	initTabs();
	popupInit();

	// CRE Help D BEGIN
	initLightbox();
	// CRE Help D END
});

// popups
function popupInit(){
	var _linkPAS = $('a.open-popup');
	var _linkBestellen =  $('a.open-bestellen');
	
	_linkPAS.click(function(){
		var _id = this.href.substr(this.href.indexOf('#'));
		$(_id).fadeIn(300).css('top',setTop($(_id)));
		return false;	
	});
	_linkBestellen.click(function(){
		var _id = this.rel;
		var _check = $('div.product-box div.checkboxAreaChecked');
		if (_check.length) {
			$(_id).fadeIn(300).css('top',setTop($(_id)));
			return false;
		}
	});
	var _close = $('a.close');
	_close.click(function(){
		var _id = this.href.substr(this.href.indexOf('#'));
		$(_id).fadeOut(300);
		return false;	
	});
	function setTop(_el){
		var _top = 0, _height;
		var _h = _el.outerHeight();
		if (window.innerHeight) _height = window.innerHeight;
		else _height = document.documentElement.clientHeight;
		var _offset = $('#content div.cart-holder').offset();
		_top = _height/2 - _h/2 - _offset.top + $(window).scrollTop();
		return _top;
	}
}

// top slide navigation function
function initTwopSlide() {
	var _activeClass = 'active';
	var _slideSpeed = 300;

	$('div.top-slide').each(function(){
		var _holder = $(this);
		var _opener = _holder.find('.open-link');
		var _slider = _holder.find('.box-holder');

		// open-close
		_opener.click(function(){
			if(_holder.hasClass(_activeClass)) {
				_holder.removeClass(_activeClass);
				_slider.slideUp(_slideSpeed);
			} else {
				_holder.addClass(_activeClass)
				_slider.slideDown(_slideSpeed);
			}
			return false;
		});

		// slide menu
		var _slideMenu = _holder.find('ul.slide-list').eq(0);
		var _navBlocks = _slideMenu.find('li');
		var _breadCrumbs = _holder.find('.slide-open ul.slide-list').eq(0);

		_navBlocks.each(function(){
			var _item = $(this);
			var _opener = _item.find('>a').eq(0);
			var _drop = _item.find('>ul').eq(0);

			_opener.click(function(){
				if(_item.hasClass(_activeClass)) {
					_item.removeClass(_activeClass);
					if(_drop.length) {
						_drop.fadeOut(_slideSpeed,function(){
							rebuildBreadcrumbs();
						});
					} else {
						rebuildBreadcrumbs();
					}
				} else {
					_item.parent().children().filter('.'+_activeClass).find('>a').eq(0).trigger('click');
					if(_item.parent().get(0) == _slideMenu.get(0)) _slideMenu.find('li.'+_activeClass).removeClass(_activeClass).find('>ul').hide();

					_item.addClass(_activeClass)
					if(_drop.length) {
						_drop.fadeIn(_slideSpeed,function(){
							rebuildBreadcrumbs();
						});
					} else {
						rebuildBreadcrumbs();
					}
					recalcHeight();
				}
				return false;
			});
		})

		// flexible height
		function recalcHeight() {
			var _blocks = _slideMenu.find('li.active > ul');
			var _maxHeight = _slideMenu.outerHeight(true);
			_slideMenu.css({height:'auto'})

			_blocks.each(function(){
				var _h = $(this).outerHeight(true);
				if(_h>_maxHeight) _maxHeight = _h;
			});
			_slider.find('.frame:eq(0)').animate({height:_maxHeight},{duration:_slideSpeed,queue:false});
		}

		// rebuild breadcrumbs
		function rebuildBreadcrumbs() {
			var _mainCategory = _breadCrumbs.children().eq(0);
			_breadCrumbs.empty();
			_breadCrumbs.append(_mainCategory);

			var _item;
			var _start = _slideMenu.find('li.active:visible');

			_start.each(function(){
				_breadCrumbs.append('<li><a href="#">'+$(this).find('>a:eq(0)').html()+'</a></li>');
			});

			if(_breadCrumbs.children().length > 1) {
				var _last = _breadCrumbs.children(':last').addClass('right');
				_last.html(_last.find('a').html());
			}

			// refresh cufon
			Cufon.replace('.slide-open .slide-list', { fontFamily: 'HelveticaRoundedLTStd-Bd', hover: true });
		}
	});
}

// slideshow function
function initSlideShow() {
	var _activeClass = 'active';
	var _hideSpeed = 200;
	var _fadeSpeed = 850;
	var _switchTime = 3000;

	$('div.slideshow').each(function(){
		// init gallery
		var _autoSlide = true;
		var _holder = $(this);
		var _slides = _holder.find('div.gallery-slide');
		var _slideCount = _slides.length;
		var _pagerLinks = _holder.find('div.pagination-holder ul a');
		var _currentIndex = 0;
		var _oldIndex = 0;
		var _timer;
		_slides.removeClass(_activeClass).hide().eq(_currentIndex).addClass(_activeClass).show();

		// gallery cotnrol
		_pagerLinks.each(function(_ind){
			$(this).click(function(){
				if(_timer) clearTimeout(_timer);
				_autoSlide = false;

				if(_currentIndex!=_ind) {
					_oldIndex = _currentIndex;
					_currentIndex = _ind
					switchSlide();
				}
				return false;
			});
		});

		// gallery animation
		function switchSlide() {
			_slides.eq(_oldIndex).find('div.ctext').fadeOut(_hideSpeed,function(){
				_slides.eq(_oldIndex).fadeOut(_fadeSpeed).removeClass(_activeClass);
				_slides.eq(_currentIndex).find('.ctext').show();
				_slides.eq(_currentIndex).fadeIn(_fadeSpeed).addClass(_activeClass);
				_pagerLinks.removeClass(_activeClass).eq(_currentIndex).addClass(_activeClass)
				autoSlide();
			});
		}

		// autoslide function
		function autoSlide() {
			if(!_autoSlide) return;
			if(_timer) clearTimeout(_timer);
			_timer = setTimeout(function(){
				_oldIndex = _currentIndex;
				if(_currentIndex < _slideCount-1) _currentIndex++;
				else _currentIndex=0;
				switchSlide();
			},_switchTime);
		}
		_holder.hover(function(){
			//if(_timer) clearTimeout(_timer);
		},function(){
			autoSlide();
		});
		autoSlide();
	});
}

// tabs function
function initTabs() {
	$('ul.tabset').each(function(){
		var _list = $(this);
		var _links = _list.find('a.tab');

		_links.each(function() {
			var _link = $(this);
			var _href = _link.attr('href');
			var _tab = $(_href);

			if(_link.hasClass('active')) _tab.show();
			else _tab.hide();

			_link.click(function(){
				_links.filter('.active').each(function(){
					$($(this).removeClass('active').attr('href')).hide();
				});
				_link.addClass('active');
				_tab.show();
				return false;
			});
		});
	});
}

// custom forms script
var _selectHeight = 22;
var _forms = document.getElementsByTagName('form');
var inputs = new Array();
var selects = new Array();
var labels = new Array();
var checkboxes = new Array();
var checkboxLabels = new Array();
var buttons = new Array();
var selects = new Array();
var all_selects = false;
var active_select = null;
var agt = navigator.userAgent.toLowerCase();
var isMac = is_mac();
var selectText = "please select";
var IN_CFORMS = true;

function is_mac() {
	if (navigator.appVersion.indexOf("Safari") != -1)
	{
		if(!window.getComputedStyle)
		{
			return true;
		}
	}

	return false;
}

function initCustomForms() {
	if(!document.getElementById) {return false;}
	getElements();
	separateElements();
	//replaceCheckboxes();
	//replaceSelects();

	var _selects = document.getElementsByTagName('select');
	var _SelctClassName = [];
	if (_selects) {
		for (var i = 0; i < _selects.length; i++) {
			if (_selects[i].className != '' && _selects[i].className != 'outtaHere')
				_SelctClassName[i] = ' drop-'+_selects[i].className;
		}
		for (var i = 0; i < _SelctClassName.length; i++) {
			var _selectDrop = document.getElementById('optionsDiv'+i);
			if (_selectDrop) {
				if (_SelctClassName[i])
					_selectDrop.className += _SelctClassName[i];
			}
		}
	}
}


// getting all the required elements
function getElements() {
	for (var nf = 0; nf < document.getElementsByTagName("form").length; nf++) {
		for(var nfi = 0; nfi < document.forms[nf].getElementsByTagName("input").length; nfi++) {inputs.push(document.forms[nf].getElementsByTagName("input")[nfi]);}
		for(var nfl = 0; nfl < document.forms[nf].getElementsByTagName("label").length; nfl++) {labels.push(document.forms[nf].getElementsByTagName("label")[nfl]);}
		for(var nfs = 0; nfs < document.forms[nf].getElementsByTagName("select").length; nfs++) {selects.push(document.forms[nf].getElementsByTagName("select")[nfs]);}
	}
}

// separating all the elements in their respective arrays
function separateElements() {
	var r = 0; var c = 0; var t = 0; var rl = 0; var cl = 0; var tl = 0; var b = 0;
	for (var q = 0; q < inputs.length; q++) {
		if(inputs[q].type == "checkbox") {
			checkboxes[c] = inputs[q]; ++c;
			for(var w = 0; w < labels.length; w++) {
				if((inputs[q].id) && (labels[w].htmlFor == inputs[q].id))
				{
					checkboxLabels[cl] = labels[w];
					++cl;
				}
			}
		}
		if((inputs[q].type == "submit") || (inputs[q].type == "button")) {
			buttons[b] = inputs[q]; ++b;
		}
	}
}

//replacing checkboxes
function replaceCheckboxes() {
	for (var q = 0; q < checkboxes.length; q++) {
		checkboxes[q].className += " outtaHere";
		var checkboxArea = document.createElement("div");
		if(checkboxes[q].checked) {
			checkboxArea.className = "checkboxAreaChecked";
		}
		else {
			checkboxArea.className = "checkboxArea";
		}
		checkboxArea.id = "myCheckbox" + q;
		checkboxes[q].parentNode.insertBefore(checkboxArea, checkboxes[q]);
		checkboxes[q]._ca = checkboxArea;
		checkboxArea.onclick = checkboxArea.onclick2 = new Function('rechangeCheckboxes('+q+')');
		if (checkboxLabels[q])
		{
			checkboxLabels[q].onclick = new Function('changeCheckboxes('+q+')');
		}

		checkboxes[q].onkeydown = checkEvent;
	}
	return true;
}

//checking checkboxes
function checkCheckboxes(who, action) {
	var what = checkboxes[who]._ca;
	if (typeof $ == 'function') {
		$('#hide-'+checkboxes[who].id).toggle();
	}
	if(action == true) {
		what.className = "checkboxAreaChecked";
		what.checked = true;
	}
	if(action == false) {
		what.className = "checkboxArea";
		what.checked = false;
	}
}

//changing checkboxes
function changeCheckboxes(who) {
	if(checkboxes[who].checked) {
		checkCheckboxes(who, false);
	}
	else {
		checkCheckboxes(who, true);
	}
}

//rechanging checkboxes
function rechangeCheckboxes(who) {
	var tester = false;
	if(checkboxes[who].checked == true) {
		tester = false;
	}
	else {
		tester = true;
	}
	checkboxes[who].checked = tester;
	checkCheckboxes(who, tester);
}

//check event
function checkEvent(e) {
	if (!e) var e = window.event;
	if(e.keyCode == 32) {for (var q = 0; q < checkboxes.length; q++) {if(this == checkboxes[q]) {changeCheckboxes(q);}}} //check if space is pressed
}


function replaceSelects() {
	for(var q = 0; q < selects.length; q++) {
	if (!selects[q].replaced && selects[q].offsetWidth)
	{
		selects[q]._number = q;
		//create and build div structure
		var selectArea = document.createElement("div");
		var left = document.createElement("span");
		left.className = "left";
		selectArea.appendChild(left);

		var disabled = document.createElement("span");
		disabled.className = "disabled";
		selectArea.appendChild(disabled);

		selects[q]._disabled = disabled;
		var center = document.createElement("span");
		var button = document.createElement("a");
		var text = document.createTextNode(selectText);
		center.id = "mySelectText"+q;

		var stWidth = selects[q].offsetWidth;
		selectArea.style.width = stWidth + "px";
		if (selects[q].parentNode.className.indexOf("type2") != -1){
			button.href = "javascript:showOptions("+q+",true)";
		} else {
			button.href = "javascript:showOptions("+q+",false)";
		}
		button.className = "selectButton";
		selectArea.className = "selectArea";

		selectArea.className += " " + selects[q].className;
		selectArea.id = "sarea"+q;
		center.className = "center";
		center.appendChild(text);
		selectArea.appendChild(center);
		selectArea.appendChild(button);

		//hide the select field
		selects[q].className += " outtaHere";
		//insert select div
		selects[q].parentNode.insertBefore(selectArea, selects[q]);
		//build & place options div

		var optionsDiv = document.createElement("div");

		var optionsList = document.createElement("ul");
		optionsDiv.innerHTML += "<div class='select-top'><div></div></div>";
		optionsDiv.appendChild(optionsList);

		selects[q]._options = optionsList;

		optionsDiv.style.width = stWidth + "px";
		optionsDiv._parent = selectArea;

		optionsDiv.className = "optionsDivInvisible";
		optionsDiv.id = "optionsDiv"+q;


		populateSelectOptions(selects[q]);
		optionsDiv.innerHTML += "<div class='select-bottom'><div class='select-bottom-left'></div><div class='select-bottom-right'></div></div>";
		document.getElementsByTagName("body")[0].appendChild(optionsDiv);
		selects[q].replaced = true;
		}
	all_selects = true;
	}
}

//collecting select options
function populateSelectOptions(me) {
	me._options.innerHTML = "";

	for(var w = 0; w < me.options.length; w++) {

		var optionHolder = document.createElement('li');
		var optionLink = document.createElement('a');
		var optionTxt;
		if (me.options[w].title.indexOf('image') != -1) {
			optionTxt = document.createElement('img');
			optionTxt.src = me.options[w].title;
		} else {
			optionTxt = document.createTextNode(me.options[w].text);
		}

		optionLink.href = "javascript:showOptions("+me._number+"); selectMe('"+me.id+"',"+w+","+me._number+");";
		optionLink.appendChild(optionTxt);
		optionHolder.appendChild(optionLink);
		me._options.appendChild(optionHolder);
		//check for pre-selected items
		if(me.options[w].selected) {
			selectMe(me.id,w,me._number);
		}
	}
	if (me.disabled) {
		me._disabled.style.display = "block";
	}
	else {
		me._disabled.style.display = "none";
	}
}

//selecting me
function selectMe(selectFieldId,linkNo,selectNo) {
	selectField = selects[selectNo];
	for(var k = 0; k < selectField.options.length; k++) {
		if(k==linkNo) {
			selectField.options[k].selected = true;
		}
		else {
			selectField.options[k].selected = false;
		}
	}

	//show selected option
	textVar = document.getElementById("mySelectText"+selectNo);
	var newText;
	if (selectField.options[linkNo].title.indexOf('image') != -1) {
		newText = document.createElement('img');
		newText.src = selectField.options[linkNo].title;
	} else {
		newText = document.createTextNode(selectField.options[linkNo].text);
	}
	textVar.replaceChild(newText, textVar.childNodes[0]);
	if (selectField.onchange && all_selects)
		{
			eval(selectField.onchange());
		}
}
//showing options
function showOptions(g) {
		_elem = document.getElementById("optionsDiv"+g);
		var divArea = document.getElementById("sarea"+g);
		if (active_select && active_select != _elem) {
			active_select.className = active_select.className.replace('optionsDivVisible','');
			active_select.className += " optionsDivInvisible";
			active_select.style.height = "auto";
		}
		if(_elem.className.indexOf("optionsDivInvisible") != -1) {
			_elem.style.left = "-9999px";
			_elem.style.top = findPosY(divArea) + _selectHeight + 'px';
			_elem.className = _elem.className.replace('optionsDivInvisible','');
			_elem.className += " optionsDivVisible";
			/*if (_elem.offsetHeight > 200)
			{
				_elem.style.height = "200px";
			}*/
			_elem.style.left = findPosX(divArea) + 'px';

			active_select = _elem;
			if(document.documentElement)
			{
				document.documentElement.onclick = hideSelectOptions;
			}
			else
			{
				window.onclick = hideSelectOptions;
			}
		}
		else if(_elem.className.indexOf("optionsDivVisible") != -1) {
			_elem.style.height = "auto";
			_elem.className = _elem.className.replace('optionsDivVisible','');
			_elem.className += " optionsDivInvisible";
		}

		// for mouseout
		/*_elem.timer = false;
		_elem.onmouseover = function() {
			if (this.timer) clearTimeout(this.timer);
		}
		_elem.onmouseout = function() {
			var _this = this;
			this.timer = setTimeout(function(){
				_this.style.height = "auto";
				_this.className = _this.className.replace('optionsDivVisible','');
				if (_elem.className.indexOf('optionsDivInvisible') == -1)
					_this.className += " optionsDivInvisible";
			},200);
		}*/
}

function hideSelectOptions(e)
{
	if(active_select)
	{
		if(!e) e = window.event;
		var _target = (e.target || e.srcElement);
		if(isElementBefore(_target,'selectArea') == 0 && isElementBefore(_target,'optionsDiv') == 0)
		{
			active_select.className = active_select.className.replace('optionsDivVisible', '');
			active_select.className = active_select.className.replace('optionsDivInvisible', '');
			active_select.className += " optionsDivInvisible";
			active_select = false;

			if(document.documentElement)
			{
				document.documentElement.onclick = function(){};
			}
			else
			{
				window.onclick = null;
			}
		}
	}
}

function isElementBefore(_el,_class)
{
	var _parent = _el;
	do
	{
		_parent = _parent.parentNode;
	}
	while(_parent && _parent.className != null && _parent.className.indexOf(_class) == -1)

	if(_parent.className && _parent.className.indexOf(_class) != -1)
	{
		return 1;
	}
	else
	{
		return 0;
	}

}

function findPosY(obj) {
	var posTop = 0;
	while (obj.offsetParent) {posTop += obj.offsetTop; obj = obj.offsetParent;}
	return posTop;
}
function findPosX(obj) {
	var posLeft = 0;
	while (obj.offsetParent) {posLeft += obj.offsetLeft; obj = obj.offsetParent;}
	return posLeft;
}

// CRE Help D BEGIN
function initLightbox()
{
	var $photo = $('.product-info .photo');
	var $prodimg = $photo.children('img').css({cursor: 'pointer'});
	$photo.find('a.photo-link').add($prodimg).click(function()
	{
		$.fancybox({href: $prodimg.attr('src')});
		return false;
	});
}
// CRE Help D END
