Event.observe(document, 'dom:loaded', function(){
	initOpenClose();
	initGallery();
	initMenu();
	initTabs();
	initDropDown();
	//clearInputs();
	initTT();
});
Event.observe(window, 'load', function(){
	setTimeout(initStretchCols,100);
});

function initStretchCols() {
	var holders = $$('ul.products-grid');
	var count = 3;
	holders.each(function(obj, ind){
		var holder = obj;
		function setHeight(elements) {
			var step = 0;
			var items = elements;
			var len = items.length / count;
			var arr = [];
			var arrHeight = [];
			for(var i = 0; i < len; i++) {
				arr[i] = [];
				arrHeight[i] = 0;
				for(var j = 0; j < count; j++) {
					if(step * count + j >= items.length)break;
					var curItem = items[step * count + j];
					arr[i][j] = curItem;
					if(curItem.getDimensions().height > arrHeight[i]) {
						arrHeight[i] = curItem.getDimensions().height;
					}
				}
				for(var k = 0; k < arr[i].length; k++) {
					if(arr[i][k].getDimensions().height < arrHeight[i]) {
						arr[i][k].setStyle({height:arrHeight[i] + 'px'});
					}
				}
				step++;
			}
		}
		setHeight(holder.select('li .product-name'));
		setHeight(holder.select('li div.section'));
	});
}

function initTT(){
	var ie6 = /MSIE 6/.test(navigator.userAgent);
	$$('a.open-tooltip').each(function(item){
		var tt = item.up().select('.tooltip')[0];
		var iframe = new Element('iframe', {'class': 'new'});
		var t = item.positionedOffset().top;
		var l = item.positionedOffset().left;
		var wTt = tt.getDimensions().width;
		var wIt = item.getDimensions().width;
		var hTt = tt.getDimensions().height;
		var hIt = item.getDimensions().height;

		item.observe('mouseover', function(){
			tt.setStyle({top:(t-hTt-hIt-15)+'px', left: -((wTt-wIt/2))+'px'});
			if(ie6) iframe.setStyle({left: -((wTt-wIt/2))+'px'});
		});
		item.observe('mouseout', function(){
			tt.setStyle({left: '-9999px'});
			if(ie6) iframe.setStyle({left: '-9999px'});
		});

		if(ie6){
			iframe.setStyle({
				'position':'absolute',
				left:'-9999px',
				top:(t-hTt-hIt-15)+'px',
				width: wTt+'px',
				height: hTt+'px',
				opacity: 0
			})
			item.up().appendChild(iframe);
		};
	});
}

function clearInputs(){
	clearFormFields({
		clearInputs: true,
		clearTextareas: true,
		passwordFieldText: true,
		addClassFocus: "focus",
		filterClass: "default"
	});
}

function initMenu(){
	if(document.getElementById('tabset1')){
		initAutoScalingNav({
			menuId: "tabset1",
			sideClasses: true,
			spacing: 20,
			tag: "a"
		});
	}
	if(document.getElementById('tabset2')){
		initAutoScalingNav({
			menuId: "tabset2",
			sideClasses: true,
			spacing: 20,
			tag: "a"
		});
	}
}

function initGallery() {
	$$('div.carousel').each(function(obj, ind){
		new pCycleGallery(obj, {
			btnPrev:'a.prev',
			btnNext:'a.next',
			slidesHolder:'div.g1',
			slider:'ul',
			slides:'li',
			slideSpeed:0.75,
			switchTime:5000,
			autoSlide:true
		})
	})
}

function initOpenClose(){
	$$('.top-panel').each(function(item){
		var link = item.select('.open-panel')[0];
		var h = item.getDimensions().height;
		link.observe('click', function(e){
			if(item.hasClassName('panel-active')){
				item.removeClassName('panel-active');
				new Effect.Morph(item, {style: {'marginTop': -h+4+'px'}, duration: 0.5});
			}
			else{
				item.addClassName('panel-active');
				new Effect.Morph(item, {style: {'marginTop': 0+'px'}, duration: 0.5});
			}
			e.preventDefault();
		});
	});
}

