/*----------------------------------------------------------------------
[Global JavaScript ] 
Desc: site wide javascript

Copyright:		Adam Foster 2010
Project:		Settle Down Books
Created by:		Adam Foster
Last Updated:	17 - 12 - 10			
-----------------------------------------------------------------------*/

/* Not looking for any trouble here -----------------------------------*/

var $j = jQuery.noConflict();
var ie = false, 
	bod = null,
	boxes = null,
	sdb = null,
	img = null;

/* When the dom is ready... -------------------------------------------*/

$j(document).ready(function() {
	
	($j.browser.msie && $j.browser.version < 9) ? ie = true : ie = false;
	
	var img = $j('#background');
		bod = $j('body');
		sdb = $j('#sdb');
		bod.addClass('js');	
		boxes = $j('.box, #nav-content');
	
	var source = img.attr('src');
		img.bind('load', init);
		img.attr('src','');
		img.attr('src',source);
		
});

function init() {
		
	sdb.show();	
	var d = bod.hasClass('home') ? 1000 : 200;
	var m = bod.hasClass('home') ? 300 : 50;
	
	boxes.each(function(i) {
		var r = Math.floor(((Math.random() * (i*m)) + d)),
			t = $j(this),
			h = t.outerHeight(),
			f =  $j('<div class="flash" style="height:' + h + 'px; display: none;"></div>');
		t.after(f);	
		
		f.delay(r).animate({opacity: 0}, 0, function(){ 
			f.css('display','block') ;
			f.fadeTo(120, 1, 'easeInOutQuad', onFlashComplete);
		});
		
		function onFlashComplete(){
			f.remove();
			t.show(0, function(){
				if(t.hasClass('sliding')){ slider(); }
			});
		};
		
	});
	
	hotSpotLinks();
	inputValueReplace();
};

function hotSpotLinks() {

    $j('.clickable').each(function() { var o = new linkMe($j(this)); });

    function linkMe(e) {

        var o = {
            init: function() {
                o.box = $j(e);
				o.link = $j('.a-link, .i-link', o.box);
                o.href = o.link.attr('href');
                o.title = o.link.attr('title');
                o.box.attr('title', o.title);
                o.box.click(function() {
                    window.location = o.href;
                });
            }
        };
        o.init();

    };

};

/* Global > replace the default value of input fields ------------------------------------------------*/
/* Dependencies - none */

function inputValueReplace() {

    $j('input.valueReplace').each(function() { var o = new valueReplace($j(this)); });

    function valueReplace(e) {

        var o = {
            init: function() {
                o.field = $j(e);
                o.isSet = false;
                o.defaultValue = o.field.val();
                o.monitor();
            },
            monitor: function() {
                o.field.focus(function() {
                    if ($j(this)[0].value == o.defaultValue) { $j(this)[0].value = ''; }
                });
                o.field.blur(function() {
                    if ($j(this)[0].value == '') { $j(this)[0].value = o.defaultValue; }
                });
            }
        };
        o.init();
        return o;

    };

};

function slider() {

    $j('.sliding').each(function() { var o = new scrollMe($j(this)); });

    function scrollMe(e) {

        var o = {

            init: function() {
                o.scroller = e;
                o.scroller.append("<a href='javascript:void(0);' class='slide-left'><span>Left</span></a><a href='javascript:void(0);' class='slide-right'><span>Right</span></a>");
                o.addScroll();
            },

            addScroll: function() {
                o.scroller.scrollable({
                    clickable: false,
                    items: 'ul#slider',
                    keyboard: false,
                    next: '.slide-right',
                    prev: '.slide-left',
                    loop: false,
                    speed: 500,
                    easing: 'easeInOutQuad',
                    size: 1
                }).circular();
            }

        };

        o.init();

    };

};

function moreCats() {

	$j('.categories ul').each(function() { var o = new catMe($j(this)); });
	
	function catMe(e){
        var o = {
            init: function() {
                o.ul = e;
				o.items = o.ul.children('li');
				o.items.filter(function(i) {
					return i > 6;
				}).hide();
                o.ul.append("<li class='toggle'><a href='javascript:void(0);'><span>+</span> <em>more...</em></a></li>");
				o.tog = o.ul.find('.toggle a');
				o.tog.click(function(){o.toggleMore();});
            },
			toggleMore: function() {
				if(o.items.filter(':hidden').html()) {
					o.items.filter(':hidden').show();
					o.tog.html('<span>-</span> <em>less...</em>');
				}else{
					o.items.filter(function(i) {
						return i > 6;
					}).hide();
					o.tog.html('<span>+</span> <em>more...</em>');
				};
			}
        };
        o.init();
	}
}

