﻿/*--------------------------- slider ----------------------------------  */

/*!
 * slideViewerPro 1.0
 * Examples and documentation at: 
 * http://www.gcmingati.net/wordpress/wp-content/lab/jquery/svwt/
 * 2009 Gian Carlo Mingati
 * Version: 1.0.2 (22-MAY-2009)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires:
 * jQuery v1.3.2 or later
 * Option:
 * jQuery Timers plugin | plugins.jquery.com/project/timers (for autoslide mode)
 * 
 */


jQuery.extend( jQuery.easing, // from the jquery.easing plugin
{
	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;
	}
});

/* -------------------- from easing plugin --------------------------- */
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.easing.easeOutExpo =function (x, t, b, c, d) {
	return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
};
/* [end] from easing plugin */

jQuery(function(){
  		 $(".svwp").addClass("scriptyes");
		//$("ul.list-portfolio li").css({"width":"673px"});	
		$("ul.list-portfolio li").css({"width":"934px"});
		$("ul.list-portfolio a.img").css({"border-left":"none", "border-right":"none", "border-top":"none", "border-bottom":"none", });	
   jQuery("div.slider").prepend("<div class='ldrgif' alt='loading...' ><img src='/images/loader.gif' alt='Loading'/></div>"); //change with YOUR loader image path   
		
});
var j = 0;
jQuery.fn.slideViewerPro = function(settings) {
	  settings = jQuery.extend({
			galBorderWidth: 6,
			thumbsTopMargin: 3, 
			thumbsRightMargin: 3,
			thumbsBorderWidth: 3,
			buttonsWidth: 20,
			galBorderColor: "#000000",
			thumbsBorderColor: "#d8d8d8",
			thumbsActiveBorderColor: "#000000",
			buttonsTextColor: "#000000",
			thumbsBorderOpacity: 1.0, // could be 0, 0.1 up to 1.0
			thumbsActiveBorderOpacity: 1.0, // could be 0, 0.1 up to 1.0
			easeTime: 750,
			asTimer: 4000,
			thumbs: 5,
			thumbsPercentReduction: 12,
			thumbsVis: true,
			easeFunc: "easeInOutExpo",
			leftButtonInner: "-", //could be an image "<img src='images/larw.gif' />" or an escaped char as "&larr";
			rightButtonInner: "+", //could be an image or an escaped char as "&rarr";
			autoslide: false,
			typo: false,
			shuffle: false
		}, settings);
		
	return this.each(function(){
		function shuffle(a) {
	    var i = a.size();
	    while (--i) {
	        var j = Math.floor(Math.random() * (i));
	        var tmp = a.slice(i, i+1);
	        a.slice(j, j+1).insertAfter(tmp);
	    }
		} 
		
		var container = jQuery(this);
		(!settings.shuffle) ? null : shuffle(container.find("li"));
		container.find("div.ldrgif").remove();
		container.removeClass("scriptyes")
		container.removeClass("svwp").addClass("slideViewer");	
		container.attr("id", "svwp"+j);
		
		var pictWidth /*= container.find("img").attr("width")*/ = '934';		
		var pictHeight /*= container.find("img").attr("height")*/ = '340px';		
//		var pictHeight /*= container.find("img").attr("height")*/ = '300px';		
		var pictEls = container.find("li").size();
		(pictEls >= settings.thumbs) ? null : settings.thumbs = pictEls;
		var slideViewerWidth = pictWidth*pictEls;
		var thumbsWidth = Math.round(pictWidth*settings.thumbsPercentReduction/100);
		var thumbsHeight =  Math.round(pictHeight*settings.thumbsPercentReduction/100);
		var pos = 0;
		var r_enabled = true;
		var l_enabled = true;
    container.find("ul").css("width" , slideViewerWidth)
    .wrap(jQuery("<div style='width:"+ pictWidth +"px; overflow: hidden; position: relative; top: 0; left: 0'>"));
		container.css("width" , pictWidth);
		container.css("height" , pictHeight);
		container.each(function(i) {
								
			if(settings.typo)
			{
			jQuery(this).find("img").each(function(z) {
				jQuery(this).after("<span class='typo'>"+jQuery(this).attr("alt")+"<\/span>");
			});
			}
			jQuery("#slidermenu").append("<div class='thumbSlider' id='thumbSlider" + j + "'><ul class=\"foliomenu\"><\/ul><\/div>");
						//jQuery("#slidermenu").append('nevena');
			//jQuery(this).next().after("<a href='#' class='left' id='left" + j + "'>LEFT<span>"+settings.leftButtonInner+"</span><\/a><a href='#' class='right' id='right" + j + "'>RIGHT<span>"+settings.rightButtonInner+"<\/span><\/a>");
			
			
			//jQuery("#svwp0 div").append("<a href='#' class='left' id='left" + j + "'>LEFT<span>"+settings.leftButtonInner+"</span><\/a><a href='#' class='right' id='right" + j + "'>RIGHT<span>"+settings.rightButtonInner+"<\/span><\/a>");
			
			listcounter = 1;
			jQuery(this).find("li").each(function(n) { 
						jQuery("div#thumbSlider" + j + " ul").append("<li id=\"link"+ listcounter +"\"><a title='" + jQuery(this).find("img").attr("alt") + "' href='#'>" + jQuery(this).find("img").attr("title") + "<\/a><\/li>");
				listcounter++;
			});
			
    		
			icnt = 0;

			// slide to left 
			jQuery(".slideleft").bind("click", function(e){
				e.preventDefault();
				
				playcounter = $("div#thumbSlider0 li").index(jQuery("div#thumbSlider0").find("li.active"));
				playcounter--;	
				
				/*
				if (playcounter<1)
					{
					// if there are no more slides to the left then disable button
					$(this).addClass("noslideleft");
					}
				else {$(this).removeClass("noslideleft");
				}
				*/
				if (playcounter<0)
					{
					// if there are no more slides to the left stand still
					return false;
					}

				if (playcounter>=jQuery("div#thumbSlider0 a").length)
					playcounter=0;
				
				jQuery("div#thumbSlider0").find("a").eq(playcounter).trigger("click");
			});
			
			jQuery(".slideright").bind("click", function(e){
														 
				e.preventDefault();
				playcounter = $("div#thumbSlider0 li").index(jQuery("div#thumbSlider0").find("li.active"));
					playcounter++;
				/*					
				if (playcounter>0)
					{
					$('.slideleft').removeClass("noslideleft");
					}					
				*/
				// if there are no more slides to the right go to the begining
				if (playcounter>=jQuery("div#thumbSlider0 a").length)
					playcounter=0;
				//alert("right " + playcounter);
				jQuery("div#thumbSlider0").find("a").eq(playcounter).trigger("click");
	
															   
			});			
			
			jQuery("div#thumbSlider" + j + " a").each(function(z) {			
				icnt++;		
			
				jQuery(this).bind("click", function(){

					jQuery(this).trigger("focus"); //n
					jQuery(this).parent('li').addClass('active');	
					
					
					//activeindex = $("div#thumbSlider0 li").index(jQuery("div#thumbSlider0").find("li.active")) + 2;
					jQuery(this).parent('li').parent("ul").removeClass("activelink1").removeClass("activelink2").removeClass("activelink3").removeClass("activelink4").removeClass("activelink5").addClass("active" + jQuery(this).parent('li').attr("id"));
					//jQuery(this).parent('li').parent("ul").css("border","1px solid red");
					//notvena autoplay
					if ($play)
					{
					clearInterval(autoplay);
					autoplay = setInterval(triggerClick, 5000);
					}
					jQuery(this).parent().parent().find("li").not(jQuery(this).parent('li')).removeClass('active');					
					var cnt = -(pictWidth*z);
					container.find("ul").animate({ left: cnt}, settings.easeTime, settings.easeFunc);					
					return false;
				});

			});
			// shortcuts to +/- buttons
			var jQuerybtl = jQuery("a#left" + j);	
			var jQuerybtr = jQuery("a#right" + j);	
			
			// right/left 			
			jQuerybtr.bind("click", function(){
					if (r_enabled) (pictEls-pos > settings.thumbs*2 || pictEls%settings.thumbs == 0)? pos += settings.thumbs : pos += pictEls % settings.thumbs;
					r_enabled = false;
					jQuery(this).prev().prev().find("ul:not(:animated)").animate({ left: -(thumbsWidth+settings.thumbsRightMargin)*pos}, 500, settings.easeFunc, function(){authorityMixing();});					
					return false;
			});
			jQuerybtl.bind("click", function(){	
					if (l_enabled) (pictEls-pos > settings.thumbs || pictEls%settings.thumbs == 0)? pos -= settings.thumbs : pos -= pictEls % settings.thumbs;
					l_enabled = false;
					jQuery(this).prev().find("ul:not(:animated)").animate({ left: -(thumbsWidth+settings.thumbsRightMargin)*pos}, 500, settings.easeFunc, function(){authorityMixing();});			
					return false;
			});						
			
			function authorityMixing()
			{				
				//right btt
				(pos == pictEls-settings.thumbs) ? jQuerybtr.addClass("r_dis") : jQuerybtr.removeClass("r_dis");
				(pos == pictEls-settings.thumbs) ? r_enabled = false : r_enabled = true;
				//left btt
				(pos == 0) ? jQuerybtl.addClass("l_dis") : jQuerybtl.removeClass("l_dis");
				(pos == 0) ? l_enabled = false : l_enabled = true;
			}
			
			//CSS	defs @ runtime
			var tBorder = settings.thumbsBorderWidth;
			var contBorder = settings.galBorderWidth
			
			//jQuery(".slideViewer a img").css({border: "0"});
			jQuery("div#svwp"+ j + " span.typo").css({position: "absolute", margin: "0 0 0 "+(-pictWidth)+"px"});
			//jQuery("div#svwp"+ j).css({border: settings.galBorderWidth +"px solid "+settings.galBorderColor});
			
			//jQuery("div#thumbSlider" + j).css({position: "relative", left: contBorder, top: settings.thumbsTopMargin+"px", width: settings.thumbs*thumbsWidth+((settings.thumbsRightMargin*settings.thumbs)-settings.thumbsRightMargin), height: thumbsHeight, textAlign: "center", overflow: "hidden", margin: "0 auto"});
			//jQuery("div#thumbSlider" + j + " ul").css({width: (thumbsWidth*pictEls)+settings.thumbsRightMargin*pictEls, position: "relative", left: "0", top: "0"});
			//jQuery("div#thumbSlider" + j + " ul li").css({marginRight: settings.thumbsRightMargin});
					
			//jQuery("div#thumbSlider" + j).find("p.tmbrdr").css({width: (thumbsWidth-tBorder*2)+"px", height: (thumbsHeight-tBorder*2) +"px", top: -(thumbsHeight) +"px", border: settings.thumbsBorderWidth +"px solid "+settings.thumbsBorderColor, opacity: settings.thumbsBorderOpacity});			
			//jQuery("div#thumbSlider" + j + " a:first p.tmbrdr").css({borderColor: settings.thumbsActiveBorderColor, opacity: settings.thumbsActiveBorderOpacity});
			
			jQuery("div#thumbSlider" + j).find("p.tmbrdr").css({width: (thumbsWidth-tBorder*2)+"px", height: (thumbsHeight-tBorder*2) +"px", top: -(thumbsHeight) +"px", border: settings.thumbsBorderWidth +"px solid "+settings.thumbsBorderColor, opacity: settings.thumbsBorderOpacity});			
			jQuery("div#thumbSlider" + j + " li:first").addClass('active');
			
			//var rbttLeftMargin = (pictWidth/2) + (jQuery("div#thumbSlider" + j).width()/2) + settings.thumbsRightMargin + contBorder;
			//var lbttLeftMargin = (pictWidth/2) - (jQuery("div#thumbSlider" + j).width()/2) - (settings.buttonsWidth + settings.thumbsRightMargin) + contBorder;			
			//var innerImgH = jQuery("a#right" + j + " span img").attr("height");
			
			//jQuery("a#left" + j).css({display: "block", textAlign: "center", width: settings.buttonsWidth + "px" , height: thumbsHeight+"px",  margin: -(thumbsHeight-settings.thumbsTopMargin) +"px 0 0 "+lbttLeftMargin+"px", textDecoration: "none", lineHeight: thumbsHeight+"px", color: settings.buttonsTextColor});
			//jQuery("a#right" + j).css({display: "block", textAlign: "center", width: settings.buttonsWidth + "px", height: thumbsHeight+"px" , margin: -(thumbsHeight) +"px 0 0 "+rbttLeftMargin+"px", textDecoration: "none", lineHeight: thumbsHeight+"px", color: settings.buttonsTextColor});			
			//jQuery("a#left" + j + " span img").css({margin: Math.round((thumbsHeight/2)-(innerImgH/2))+"px 0 0 0"});
			//jQuery("a#right" + j + " span img").css({margin: Math.round((thumbsHeight/2)-(innerImgH/2))+"px 0 0 0"});

			authorityMixing();
	
			if(settings.autoslide){
					var i = 1;
					//alert("div#thumbSlider" + j);
					jQuery("div#thumbSlider" + j).everyTime(settings.asTimer, "asld", function() {			
		  			jQuery(this).find("a").eq(i).trigger("click");
		  			if(i == 0)
		  			{
						
						pos = 0;
						l_enabled = false;
						jQuery("div#thumbSlider" + j).find("ul:not(:animated)").animate({ left: -(thumbsWidth+settings.thumbsRightMargin)*pos}, 500, settings.easeFunc, function(){authorityMixing();});
		  			}
		  			else l_enabled = true;
		  			
						(i%settings.thumbs == 0)? jQuery(this).next().next().trigger("click") : null;
						(i < pictEls-1)?	i++ : i=0;		  			
					});		
					
					//stops autoslidemode	
					/*jQuery("a#right" + j).bind("mouseup", function(){
						jQuery(this).prev().prev().stopTime("asld");
		    		});
					jQuery("a#left" + j).bind("mouseup", function(){
						jQuery(this).prev().stopTime("asld");	
					});
					*/
					jQuery("div#thumbSlider" + j + " a").bind("mouseup", function(){
						jQuery(this).parent().parent().parent().stopTime("asld");
					});
			}
			var uiDisplay = (settings.thumbsVis)? "block":"none";
			//jQuery("div#thumbSlider" + j + ", a#left" + j + ", a#right" + j).wrapAll("<div style='width:"+ pictWidth +"px; display: "+uiDisplay+"' id='ui"+j+"'><\/div>");		// ns			
			jQuery("div#thumbSlider" + j).wrapAll("<div id='ui"+j+"'><\/div>");			
//			jQuery("div#svwp"+ j + ", div#ui" + j).wrapAll("<div style='width:"+ pictWidth +"px'><\/div>"); //ns
			
			jQuery("div#svwp"+ j).wrapAll("<div style='width:"+ pictWidth +"px'><\/div>");	
			

			
			});
			//(jQuery("div#thumbSlider" + j).width()+(settings.buttonsWidth*2) >= pictWidth)? alert("ALERT: THE THUMBNAILS SLIDER IS TOO WIDE! \nthumbsPercentReduction and/or buttonsWidth needs to be scaled down!") : null;
		j++;
  });	
};

