/*--------------------------- 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":"760px"});
                $("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='/media/i/main/ajax-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: 7000,
                        thumbs: 5,
                        thumbsPercentReduction: 12,
                        thumbsVis: false, //true, //thumbsVis: true,
                        easeFunc: "easeInOutExpo",
                        leftButtonInner: "-", //could be an image  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") // ? - in 1.5 is not present this line
                container.removeClass("svwp").addClass("slideViewer");  
                container.attr("id", "svwp"+j);
                
                var pictWidth /*= container.find("img").attr("width")*/ = '760';                
                var pictHeight /*= container.find("img").attr("height")*/ = '310';            
//              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' style='position: absolute; width:"+(pictWidth-12)+"px; margin: 0 0 0 -"+pictWidth+"px'>"+jQuery(this).attr("alt")+"<\/span>");
        //-last one                        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: 7000,  
                        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":"310px", "overflow": "hidden", "position":"relative"});
        $("#navbox").css({"height":"310px", "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, 13000);
                // 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
                
}); 



