//page init
$(function(){
	initClearInputs();
	initSetWidth();
	initFlexibleGallery();
	initTabs();
});

// init clear inputs
function initClearInputs(){
	clearFormFields({
		clearInputs:true,
		clearTextareas:true,
		passwordFieldText:true,
		addClassFocus:"focus",
		filterClass:"default"
	});
}

// init set width
function initSetWidth(){
	$('.gallery').each(function(){
		var holder = $(this);
		var holderElement = holder.find('.gallery-frame');
		var liElements = holder.find('.gallery-frame ul>li');
		setDimention();
		$(window).resize(setDimention);
		function setDimention(){
			liElements.width(holderElement.width());
		}
	});
}

// init flaxible gallery
function initFlexibleGallery(){
	var duration = 7500;
	var switchTime = 750;
	var effect = 'fade';
	
	$('.gallery').each(function(){
		var holder = $(this);
		var holderWidht = holder.width();
		var liElements = holder.find('>ul>li');
		var liLength = liElements.length;
		var switcher = holder.find('div.switcher ul > li');
		
		if(effect === 'slide'){
			liElements.css({left:holderWidht});
			liElements.eq(0).css({left:0});
			
			$(window).resize(function(){
				holderWidht = holder.width();
				liElements.css({left:holderWidht});
				liElements.eq(curIndex).css({left:0});
			});
		}else if(effect === 'fade'){
			liElements.css({opacity:0}).hide();
			liElements.eq(0).css({opacity:1}).show();
			switcher.eq(0).addClass('active');
		}
		var curIndex = 0;
		var prevIndex = 0;
		var timer;
		
		
		function nextSlide(){
			if(curIndex === liLength-1) curIndex = 0,prevIndex = liLength-1;
			else prevIndex = curIndex, curIndex++;
			
			switchState();
			autorotation();
		}
		
		switcher.click(function(){
			prevIndex = curIndex;
			curIndex = switcher.index($(this));
			clearTimeout(timer);
			switchState();
			autorotation();
			return false;
		});
		
		function switchState(){
			switcher.eq(prevIndex).removeClass('active').end().eq(curIndex).addClass('active');
			if (effect === 'slide') {
				liElements.eq(prevIndex).stop().animate({left:-holderWidht},{duration:switchTime,complete:function(){
					$(this).css({left:holderWidht});
				}});
				liElements.eq(curIndex).stop().animate({left:0},{duration:switchTime});
			}else if(effect === 'fade'){
				liElements.eq(prevIndex).stop().animate({opacity:0},{duration:switchTime,complete:function(){
					$(this).hide();
				}});
				liElements.eq(curIndex).show().stop().animate({opacity:1},{duration:switchTime});
			}
			
		}
		autorotation();
		function autorotation(){
			timer = setTimeout(function(){
				nextSlide();
			},duration);
		}
	});
}

// init tabs
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));

					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)
						{
							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;
						}
					}
				}
			}
		}
	}
}

// clear inputs
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";
	}
}