/*----------------------------------------- timers ------------------------------------- */
jQuery.fn.extend({
	everyTime: function(interval, label, fn, times, belay) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times, belay);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.extend({
	timer: {
		guid: 1,
		global: {},
		regex: /^([0-9]+)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseInt(result[1], 10);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times, belay) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
				return;

			if (times && times.constructor != Number) {
				belay = !!times;
				times = 0;
			}
			
			times = times || 0;
			belay = belay || false;
			
			if (!element.$timers) 
				element.$timers = {};
			
			if (!element.$timers[label])
				element.$timers[label] = {};
			
			fn.$timerID = fn.$timerID || this.guid++;
			
			var handler = function() {
				if (belay && this.inProgress) 
					return;
				this.inProgress = true;
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
				this.inProgress = false;
			};
			
			handler.$timerID = fn.$timerID;
			
			if (!element.$timers[label][fn.$timerID]) 
				element.$timers[label][fn.$timerID] = window.setInterval(handler,interval);
			
			if ( !this.global[label] )
				this.global[label] = [];
			this.global[label].push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = element.$timers, ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.$timerID ) {
							window.clearInterval(timers[label][fn.$timerID]);
							delete timers[label][fn.$timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					element.$timers = null;
			}
		}
	}
});

if (jQuery.browser.msie)
	jQuery(window).one("unload", function() {
		var global = jQuery.timer.global;
		for ( var label in global ) {
			var els = global[label], i = els.length;
			while ( --i )
				jQuery.timer.remove(els[i], label);
		}
	});





