// http://wowslider.com/
// JavaScript Wow Slider is a free software that helps you easily generate
// delicious
// slideshows with gorgeous transition effects, in a few clicks without writing
// a single line of code.
// Last updated: 2011-06-16
//
// ***********************************************
// Obfuscated by Javascript Obfuscator
// http://javascript-source.com
// ***********************************************
jQuery.fn.wowSlider = function(options) {
	var $this = this;
	var $ = jQuery;
	options = $.extend({
		effect : function(options) {
			var images;
			this.init = function(aCont) {
				images = aCont.find("img");
				images.each(function(Index) {
					if (!Index) {
						$(this).show();
					} else {
						$(this).hide();
					}
				});
			};
			this.go = function(new_index, curIdx) {
				$(images.get(new_index)).fadeIn(options.duration);
				$(images.get(curIdx)).fadeOut(options.duration);
				return true;
			};
		},
		prev : "",
		next : "",
		duration : 1000,
		delay : 2000,
		outWidth : 960,
		outHeight : 360,
		width : 960,
		height : 360,
		caption : true,
		controls : true,
		autoPlay : true,
		bullets : true,
		bgcolor: "#FFFFFF",
		opacity: 50,
		onStep : function() {
		},
		stopOnHover : 0,
		hfontsz: "34px",
		mfontsz: "16px",
		mboxwdt: "360px",
		$Elements: $this.find(".ws_images .sliderimage")
	}, options);
	options.loop = options.loop || Number.MAX_VALUE;
	//var $Elements = $this.find(".ws_images A");
	var $Elements = $this.find(".ws_images .sliderimage");
	var images = $Elements.find("IMG");
	$Elements.each(function(index) {
		var inner = $(this).html() || "";
		var pos = inner.indexOf(">", inner);
		if (pos >= 0) {
			//$(this).data("descr", inner.substr(pos + 1));
			var msg = $(this).find(".message").html();
			$(this).data("descr", msg == null ? "" : msg);
			$(this).data("ttrans",$(this).find(".transition").html());
			$(this).data("tduration",$(this).find(".duration").html());
			$(this).data("tpos",$(this).find(".position").html());
			$(this).data("link",$(this).find(".link").html());
			$(this).data("hfontsz", $(this).find(".headerfontsize").html());
			$(this).data("mfontsz", $(this).find(".messagefontsize").html());
			$(this).data("mboxwdt", $(this).find(".widthMessageBox").html());
			$(this).data("hcolor", $(this).find(".headerColor").html());
			if (pos < inner.length - 1) {
				$(this).html(inner.substr(0, pos + 1));
			}
		}
		$(this).css({
			'font-size' : 0
		});
	});
	var elementsCount = $Elements.length;
	var frame = $("A.ws_frame", $this).get(0);
	var curIdx = 0;
	var firstSlideRemoved = 0;
	function go(index) { 
		index = (index % elementsCount + elementsCount) % elementsCount;
		if (curIdx == index) {
			return;
		}
		var current = effect.go(index, curIdx);
		if (!current) {
			return;
		}
		
		if (typeof current != "object") {
			current = $Elements[index];
		}
		curIdx = index;
		go2(index);
		if (options.caption) {
			setTitle(current);
		}
		options.onStep(curIdx);
	}
	var startX, startY, isMoving = 0;
	var _this = $this.get(0);
	if (_this.addEventListener) {
		_this.addEventListener("touchmove", function(e) {
			if (isMoving) {
				var dx = startX - e.touches[0].pageX;
				var dy = startY - e.touches[0].pageY;
				if (Math.abs(dx) > 20 || Math.abs(dy) > 20) {
					startX = startY = isMoving = 0;
					forceGo(e, curIdx + (dx + dy > 0 ? -1 : 1));
				}
			}
		}, false);
		_this.addEventListener("touchstart", function(e) {
			if (e.touches.length == 1) {
				startX = e.touches[0].pageX;
				startY = e.touches[0].pageY;
				isMoving = 1;
			} else {
				isMoving = 0;
			}
		}, false);
		_this.addEventListener("touchend", function(e) {
			isMoving = 0;
		}, false);
	}
	function go2(index) {
		if (options.bullets) {
			setBullet(index);
		}
		if (frame) {
			frame.setAttribute("href", $Elements.get(index).href);
			frame.setAttribute("target", $Elements.get(index).target);
		}
	}
	var autoPlayTimer;
	function restartPlay() {
		stopPlay();
		if (options.autoPlay) {
			autoPlayTimer = setTimeout(function() {
				go(curIdx < elementsCount - 1 ? curIdx + 1 : 0);
				if (!curIdx && !--options.loop) {
					options.autoPlay = 0;
				}
				restartPlay();
			}, options.delay + options.duration);
		}
	}
	function stopPlay() {
		if (autoPlayTimer) {
			clearTimeout(autoPlayTimer);
		}
		autoPlayTimer = null;
	}
	function forceGo(event, index) {
		stopPlay();
		event.preventDefault();
		go(index);
		restartPlay();
	}
	$Elements.find("IMG").css("position", "absolute");
	if (typeof options.effect == "string") {
		options.effect = window["ws_" + options.effect];
	}
	var effect = new options.effect(options, images);
	effect.init($(".ws_images", $this));
	$Elements.find("IMG").css("visibility", "visible");
	var ic = c = $(".ws_images", $this);
	var t = "WOWSlider.com";
	var t = "";
	c = t ? $("<div></div>") : 0;
	if (c) {
		c.css({
			position : "absolute",
			right : "2px",
			bottom : "2px",
			padding : "0 0 0 0"
		});
		ic.append(c);
	}
	if (c && document.all) {
		var f = $("<iframe src=\"javascript:false\"></iframe>");
		f.css({
			position : "absolute",
			left : 0,
			top : 0,
			width : "100%",
			height : "100%",
			filter : "alpha(opacity=0)"
		});
		f.attr({
			scrolling : "no",
			framespacing : 0,
			border : 0,
			frameBorder : "no"
		});
		c.append(f);
	}
	var d = c ? $(document.createElement("A")) : c;
	if (d) {
		d.css({
			position : "relative",
			display : "block",
			'background-color' : options.bgcolor,
			color : "#837F80",
			'font-family' : "Lucida Grande,sans-serif",
			'font-size' : "11px",
			'font-weight' : "normal",
			'font-style' : "normal",
			'-moz-border-radius' : "5px",
			'border-radius' : "5px",
			padding : "1px 5px",
			width : "auto",
			height : "auto",
			margin : "0 0 0 0",
			outline : "none"
		});
		d.attr({
			href : "ht" + "tp://" + t.toLowerCase()
		});
		d.html(t);
		d.bind("contextmenu", function(eventObject) {
			return false;
		});
		c.append(d);
	}
	if (options.controls) {
		var $next_photo = $("<a href=\"#\" class=\"ws_next\">" + options.next
				+ "</a>");
		var $prev_photo = $("<a href=\"#\" class=\"ws_prev\">" + options.prev
				+ "</a>");
		$this.append($next_photo);
		$this.append($prev_photo);
		$next_photo.bind("click", function(e) {
			forceGo(e, curIdx + 1);
		});
		$prev_photo.bind("click", function(e) {
			forceGo(e, curIdx - 1);
		});
	}
	function initBullets() {
		var $bullets_cont = $this.find(".ws_bullets>div");
		var $bullets = $("a", $bullets_cont);
		$bullets.click(function(e) {
			forceGo(e, $(e.target).index());
		});

		var $thumbs = $bullets.find("IMG");
		if ($thumbs.length) {
			var mainFrame = $("<div class=\"ws_bulframe\"/>").appendTo(
					$bullets_cont);
			var imgContainer = $("<div/>").css({
				width : $thumbs.length + 1 + "00%"
			}).appendTo($("<div/>").appendTo(mainFrame));
			$thumbs.appendTo(imgContainer);
			$("<span/>").appendTo(mainFrame);
			var curIndex = -1;
			function moveTooltip(index) {
				if (index < 0) {
					index = 0;
				}
				$($bullets.get(curIndex)).removeClass("ws_overbull");
				$($bullets.get(index)).addClass("ws_overbull");
				mainFrame.show();
				var mainCSS = {
					left : $bullets.get(index).offsetLeft - mainFrame.width() / 2
				};
				var contCSS = {
					left : -$thumbs.get(index).offsetLeft
				};
				if (curIndex < 0) {
					mainFrame.css(mainCSS);
					imgContainer.css(contCSS);
				} else {
					if (!document.all) {
						mainCSS.opacity = 1;
					}
					mainFrame.stop().animate(mainCSS, "fast");
					imgContainer.stop().animate(contCSS, "fast");
				}
				curIndex = index;
			}
			$bullets.hover(function() {
				moveTooltip($(this).index());
			});
			var hideTime;
			$bullets_cont.hover(function() {
				if (hideTime) {
					clearTimeout(hideTime);
					hideTime = 0;
				}
				moveTooltip(curIndex);
			}, function() {
				$bullets.removeClass("ws_overbull");
				if (document.all) {
					if (!hideTime) {
						hideTime = setTimeout(function() {
							mainFrame.hide();
							hideTime = 0;
						}, 400);
					}
				} else {
					mainFrame.stop().animate({
						opacity : 0
					}, {
						duration : "fast",
						complete : function() {
							mainFrame.hide();
						}
					});
				}
			});

			$bullets_cont.click(function(e) {
				forceGo(e, $(e.target).index());
			});
		}
	}
	function setBullet(new_index) {
		$(".ws_bullets a", $this).each(function(index) {
			if (index == new_index) {
				$(this).addClass("ws_selbull");
			} else {
				$(this).removeClass("ws_selbull");
			}
		});
	}
	if (options.caption) {
		$caption = $("<div class='ws-title' style='display:none'></div>");
		$this.append($caption);
		$caption.bind("mouseover", function(e) {
			stopPlay();
		});
		$caption.bind("mouseout", function(e) {
			restartPlay();
		});
	}
	function setTitle(A) {
		//var title = $("img", A).attr("title");
		var title = $(A).attr("title").replace(/&nbsp;/g,' ');
		var descr = $(A).data("descr").replace(/&nbsp;/g,' ');
		var ttrans = $(A).data("ttrans");
		var tpos = $(A).data("tpos"); 
		var tduration = $(A).data("tduration");
		var link = $(A).data("link");
		var $Title = $(".ws-title", $this);
		var hfontsz = $(A).data("hfontsz");
		var mfontsz = $(A).data("mfontsz");
		var mboxwdt = $(A).data("mboxwdt");
		var lheight = parseInt($(A).data("mfontsz")) + 3 + 'px';
		var hcolor = $(A).data("hcolor");
		
		$Title.hide();
		
		if(title.length < 2) {
			title = "";
		}
		
		if(descr.length < 2) {
			descr = "";
			if(link) descr = " ";
		}
		
		if (title || descr) { 
			console.log(title + ':' + descr)
			$Title.html(
					(title ? ("<span class=\"title\" style=\"display: inline-block; line-height: " + hfontsz + "; min-height: " + hfontsz + "; color: #" + hcolor +"; font-size: " + hfontsz + "; font-weight: 700; opacity: 1;\">" + title + "</span>") : "") +
					(descr ? ("<span class=\"disc\" style=\"display:block; line-height: " + lheight + "; font-size: " + mfontsz + "; opacity: 1;\">" + descr + "</span>" + link + "<div class=\"clearboth\"/>") : "")
			);

			if(!$.trim(title) && !$.trim(descr)) {
				$Title.find(".descr-link").css("margin-bottom","10px");
			}
			
			if(typeof Cufon == 'function') {
				Cufon.replace('.ws-title span.title');
			}
			
			tpos = getTextPosition(tpos);

			var direction = 'left';
			if(ttrans == 'slidein' && tpos[1] == 'left') {
				var direction = 'left';
			}
			else if(ttrans == 'slidein' && tpos[1] == 'right') {
				var direction = 'right';
			}
			else if(ttrans == 'slideup') {
				var direction = 'up';
			}
			else {
				var direction = 'down';
			}

			var cssPos = new Array();
			cssPos['left'] = 0;
			cssPos['right'] = 'auto';
			cssPos['top'] = 'auto';
			cssPos['bottom'] = "36px";
			cssBorder = '0 5px 5px 0';
			
			if(tpos[1] == 'right') {
				cssPos['left'] = 'auto';
				cssPos['right'] = 0;
				cssBorder = '5px 0 0 5px';
			}
			
			if(tpos[0] == 'top') {
				cssPos['top'] = "36px";
				cssPos['bottom'] = 'auto';
			}
			else if(tpos[0] == 'middle') {
				var imgHeight = $("img", A).parent().height(); 
				var titleHeight = $Title.outerHeight();
				cssPos['top'] =  Math.ceil((imgHeight / 2) - (titleHeight / 2)) + 'px';//"80px"; // some calculation must be done
				cssPos['bottom'] = 'auto';
			}

			$Title.css({
				top: cssPos['top'], 
				bottom: cssPos['bottom'], 
				left: cssPos['left'], 
				right: cssPos['right'],
				"-moz-border-radius": cssBorder,
				"-webkit-border-radius": cssBorder,
				"border-radius": cssBorder,
				"background-color": options.bgcolor, 
				opacity: (options.opacity / 100),
				width: mboxwdt
			});
			
			if(ttrans == 'fadein') {
				showWithFade($Title, {
					duration: tduration,
					complete : function () {
						if ($.browser.msie) {
							$Title.get(0).style.removeAttribute("filter");
						}
					}
				});
			}
			else {
				showWithSlide($Title, {
					direction : direction, //"left", // left, right, up, down
					easing : "easeInOutExpo",
					duration: tduration,
					tpos: tpos[0],
					imgHeight:  $("img", A).parent().height(),
					complete : function() {
						if ($.browser.msie) {
							$Title.get(0).style.removeAttribute("filter");
						}
					},
					duration : tduration
				});
			}
		}
	}
	if (options.bullets) {
		initBullets();
	}
	go2(0);
	if (options.caption) {
		setTitle($Elements[0]);
	}
	if (options.stopOnHover) {
		this.bind("mouseover", function(e) {
			stopPlay();
		});
		this.bind("mouseout", function(e) {
			restartPlay();
		});
	}
	
	restartPlay();
	
	function showWithFade(element, options) {
		$ = jQuery;
		element.stop(true, true);
		element.fadeIn(3000);
		
		if (options.complete) {
			options.complete();
		}
	}
	
	
	function showWithSlide(element, options) {
		var $ = jQuery;
		element.stop(true, true);
		//console.log($(element).outerHeight(true) + ':' + $(element).outerHeight(true) + ':' + $(element).height() )	
		if(options.tpos == 'middle') {
			element.css("top",  Math.ceil((options.imgHeight / 2) - ($(element).outerHeight() / 2)) + 'px');//"80px"; // some calculation must be done
		}
		
		var bkp_prop = {};
		var props = [ "position", "top", "bottom", "left", "right" ];
		for ( var i = 0; i < props.length; i++) {
			bkp_prop[props[i]] = element[0].style[props[i]];
		}
		element.show();
		var wrap_props = {
			width : element.outerWidth(true),
			height : element.outerHeight(true),
			'float' : element.css("float"),
			overflow : "hidden",
			opacity : 0
		}, wrapper = $("<div></div>").css({
			fontSize : "100%",
			background : "transparent",
			border : "none",
			margin : 0,
			padding : 0
		});
		element.wrap(wrapper);
		wrapper = element.parent();
		if (element.css("position") == "static") {
			wrapper.css({
				position : "relative"
			});
			element.css({
				position : "relative"
			});
		} else {
			$.extend(wrap_props, {
				position : element.css("position"),
				zIndex : element.css("z-index")
			});
			$.each([ "top", "left", "bottom", "right" ], function(i, pos) {
				wrap_props[pos] = element.css(pos);
				if (isNaN(parseInt(wrap_props[pos], 10))) {
					wrap_props[pos] = "auto";
				}
			});
			element.css({
				position : "relative",
				top : 0,
				left : 0,
				right : "auto",
				bottom : "auto"
			});
		}

		wrapper.css(wrap_props).show();
		var direction = options.direction || "left";
		var ref = direction == "up" || direction == "down" ? "top" : "left";
		var motion = direction == "up" || direction == "left" ? "pos" : "neg";
		var distance = options.distance
				|| (ref == "top" ? element.outerHeight({
					margin : true
				}) : element.outerWidth({
					margin : true
				}));
		element.css(ref, motion == "pos" ? isNaN(distance) ? "-" + distance
				: -distance : distance);
		var animation = {};
		animation[ref] = (motion == "pos" ? "+=" : "-=") + distance;

		wrapper.animate({
			opacity : 1
		}, {
			duration : parseInt(options.duration),
			easing : options.easing
		});

		element.animate(animation, {
			queue : false,
			duration : parseInt(options.duration),
			easing : options.easing,
			complete : function() {
				for ( var p in bkp_prop) {
					element[0].style[p] = bkp_prop[p];
				}
				element.parent().replaceWith(element);
				if (options.complete) {
					options.complete();
				}
			}
		});
	}
	
	function getTextPosition(tpos) {
		if(tpos == 'topleft') {
			pos = new Array('top','left')
		}
		else if(tpos == 'middleleft') {
			pos = new Array('middle', 'left');
		}
		else if(tpos == 'bottomleft') {
			pos = new Array('bottom', 'left');
		}
		else if(tpos == 'topright') {
			pos = new Array('top', 'right');
		}
		else if(tpos == 'middleright') {
			pos = new Array('middle', 'right');
		}
		else if(tpos == 'bottomright') {
			pos = new Array('bottom', 'right');
		}
		
		return pos;
	}
	
	
	function changeImageIcon(obj) {
		var current;
		var index = effect.changeImageIcon(obj);
		
		if (typeof current != "object") {
			current = $Elements[index];
		}
		curIdx = index;
		go2(index);
		if (options.caption) {
			setTitle(current);
		}
		options.onStep(curIdx);
	}

	changeImageIcon($(this));
	
	return this;
};