function initDropDown(){
	var nav = document.getElementById("nav");
	if(nav) {
		var lis = nav.getElementsByTagName("li");
		for (var i=0; i<lis.length; i++) {
			if(lis[i].getElementsByTagName("ul").length > 0) {
				lis[i].className += " has-drop-down"
				lis[i].getElementsByTagName("a")[0].className += " has-drop-down-a"
			}
			lis[i].onmouseover = function()	{
				this.className += " hover";
			}
			lis[i].onmouseout = function() {
				this.className = this.className.replace(" hover", "");
			}
		}
	}
}

var pCycleGallery = Class.create({
	initialize: function(elem, opt){
		// gallery options
		opt = opt || {};
		this.options = {
			btnPrev:'a.link-prev',
			btnNext:'a.link-next',
			pagerLinks:'ul.switcher li',
			slidesHolder:'div.slides-holder',
			activeClass:'active',
			slider:'ul',
			slides:'li',
			slideSpeed:1.5,
			switchTime:5000,
			autoSlide:true
		};
		Object.extend(this.options, opt);

		// gallery init
		this.timer = false;
		this.gallery = elem;
		this.activeClass = this.options.activeClass;
		this.autoSlide = this.options.autoSlide;
		this.switchTime = this.options.switchTime;
		this.slideSpeed = this.options.slideSpeed;
		this.slidesHolder = elem.select(this.options.slidesHolder)[0];
		this.slider = this.slidesHolder.select(this.options.slider)[0];
		this.slides = this.slider.select(this.options.slides);
		this.pagerLinks = elem.select(this.options.pagerLinks);
		this.btnPrev = elem.select(this.options.btnPrev)[0];
		this.btnNext = elem.select(this.options.btnNext)[0];

		// gallery variables
		this.slideCount = null;
		this.currentStep = 0;
		this.oldStep = this.currentStep;
		this.holderWidth = null;
		this.stepWidth = null;
		this.visibleCount = null;
		this.sumWidth = null;
		this.direction = false;
		this.animating = false;

		// gallery init
		this.stepCount = this.slides.length;
		if(!this.stepCount) return true;
		this.holderWidth = this.slidesHolder.getDimensions().width;
		this.stepWidth = this.slides[0].getDimensions().width;

		this.slidesHolder.setStyle({
			height: this.slidesHolder.getDimensions().height+'px',
			position: 'relative'
		});
		this.slides.each(function(slide,ind){
			slide.setStyle({
				position:'absolute',
				left: this.stepWidth + 'px',
				top: 0
			});
			if(this.currentStep == ind) slide.setStyle({left:0});
		}.bind(this));


		// gallery control
		if(this.btnPrev) this.btnPrev.observe('click', this.prevSlide.bind(this));
		if(this.btnNext) this.btnNext.observe('click', this.nextSlide.bind(this));
		if(this.pagerLinks) {
			this.pagerLinks.each(function(item, ind){
				item.observe('click',function(e){
					e.preventDefault();
					if(!this.animating && this.currentStep != ind) {
						this.oldStep = this.currentStep;
						this.currentStep = ind;
						this.direction = (this.oldStep < this.currentStep);
						this.switchSlide();
					}
				}.bind(this));
			}.bind(this));
		}
		this.autoSwitch();
	},
	refreshPagination: function(){
		if(this.pagerLinks) {
			this.pagerLinks.each(function(item, ind){
				if(this.currentStep == ind) item.addClassName(this.activeClass);
				else item.removeClassName(this.activeClass);
			}.bind(this));
		}
	},
	prevSlide: function(event){
		if(event) event.preventDefault();
		if(!this.animating) {
			this.oldStep = this.currentStep;
			if(this.currentStep > 0) this.currentStep--;
			else this.currentStep = this.stepCount-1;
			this.direction = false;
			this.switchSlide();
		}
	},
	nextSlide: function(event){
		if(event) event.preventDefault();
		if(!this.animating) {
			this.oldStep = this.currentStep;
			if(this.currentStep < this.stepCount-1) this.currentStep++;
			else this.currentStep = 0;
			this.direction = true;
			this.switchSlide();
		}
	},
	switchSlide: function(){
		this.animating = true;
		var oldSlide = this.slides[this.oldStep];
		var newSlide = this.slides[this.currentStep].setStyle({left:this.stepWidth*(this.direction ? 1 : -1)+'px'});

		new Effect.Morph(newSlide, {
			style: {left : '0px'},
			afterFinish: function() {this.animating = false}.bind(this),
			duration: this.slideSpeed
		});
		new Effect.Morph(oldSlide, {
			style: {left : (this.stepWidth*(this.direction ? -1 : 1))+'px'},
			duration: this.slideSpeed
		});

		this.autoSwitch();
		this.refreshPagination();
	},
	autoSwitch: function(){
		if(this.timer) clearTimeout(this.timer);
		if(this.autoSlide) this.timer = setTimeout(this.nextSlide.bind(this),this.switchTime);
	}
});

