//analytics tracker//
var _gaq = _gaq || [];
_gaq.push(  ['_setAccount', 'UA-61521-39'],  ['_trackPageview'], ['_trackPageLoadTime'],  ['b._setAccount', 'UA-61521-37'],  ['b._trackPageview']);
(function() {
	var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
	ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//google plus one
(function() {
	var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
	po.src = 'https://apis.google.com/js/plusone.js';
	var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();

function SetCookie(cookieName,cookieValue,nDays) {
 var today = new Date();
 var expire = new Date();
 if (nDays==null || nDays==0) nDays=1;
 expire.setTime(today.getTime() + 3600000*24*nDays);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

function ReadCookie(cookieName) {
 var theCookie=""+document.cookie;
 var ind=theCookie.indexOf(cookieName);
 if (ind==-1 || cookieName=="") return ""; 
 var ind1=theCookie.indexOf(';',ind);
 if (ind1==-1) ind1=theCookie.length; 
 return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
}

function js_write(txt){
	document.write(txt);
}

function SetFavoriet(id) {
	SetCookie("Mahjong" +id,1,365);
	document.getElementById("favoriet").innerHTML = "Added to your favourites."; 
}

function DeleteFavoriet(id) {
	SetCookie("Mahjong" +id,0,1);
	document.getElementById("favoriet").innerHTML = "Deleted from your favourites."; 
}

//init page
function initPage(){
	clearFormFields({
		clearInputs: true,
		clearTextareas: true,
		passwordFieldText: true,
		addClassFocus: "focus",
		filterClass: "default"
	});
	initAutoScalingNav({
		menuId: "nav",
		sideClasses: true,
		spacing: 25,
		tag: "span",
		minPaddings: 0
	});
	initGallery();
}

//init gallery
function initGallery(){
	var holderClass = 'gallery';
	var sliderClass = 'slider';
	var nextClass = 'next';
	var prevClass = 'prev';
	var disableClass = ' disable';
	var activeClass = ' active';
	var pauseClass = ' pause';
	var wrapClass = 'slideshow';
	var pagination = 'switcher-list'; 
	var buildPagination = false; 
	var pagerClass = 'pagenator';
	var paginationStruct = 'div.switcher-holder > ul.switcher > li >a >span.left + span.center + span.right'; 
	
	var cyclic = true;
	var autoRotation = 4000; 
	var duration = 750;
	
	var holders = document.getElementsByTagName('div');
	if(holders.length){
		for(var i = 0; i < holders.length; i++){
			if(holders[i].className.indexOf(holderClass) != -1){
				var gallery = holders[i];
				var holder, slider, slidesCount = 0, switcher, btnNext, btnPrev, currentMargin, nextMargin, stepWidth, maxOffset, timer;
				var oldInd, currInd;
				var slidesArr = new Array();
				var animated = false;
				
				for(var j = 0; j < gallery.childNodes.length; j++){
					if(gallery.childNodes[j].className && gallery.childNodes[j].className.indexOf(wrapClass) != -1){
						holder = gallery.childNodes[j];
						stepWidth = holder.offsetWidth;
						
						for(var a = 0; a < holder.childNodes.length; a++){
							if(holder.childNodes[a].className && holder.childNodes[a].className.indexOf(sliderClass) != -1){
								slider = holder.childNodes[a];
								slider.onmouseover = function(){
									if (pauseClass) {
										if (slider.className.indexOf(pauseClass) == -1) {
											slider.className += pauseClass;
										}
									}
								}
								slider.onmouseout = function(){
									if(slider.className.indexOf(pauseClass) != -1){
										slider.className = slider.className.replace(pauseClass,'');
										autoSlide();
									}
								}
								var computedStyle = slider.currentStyle || window.getComputedStyle(slider,null);
								currentMargin = parseInt(computedStyle.marginLeft,0) || 0;
								slider.style.marginLeft = currentMargin + 'px';
								
								var count = 0;
								for(var b = 0; b < slider.childNodes.length; b++){
									if(slider.childNodes[b].tagName == 'LI'){
										slidesArr[count] = b;
										slidesCount++;
										count++;
									}
								}
								maxOffset = stepWidth * slidesCount - stepWidth;
							}
						}
					}
				}
				
				function findBtns(){
					var links = gallery.getElementsByTagName('a');
					for(var a = 0; a < links.length; a++){
						if(links[a].className.indexOf(nextClass) != -1){
							btnNext = links[a];
						}
						if(links[a].className.indexOf(prevClass) != -1){
							btnPrev = links[a];
						}
					}
				}
				findBtns();
				
				var itemsPag;
				function useSwitcher(){
					if(pagination){
						var boxes = gallery.getElementsByTagName('ul');
						for(var a = 0; a < boxes.length; a++){
							if(boxes[a].className.indexOf(pagination) != -1){
								var firstHolder = boxes[a];
								itemsPag = firstHolder.getElementsByTagName('li');
								if (itemsPag.length) {
									var link = firstHolder.getElementsByTagName('a');
									if (link) {
										for (var a = 0; a < link.length; a++) {
											var _this = link[a];
											var num = a;
											_this.onclick = function(){
												changeSlide(parseInt(this.innerHTML)-1)
												return false;
											}
										}
									}
								}
								function changeSlide(num){
									if (itemsPag[num].className.indexOf(activeClass) == -1) {
										if (!animated) {
											animated = true;
											clearTimeout(timer);
											calacOffsetSwitcherSlide(num);
										}
									}
								}
							}
						}
					}
				}
				
				if(buildPagination){
					buildSwitcher();
				}
				else{
					useSwitcher();
				}
				if(!switcher){
					switcher = false;
					currInd = 0;
					oldInd = currInd;
				}
				
				function delta(progress){
					return progress;
				}
				var flag = false;
				
				function slideNext(step){
					clearTimeout(timer);
					var start = new Date().getTime();
					setTimeout(function() {
						var now = (new Date().getTime()) - start;
						var progress = now / duration;
						var result;
						if (!flag) {
							result = (nextMargin - currentMargin) * delta(progress) + currentMargin;
							if(result < nextMargin){
								result = nextMargin;
							}
						}
						else{
							result = -currentMargin * delta(progress) + currentMargin;
							if(result > 0){
								result = 0;
							}
						}
						
						slider.style.marginLeft = result + "px";
						if (progress < 1) { 
							setTimeout(arguments.callee, 10);
						}
						else{
							flag = false;
							animated = false;
							autoSlide();
						}
					}, 10);
				}
				
				function slidePrev(step){
					clearTimeout(timer);
					
					var start = new Date().getTime(); 
					setTimeout(function() {
						var now = (new Date().getTime()) - start; 
						var progress = now / duration; 
						var result;
						if (!flag) {
							result = (- currentMargin + nextMargin ) * delta(progress) + currentMargin;
							if(result > nextMargin){
								result = nextMargin;
							}
						}
						else{
							result = (nextMargin - currentMargin) * delta(progress) + currentMargin;
							if(result < nextMargin){
								result = nextMargin;
							}
						}
						slider.style.marginLeft = result + "px";
						if (progress < 1) { 
							setTimeout(arguments.callee, 10);
						}
						else{
							flag = false;
							animated = false;
							autoSlide();
						}
						}, 10);
				}
				function refreshActiveItems(){
					if (switcher) {
						switcher.childNodes[oldInd].className = switcher.childNodes[oldInd].className.replace(activeClass, '');
						switcher.childNodes[currInd].className += activeClass;
					}
					else if(pagination){
						itemsPag[oldInd].className = itemsPag[oldInd].className.replace(activeClass, '');
						itemsPag[currInd].className += activeClass;
					}
					
					slider.childNodes[slidesArr[oldInd]].className = slider.childNodes[slidesArr[oldInd]].className.replace(activeClass,'');
					slider.childNodes[slidesArr[currInd]].className += activeClass;
				}
				if(slider.childNodes.length < 2){
					btnNext.style.display = 'none';
					btnPrev.style.display = 'none';
				}
				if(btnNext){
					btnNext.onclick = function(){
						if (btnNext.className.indexOf(disableClass) == -1) {
							if (!animated) {
								clearTimeout(timer);
								animated = true;
								calacOffsetNextSlide();
							}
						}
						return false;
					}
				}
				if(btnPrev){
					if(!cyclic){
						btnPrev.className += disableClass;
					}
					btnPrev.onclick = function(){
						if (btnPrev.className.indexOf(disableClass) == -1) {
							if (!animated) {
								clearTimeout(timer);
								animated = true;
								calacOffsetPrevSlide();
							}
						}
						return false;
					}
				}
				function calacOffsetNextSlide(){
					currentMargin = parseInt(slider.style.marginLeft);
					nextMargin = currentMargin - stepWidth;
					if (cyclic) {
						if (nextMargin < -maxOffset) {
							flag = true;
							nextMargin = 0;
						}
						oldInd = currInd;
						currInd++;
						if (currInd > slidesCount - 1) {
							currInd = 0;
						}
						refreshActiveItems();
						slideNext();
					}
					else{
						if (nextMargin < -maxOffset) {
							if(btnNext.className.indexOf(disableClass) == -1){
								btnNext.className += disableClass;
							}
							animated = false;
						}
						else if(nextMargin == -maxOffset){
							if(btnNext.className.indexOf(disableClass) == -1){
								btnNext.className += disableClass;
							}
							if(btnPrev.className.indexOf(disableClass) != -1){
								btnPrev.className = btnPrev.className.replace(disableClass,'');
							}
							oldInd = currInd;
							currInd++;
							if (currInd > slidesCount - 1) {
								currInd = 0;
							}
							refreshActiveItems();
							slideNext();
						}
						else{
							if(btnNext.className.indexOf(disableClass) != -1){
								btnNext.className = btnNext.className.replace(disableClass,'');
							}
							if(btnPrev.className.indexOf(disableClass) != -1){
								btnPrev.className = btnPrev.className.replace(disableClass,'');
							}
							oldInd = currInd;
							currInd++;
							if (currInd > slidesCount - 1) {
								currInd = 0;
							}
							refreshActiveItems();
							slideNext();
						}
					}
				}
				function calacOffsetPrevSlide(){
					currentMargin = parseInt(slider.style.marginLeft);
					nextMargin = currentMargin + stepWidth;
					if (cyclic) {
						if (nextMargin > 0) {
							flag = true;
							nextMargin = -maxOffset;
						}
						
						oldInd = currInd;
						currInd--;
						if (currInd < 0) {
							currInd = slidesCount - 1;
						}
						refreshActiveItems();
						slidePrev();
					}
					else{
						if (nextMargin > 0) {
							if (btnPrev.className.indexOf(disableClass) == -1) {
								btnPrev.className += disableClass;
							}
						}
						else if (nextMargin == 0) {
								if (btnPrev.className.indexOf(disableClass) == -1) {
									btnPrev.className += disableClass;
								}
								if (btnNext.className.indexOf(disableClass) != -1) {
									btnNext.className = btnNext.className.replace(disableClass,'');
								}
								oldInd = currInd;
								currInd--;
								if (currInd < 0) {
									currInd = slidesCount - 1;
								}
								refreshActiveItems();
								slidePrev();
							}
							else {
								if (btnNext.className.indexOf(disableClass) != -1) {
									btnNext.className = btnNext.className.replace(disableClass,'');
								}
								oldInd = currInd;
								currInd--;
								if (currInd < 0) {
									currInd = slidesCount - 1;
								}
								refreshActiveItems();
								slidePrev();
							}
					}
				}
				function calacOffsetSwitcherSlide(_ind){
					oldInd = currInd;
					currInd = _ind;
					if (!cyclic) {
						if (currInd > 0 && currInd < slidesCount - 1) {
							if (btnPrev.className.indexOf(disableClass) != -1) {
								btnPrev.className = btnPrev.className.replace(disableClass, '');
							}
							if (btnNext.className.indexOf(disableClass) != -1) {
								btnNext.className = btnNext.className.replace(disableClass, '');
							}
						}
						else 
							if (currInd == 0) {
								if (btnPrev.className.indexOf(disableClass) == -1) {
									btnPrev.className += disableClass;
								}
								if (btnNext.className.indexOf(disableClass) != -1) {
									btnNext.className = btnNext.className.replace(disableClass, '');
								}
							}
							else {
								if (btnNext.className.indexOf(disableClass) == -1) {
									btnNext.className += disableClass;
								}
								if (btnPrev.className.indexOf(disableClass) != -1) {
									btnPrev.className = btnPrev.className.replace(disableClass, '');
								}
							}
					}
					if(oldInd > currInd){
						currentMargin = parseInt(slider.style.marginLeft);
						nextMargin = currentMargin + stepWidth * (oldInd - currInd);
						refreshActiveItems();
						slidePrev();
					}
					else{
						currentMargin = parseInt(slider.style.marginLeft);
						nextMargin = currentMargin - stepWidth * (currInd - oldInd);
						refreshActiveItems();
						slideNext();
					}
				}
				function callNextSlide(){
					if (slider.className.indexOf(pauseClass) == -1) {
						if (!animated) {
							animated = true;
							calacOffsetNextSlide();
						}
					}
				}
				function autoSlide(){
					if (autoRotation) {
						clearTimeout(timer);
						//timer = setTimeout(callNextSlide, autoRotation);
						timer = setTimeout(function(){
							if(btnNext.className.indexOf(disableClass) == -1){
								//btnNext.click();
								try{
									btnNext.click();
								}
								catch(e){
									callNextSlide();
								}
							}
						}, autoRotation);
					}
				}
				autoSlide();
			}
		}
	}
}

//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.filterClass) o.filterClass = "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) == -1) {
				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) == -1) {
				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";
	}
}

//init auto scalling menu
function initAutoScalingNav(o) {
	if (!o.menuId) o.menuId = "nav";
	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;
	if (!o.equalLinks) o.equalLinks = false;
	if (!o.flexible) o.flexible = false;
	var nav = document.getElementById(o.menuId);
	if(nav) {
		nav.className += " scaling-active";
		var lis = nav.getElementsByTagName("li");
		var asFl = [];
		var lisFl = [];
		var width = 0;
		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(width < t.offsetWidth) width = t.offsetWidth;
			}
			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(o.equalLinks && width * asFl.length < menuWidth) {
			for (var i=0; i<asFl.length; i++) {
				asFl[i].width = width;
			}
		}
		width = getItemsWidth(asFl);
		if(width < menuWidth) {
			var version = navigator.userAgent.toLowerCase();
			for (var i=0; getItemsWidth(asFl) < menuWidth; i++) {
				asFl[i].width++;
				if(!o.flexible) {
					asFl[i].style.width = asFl[i].width + "px";
				}
				if(i >= asFl.length-1) i=-1;
			}
			if(o.flexible) {
				for (var i=0; i<asFl.length; i++) {
					width = (asFl[i].width - o.spacing - o.constant/asFl.length)/menuWidth*100;
					if(i != asFl.length-1) {
						lisFl[i].style.width = width + "%";
					}
					else {
						if(navigator.appName.indexOf("Microsoft Internet Explorer") == -1 || version.indexOf("msie 8") != -1 || version.indexOf("msie 9") != -1)
							lisFl[i].style.width = width + "%";
					}
				}
			}
		}
		else if(o.minPaddings > 0) {
			for (var i=0; i<asFl.length; i++) {
				asFl[i].style.paddingLeft = o.minPaddings + "px";
				asFl[i].style.paddingRight = o.minPaddings + "px";
			}
		}
		if(o.sideClasses) {
			lisFl[0].className += " first-child";
			lisFl[0].getElementsByTagName(o.tag).item(0).className += " first-child-a";
			lisFl[lisFl.length-1].className += " last-child";
			lisFl[lisFl.length-1].getElementsByTagName(o.tag).item(0).className += " last-child-a";
		}
		nav.className += " scaling-ready";
	}
	function getItemsWidth(a) {
		var w = 0;
		for(var q=0; q<a.length; q++) {
			w += a[q].width;
		}
		return w;
	}
}
if (window.addEventListener)
	window.addEventListener("load", initPage, false);
else if (window.attachEvent)
	window.attachEvent("onload", initPage);