/* Global > custom easing ----------------------------------------------------------------------------*/

$j.easing.easeInOutQuad = function(x, t, b, c, d) {
    if ((t /= d / 2) < 1) return c / 2 * t * t + b;
    return -c / 2 * ((--t) * (t - 2) - 1) + b;
};



/*
 * jquery.tools 1.1.2 - The missing UI library for the Web
 * 
 * [tools.scrollable-1.1.2, tools.scrollable.circular-0.5.1]
 * 
 * Copyright (c) 2009 Tero Piirainen
 * http://flowplayer.org/tools/
 *
 * Dual licensed under MIT and GPL 2+ licenses
 * http://www.opensource.org/licenses
 */
(function(b){b.tools=b.tools||{};b.tools.scrollable={version:"1.1.2",conf:{size:5,vertical:false,speed:400,keyboard:true,keyboardSteps:null,disabledClass:"disabled",hoverClass:null,clickable:true,activeClass:"active",easing:"swing",loop:false,items:".items",item:null,prev:".prev",next:".next",prevPage:".prevPage",nextPage:".nextPage",api:false}};var c;function a(o,m){var r=this,p=b(this),d=!m.vertical,e=o.children(),k=0,i;if(!c){c=r}b.each(m,function(s,t){if(b.isFunction(t)){p.bind(s,t)}});if(e.length>1){e=b(m.items,o)}function l(t){var s=b(t);return m.globalNav?s:o.parent().find(t)}o.data("finder",l);var f=l(m.prev),h=l(m.next),g=l(m.prevPage),n=l(m.nextPage);b.extend(r,{getIndex:function(){return k},getClickIndex:function(){var s=r.getItems();return s.index(s.filter("."+m.activeClass))},getConf:function(){return m},getSize:function(){return r.getItems().size()},getPageAmount:function(){return Math.ceil(this.getSize()/m.size)},getPageIndex:function(){return Math.ceil(k/m.size)},getNaviButtons:function(){return f.add(h).add(g).add(n)},getRoot:function(){return o},getItemWrap:function(){return e},getItems:function(){return e.children(m.item)},getVisibleItems:function(){return r.getItems().slice(k,k+m.size)},seekTo:function(s,w,t){if(s<0){s=0}if(k===s){return r}if(b.isFunction(w)){t=w}if(s>r.getSize()-m.size){return m.loop?r.begin():this.end()}var u=r.getItems().eq(s);if(!u.length){return r}var v=b.Event("onBeforeSeek");p.trigger(v,[s]);if(v.isDefaultPrevented()){return r}if(w===undefined||b.isFunction(w)){w=m.speed}function x(){if(t){t.call(r,s)}p.trigger("onSeek",[s])}if(d){e.animate({left:-u.position().left},w,m.easing,x)}else{e.animate({top:-u.position().top},w,m.easing,x)}c=r;k=s;v=b.Event("onStart");p.trigger(v,[s]);if(v.isDefaultPrevented()){return r}f.add(g).toggleClass(m.disabledClass,s===0);h.add(n).toggleClass(m.disabledClass,s>=r.getSize()-m.size);return r},move:function(u,t,s){i=u>0;return this.seekTo(k+u,t,s)},next:function(t,s){return this.move(1,t,s)},prev:function(t,s){return this.move(-1,t,s)},movePage:function(w,v,u){i=w>0;var s=m.size*w;var t=k%m.size;if(t>0){s+=(w>0?-t:m.size-t)}return this.move(s,v,u)},prevPage:function(t,s){return this.movePage(-1,t,s)},nextPage:function(t,s){return this.movePage(1,t,s)},setPage:function(t,u,s){return this.seekTo(t*m.size,u,s)},begin:function(t,s){i=false;return this.seekTo(0,t,s)},end:function(t,s){i=true;var u=this.getSize()-m.size;return u>0?this.seekTo(u,t,s):r},reload:function(){p.trigger("onReload");return r},focus:function(){c=r;return r},click:function(u){var v=r.getItems().eq(u),s=m.activeClass,t=m.size;if(u<0||u>=r.getSize()){return r}if(t==1){if(m.loop){return r.next()}if(u===0||u==r.getSize()-1){i=(i===undefined)?true:!i}return i===false?r.prev():r.next()}if(t==2){if(u==k){u--}r.getItems().removeClass(s);v.addClass(s);return r.seekTo(u,time,fn)}if(!v.hasClass(s)){r.getItems().removeClass(s);v.addClass(s);var x=Math.floor(t/2);var w=u-x;if(w>r.getSize()-t){w=r.getSize()-t}if(w!==u){return r.seekTo(w)}}return r},bind:function(s,t){p.bind(s,t);return r},unbind:function(s){p.unbind(s);return r}});b.each("onBeforeSeek,onStart,onSeek,onReload".split(","),function(s,t){r[t]=function(u){return r.bind(t,u)}});f.addClass(m.disabledClass).click(function(){r.prev()});h.click(function(){r.next()});n.click(function(){r.nextPage()});if(r.getSize()<m.size){h.add(n).addClass(m.disabledClass)}g.addClass(m.disabledClass).click(function(){r.prevPage()});var j=m.hoverClass,q="keydown."+Math.random().toString().substring(10);r.onReload(function(){if(j){r.getItems().hover(function(){b(this).addClass(j)},function(){b(this).removeClass(j)})}if(m.clickable){r.getItems().each(function(s){b(this).unbind("click.scrollable").bind("click.scrollable",function(t){if(b(t.target).is("a")){return}return r.click(s)})})}if(m.keyboard){b(document).unbind(q).bind(q,function(t){if(t.altKey||t.ctrlKey){return}if(m.keyboard!="static"&&c!=r){return}var u=m.keyboardSteps;if(d&&(t.keyCode==37||t.keyCode==39)){r.move(t.keyCode==37?-u:u);return t.preventDefault()}if(!d&&(t.keyCode==38||t.keyCode==40)){r.move(t.keyCode==38?-u:u);return t.preventDefault()}return true})}else{b(document).unbind(q)}});r.reload()}b.fn.scrollable=function(d){var e=this.eq(typeof d=="number"?d:0).data("scrollable");if(e){return e}var f=b.extend({},b.tools.scrollable.conf);d=b.extend(f,d);d.keyboardSteps=d.keyboardSteps||d.size;this.each(function(){e=new a(b(this),d);b(this).data("scrollable",e)});return d.api?e:this}})(jQuery);
(function(b){var a=b.tools.scrollable;a.plugins=a.plugins||{};a.plugins.circular={version:"0.5.1",conf:{api:false,clonedClass:"cloned"}};b.fn.circular=function(e){var d=b.extend({},a.plugins.circular.conf),c;b.extend(d,e);this.each(function(){var i=b(this).scrollable(),n=i.getItems(),k=i.getConf(),f=i.getItemWrap(),j=0;if(i){c=i}if(n.length<k.size){return false}n.slice(0,k.size).each(function(o){b(this).clone().appendTo(f).click(function(){i.click(n.length+o)}).addClass(d.clonedClass)});var l=b.makeArray(n.slice(-k.size)).reverse();b(l).each(function(o){b(this).clone().prependTo(f).click(function(){i.click(-o-1)}).addClass(d.clonedClass)});var m=f.children(k.item);var h=k.hoverClass;if(h){m.hover(function(){b(this).addClass(h)},function(){b(this).removeClass(h)})}function g(o){var p=m.eq(o);if(k.vertical){f.css({top:-p.position().top})}else{f.css({left:-p.position().left})}}g(k.size);b.extend(i,{move:function(s,r,p,q){var u=j+s+k.size;var t=u>i.getSize()-k.size;if(u<=0||t){var o=j+k.size+(t?-n.length:n.length);g(o);u=o+s}if(q){m.removeClass(k.activeClass).eq(u+Math.floor(k.size/2)).addClass(k.activeClass)}if(u===j+k.size){return self}return i.seekTo(u,r,p)},begin:function(p,o){return this.seekTo(k.size,p,o)},end:function(p,o){return this.seekTo(n.length,p,o)},click:function(p,r,q){if(!k.clickable){return self}if(k.size==1){return this.next()}var s=p-j,o=k.activeClass;s-=Math.floor(k.size/2);return this.move(s,r,q,true)},getIndex:function(){return j},setPage:function(p,q,o){return this.seekTo(p*k.size+k.size,q,o)},getPageAmount:function(){return Math.ceil(n.length/k.size)},getPageIndex:function(){if(j<0){return this.getPageAmount()-1}if(j>=n.length){return 0}var o=(j+k.size)/k.size-1;return o},getVisibleItems:function(){var o=j+k.size;return m.slice(o,o+k.size)}});i.onStart(function(p,o){j=o-k.size;return false});i.getNaviButtons().removeClass(k.disabledClass)});return d.api?c:this}})(jQuery);