jQuery.extend(jQuery.easing, {
	easeInOutExpo : function(x, t, b, c, d) {
		if (t == 0) {
			return b;
		}
		if (t == d) {
			return b + c;
		}
		if ((t /= d / 2) < 1) {
			return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
		}
		return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
	}
});

jQuery(function(){
	/*********** START -- Toggle menu on slider image **************/
	var lastHit = '';
	$(".tx-tcslidermenu-pi1 .serviceContainer .servicelink").click(function(event) {
		if($(this).hasClass("jobs")) {
			if(lastHit == 'jobs') {
				$(".tx-tcslidermenu-pi1 .serviceContainer .jobContainer").hide();
				lastHit = '';
			}
			else {
				$(".tx-tcslidermenu-pi1 .serviceContainer .newsContainer").hide();
				$(".tx-tcslidermenu-pi1 .serviceContainer .jobContainer").show();
				lastHit = "jobs";
			}
		}
		else {
			if(lastHit == 'news') {
				$(".tx-tcslidermenu-pi1 .serviceContainer .newsContainer").hide();
				lastHit = '';
			}
			else {
				$(".tx-tcslidermenu-pi1 .serviceContainer .jobContainer").hide();
				$(".tx-tcslidermenu-pi1 .serviceContainer .newsContainer").show();
				lastHit = "news";
			}
		}
		
		event.stopPropagation();
	}); 
	
	/** Close job and news box if clicked outside box **/
	$(document).click(function(event){
		var elemNode = event.target;
		
		while(elemNode.parentNode != null && (elemNode.parentNode.className != "jobContainer" && elemNode.parentNode.className != "newsContainer")&& elemNode.tagName.toLowerCase() != 'body'){ 
			elemNode = elemNode.parentNode;
		}
		
		if(elemNode.parentNode == null || (elemNode.parentNode.className != "jobContainer" && elemNode.parentNode.className != "newsContainer")) {
			$(".tx-tcslidermenu-pi1 .serviceContainer .jobContainer").hide();
			$(".tx-tcslidermenu-pi1 .serviceContainer .newsContainer").hide();
			lastHit = '';
		}
	});
	
	/*********** STOP -- Toggle menu on slider image **************/
})