function initTabs(){
	var sets = document.getElementsByTagName("ul");
	for (var i = 0; i < sets.length; i++)
	{
		if (sets[i].className.indexOf("tabset") != -1)
		{
			var tabs = [];
			var links = sets[i].getElementsByTagName("a");
			for (var j = 0; j < links.length; j++)
			{
				if (links[j].className.indexOf("tab") != -1)
				{
					tabs.push(links[j]);
					links[j].tabs = tabs;
					var c = document.getElementById(links[j].href.substr(links[j].href.indexOf("#") + 1));

					//reset all tabs on start
					if (c) if (links[j].className.indexOf("active") != -1) c.style.display = "block";
					else c.style.display = "none";

					links[j].onclick = function ()
					{
						var c = document.getElementById(this.href.substr(this.href.indexOf("#") + 1));
						if (c)
						{
							//reset all tabs before change
							for (var i = 0; i < this.tabs.length; i++)
							{
								var tab = document.getElementById(this.tabs[i].href.substr(this.tabs[i].href.indexOf("#") + 1));
								if (tab)
								{
									tab.style.display = "none";
								}
								this.tabs[i].className = this.tabs[i].className.replace("active", "");
							}
							this.className += " active";
							c.style.display = "block";
							return false;
						}
					}
				}
			}
		}
	}
}

function initAutoScalingNav(o){
	if (!o.menuId) o.menuId = "tabset";
	if (!o.tag) o.tag = "a";
	if (!o.spacing) o.spacing = 0;
	if (!o.constant) o.constant = 0;
	if (!o.minPaddings) o.minPaddings = 0;
	if (!o.liHovering) o.liHovering = false;
	if (!o.sideClasses) o.sideClasses = false;
	var nav = document.getElementById(o.menuId);
	if(nav)
	{
		var lis = nav.getElementsByTagName("li");
		var asFl = [];
		var lisFl = [];
		for (var i=0, j=0; i<lis.length; i++)
		{
			if(lis[i].parentNode == nav)
			{
				var t = lis[i].getElementsByTagName(o.tag).item(0);
				asFl.push(t);
				asFl[j++].width = t.offsetWidth;
				lisFl.push(lis[i]);
			}
			if(o.liHovering)
			{
				lis[i].onmouseover = function()
				{
					this.className += " hover";
				}
				lis[i].onmouseout = function()
				{
					this.className = this.className.replace("hover", "");
				}
			}
		}
		var menuWidth = nav.clientWidth - asFl.length*o.spacing - o.constant;
		if(getItemsWidth(asFl) < menuWidth)
		{
			for (var i=0; getItemsWidth(asFl) < menuWidth; i++)
			{
				asFl[i].width++;
				if(i >= asFl.length-1) i=-1;
			}
			for (var i=0; i<asFl.length; i++)
			{
				asFl[i].style.width = asFl[i].width + "px";
			}
		}
		else if(o.minPaddings > 0)
		{
			for (var i=0; i<asFl.length; i++)
			{
				asFl[i].style.width = asFl[i].width + o.minPaddings*2 + "px";
			}
		}
	}
	function getItemsWidth(a)
	{
		var w = 0;
		for(var q=0; q<a.length; q++)
		{
			w += a[q].width;
		}
		return w;
	}
	if(o.sideClasses)
	{
		lisFl[0].className += " first-child";
		lisFl[lisFl.length-1].className += " last-child";
	}
}