/* ----------------- script start ------------------------------ */
$play = true; 
//$play = false; 
 

$settings = { 
			thumbs: 2,  
			autoslide: false,  
			asTimer: 5500,  
			typo: false, 
			galBorderWidth: 0, 
			thumbsBorderOpacity: 0,  
			buttonsTextColor: "#707070", 
			buttonsWidth: 40, 
			thumbsActiveBorderOpacity: 0, 
			thumbsActiveBorderColor: "black", 
			shuffle: false, 
			easeFunc:"easeInOutExpo"
			/*easeOutExpo*/
		};
var playcounter = 1;
var autoplay; 
function triggerClick(){
	//alert('trigger click');
	//playcounter = ;
	playcounter = $("div#thumbSlider0 li").index(jQuery("div#thumbSlider0").find("li.active")) + 1;
	if (playcounter>=jQuery("div#thumbSlider0 a").length)
		playcounter=0;
	jQuery("div#thumbSlider0").find("a").eq(playcounter).trigger("click");
	playcounter++;
	}

$(window).bind("load", function() { 
	$("#ciplexpromo").css({"height":"346px", "overflow": "hidden", "position":"relative"});
	$("#navbox").css({"height":"346px", "position":"absolute"});
	
	
    if ($("div#web-design-works").length > 0)
		{
		$("div#web-design-works").before('<a href="#" class="slideleft">left</a> <a href="#" class="slideright">right</a>');
		$("div#web-design-works").slideViewerPro($settings);
		autoplay = setInterval(triggerClick, 6000);
		// stops or playes slideshow 
		$(".list-portfolio li a").bind('mouseenter',
			function(){
				if($.browser.msie){
				$(this).children("a span.shade").css('filter', 'alpha(opacity=40)');
				}
				$(this).children("a span.shade").fadeIn("slow");
				
				});
		
		$(".list-portfolio li a").bind('mouseleave',
			function(){
				$(this).children("a span.shade").fadeOut("slow");
				
				});	
		}	// if works page
		
}); 