function clearFormFields(o){
	if (o.clearInputs == null) o.clearInputs = true;
	if (o.clearTextareas == null) o.clearTextareas = true;
	if (o.passwordFieldText == null) o.passwordFieldText = false;
	if (o.addClassFocus == null) o.addClassFocus = false;
	if (!o.filter) o.filter = "default";
	if(o.clearInputs) {
		var inputs = document.getElementsByTagName("input");
		for (var i = 0; i < inputs.length; i++ ) {
			if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass)) {
				inputs[i].valueHtml = inputs[i].value;
				inputs[i].onfocus = function ()	{
					if(this.valueHtml == this.value) this.value = "";
					if(this.fake) {
						inputsSwap(this, this.previousSibling);
						this.previousSibling.focus();
					}
					if(o.addClassFocus && !this.fake) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				inputs[i].onblur = function () {
					if(this.value == "") {
						this.value = this.valueHtml;
						if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
					}
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
				if(o.passwordFieldText && inputs[i].type == "password") {
					var fakeInput = document.createElement("input");
					fakeInput.type = "text";
					fakeInput.value = inputs[i].value;
					fakeInput.className = inputs[i].className;
					fakeInput.fake = true;
					inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
					inputsSwap(inputs[i], null);
				}
			}
		}
	}
	if(o.clearTextareas) {
		var textareas = document.getElementsByTagName("textarea");
		for(var i=0; i<textareas.length; i++) {
			if(textareas[i].className.indexOf(o.filterClass)) {
				textareas[i].valueHtml = textareas[i].value;
				textareas[i].onfocus = function() {
					if(this.value == this.valueHtml) this.value = "";
					if(o.addClassFocus) {
						this.className += " " + o.addClassFocus;
						this.parentNode.className += " parent-" + o.addClassFocus;
					}
				}
				textareas[i].onblur = function() {
					if(this.value == "") this.value = this.valueHtml;
					if(o.addClassFocus) {
						this.className = this.className.replace(o.addClassFocus, "");
						this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
					}
				}
			}
		}
	}
	function inputsSwap(el, el2) {
		if(el) el.style.display = "none";
		if(el2) el2.style.display = "inline";
	}
}

var cssFix = function(){
	var u = navigator.userAgent.toLowerCase(),
		addClass = function(el,val){
		if(!el.className) {
			el.className = val;
		} else {
			var newCl = el.className;
			newCl+=(" "+val);
			el.className = newCl;
		}
	},
	is = function(t){return (u.indexOf(t)!=-1)};
	addClass(document.getElementsByTagName('html')[0],[
		(!(/opera|webtv/i.test(u))&&/msie (\d)/.test(u))?('ie ie'+RegExp.$1)
		:is('firefox/2')?'gecko ff2'
		:is('firefox/3')?'gecko ff3'
		:is('gecko/')?'gecko'
		:is('chrome/')?'chrome'
		:is('opera/9')?'opera opera9':/opera (\d)/.test(u)?'opera opera'+RegExp.$1
		:is('konqueror')?'konqueror'
		:is('applewebkit/')?'webkit safari'
		:is('mozilla/')?'gecko':'',
		(is('x11')||is('linux'))?' linux'
		:is('mac')?' mac'
		:is('win')?' win':''
	].join(" "));
}();
