// JavaScript Document

// Botero.com
// Author David Fogle
// Requires jQuery

var $ob = jQuery.noConflict();

/* overall fading */
var fadeIn_time = 200;
var fadeTo_value = 0.5;
var fadeOut_time = 600;
var fadeOnLoad_delay = 2000;
var fadeOnLoadDone = false;

/* fast fading */
var fastfadeIn_time = 50;
var fastfadeOut_time = 100;

/* slide show */
var curPicIndex = 1;
var slideShow_interval = 6000;
var slideShow_loopCount = 0;
var slideShow_loopLimit = 100;
var slideShow_paused = false;

/* scrollable pics and batch names */
var scrollDuration = 1000;

/* for use in animating small home page image */
var img_obj = false;
var img_target_top = 0;
var img_animated = false;

$ob("document").ready(function() {
	// IE didn't fade ul inside divs with .fade class, 
	// so added .fade class to ul instead and used additional selector ul.fade
	$ob("div.fade, ul.fade").hover(fade_in,fade_out);
	$ob("div.fastfade").hover(fastfade_in,fastfade_out);
	$ob("#order-form").fadeTo(1, 0.0);


	if ($ob("div.field-name-field-large-image div div img").length > 0) {
		$ob("div.field-name-field-large-image div div img").click( function() {
			startStop();													  
		});
	}
	
	var tempSlideCount = $ob('div.view-content div.large-image').length - 1;
	slideCount = (tempSlideCount > 0 ) ? tempSlideCount : 
		$ob('div.field-name-field-large-image div.field-items div').length - 1;			

	fade_onload_timeout = setTimeout(fade_onload, fadeOnLoad_delay);

	if (slideCount > 0) {
		updateImageNavCount(0);
		
		if (slideShow_loopLimit > 0) {
			changeSlide(0); // To make first pic visible
			if (slideCount > 1) slideShowVar = setInterval(slideShow, slideShow_interval);
			$ob("div#loading img").fadeTo(1, 0.0);			
		}
	}
	if ($ob("div.scrollable").length > 0) {
		paginate_thumbnails();
	}
/*	if ($ob("div.scrollable2").length > 0) {
		paginate_batches();
	} */
	if (slideCount > 1) attach_thumnail_onclicks();
	if (slideCount > 0) attach_large_img_link();
	
	if ($ob("body").hasClass('node-type-home-page')) {
		
		$ob("div.field-name-field-small-image").click(function(){
			location.assign('/showroom/5');
		});
		
		animate_image();
	}
});


function animate_image() {
	
	var img_interval = 80;
	
	img_obj = $ob("div.field-name-field-small-image div.field-items div.field-item img");

	// Bind event to image: stop animating if cursor enters image
	img_obj.mouseenter(function(){
		if (img_animated) {
			clearInterval(animateVar);
			img_animated = false;
		}
	});

	// Bind event to image: start animating if cursor leaves image
	img_obj.mouseleave(function(){
		if (!img_animated) {
			animateVar = setInterval(move_image, img_interval);	
			img_animated = true;
		}
	});

	// Begin animation
	animateVar = setInterval(move_image, img_interval);
	img_animated = true;
	
}

function move_image() {
	
	var img_pos = img_obj.position();
	
	// Move image back to beginning if whole image has scrolled, else step one pixel
	if (img_pos.top == img_target_top) {
		img_obj.css({ "top": -684 + "px" }) ; // 581
	} else {
		img_obj.css({ "top": img_pos.top + 1 + "px" }) ;		
	}
}


// Paginate thumbnails
// ############################

function paginate_thumbnails() {
	var num_pics = $ob("div.scrollable div.view-content div.views-row").length;
	var page_size = 18; //15; // number of icons per scroll page. Must be multiple of 2.
	var page_height = 21 * page_size;

	// If there is more than one page of pics
	if (num_pics > page_size) {
		var div_prefix = 'div.scrollable div.view-content .views-row-';
		var sel_str = '';
		var x = 1;
		// step through pics and wrap them in divs according to page size
		for(y=1; y<=num_pics; y++) {
			sel_str += div_prefix + y;
			if (x == page_size || y == num_pics) {
				$ob(sel_str).wrapAll('<div style="height: ' + page_height + 'px;" />');
				sel_str = '';
				x = 1;
			} else {
				sel_str += ', ';
				x++;
			}
		}
		// Necassary to keep the instances separate
		$ob("div.scrollable").wrapAll('<div>');		
	
		var navi_links = '<div id="navi-div" class="fade">';

		navi_links += '<div class="navi-arrows">';
		navi_links += '<a class="prev browse left" /></a>';
		navi_links += '</div>';
		
		navi_links += '<div class="navi"></div>';
		
		navi_links += '<div class="navi-arrows">';
		navi_links += '<a class="next browse right"></a>';
		navi_links += '</div>';
		
		navi_links += '</div>';

		$ob("div.scrollable").attr('id','scrollable');
		$ob("#scrollable").after(navi_links);
		$ob("#navi-div.fade").hover(fade_in,fade_out);
		// initialize scrollable with mousewheel support
		$ob("#scrollable").scrollable({ vertical: true, mousewheel: true, next: '#navi-div .next', prev: '#navi-div .prev', speed: scrollDuration }).navigator();	
	}
}


// Paginate batches
// ############################

function paginate_batches() {
	var num_lines = $ob("div.scrollable2 div.view-content div.views-row").length;
	var page_size = 19; // 18 number of lines per scroll page.
	var page_height = 20.2 * page_size;

	// If there is more than one page of pics
	if (num_lines > page_size) {
		var div_prefix = 'div.scrollable2 div.view-content .views-row-';
		var sel_str = '';
		var x = 1;
		// step through lines and wrap them in divs according to page size
		for(y=1; y<=num_lines; y++) {
			sel_str += div_prefix + y;
			if (x == page_size || y == num_lines) {
				$ob(sel_str).wrapAll('<div style="height: ' + page_height + 'px;" />');
				sel_str = '';
				x = 1;
			} else {
				sel_str += ', ';
				x++;
			}
		}
		$ob("div.scrollable2").wrapAll('<div>');

		var navi2_links = '<div id="navi2-div" class="fade">';

		navi2_links += '<div class="navi-arrows">';
		navi2_links += '<a class="prev browse left"></a>';
		navi2_links += '</div>';
		
		navi2_links += '<div class="navi"></div>';
		
		navi2_links += '<div class="navi-arrows">';
		navi2_links += '<a class="next browse right" /></a>';
		navi2_links += '</div>';
		
		navi2_links += '</div>';

		$ob("div.scrollable2").attr('id','scrollable2');
		$ob("#scrollable2").after(navi2_links);
		$ob("#navi2-div.fade").hover(fade_in,fade_out);
		// initialize scrollable with mousewheel support
		$ob("#scrollable2").scrollable({ vertical: true, mousewheel: true, next: '#navi2-div .next', prev: '#navi2-div .prev', speed: scrollDuration }).navigator();	
	}
}



// Attach onclick behavior to each thumbnail
// ###########################

function attach_thumnail_onclicks() {
		
/*	$ob("div.scrollable div.view-content div.views-row img").each(function(index) {
		$ob(this).attr('onclick','gotoPic(' + (parseInt(index) + 1) + ')');
	});
*/
	$ob("div.scrollable div.view-content div.views-row img").each(function(index) {
		$ob(this).click(function() {
			gotoPic(parseInt(index) + 1);
		});
	});


}



// Attach supersize image array link to button
// ###########################

function attach_large_img_link() {
	
	// Get image paths as an array
	var img_paths_arr = new Array();
	
	if ($ob("body").hasClass('node-type-home-page')) {
		var img_objs = $ob("div.field-name-field-large-image div div img");
		var path_str = 'home.php?';
		
	} else if ($ob("body").hasClass('page-associates') || $ob("body").hasClass('page-associates-clone')) {
		var img_objs = $ob("div.scrollable div.view-content div.views-row img");
		var path_str = 'sba.php?reg_page=' + location.pathname + '&';
	
	} else if ($ob("body").hasClass('page-showroom')) {
		var img_objs = $ob("div.scrollable div.view-content div.views-row img");
		var path_str = 'sbs.php?reg_page=' + location.pathname + '&';
	
	} else if ($ob("body").hasClass('page-media')) {
		var img_objs = $ob("div.scrollable div.view-content div.views-row img");
		var path_str = 'media.php?reg_page=' + location.pathname + '&';
	}
	var img_loop = img_objs.each(function() {
			img_paths_arr.push( $ob(this).attr('src') );
		});
	
	var img_names_arr = new Array();
	for (x=0; x<img_paths_arr.length; x++) {
		
		var img_path_arr = img_paths_arr[x].split('/');
		img_names_arr.push( img_path_arr[img_path_arr.length - 1] );
		
	}
	var images_list = img_names_arr.join(',');	
		
	$ob('div#main-img-zoom').click(function() {
		location.assign('/supersized/' + path_str + 'img_list=' + images_list);
	});
	
}


// Fading
// ############################

/* 		Initial overall fading */
function fade_onload() {
	$ob("div.fade, ul.fade, div.fastfade").fadeTo(fadeOut_time, fadeTo_value);
	fadeOnLoadDone = true;
}

/* 		Fading handler  */
/* in_out = 'in' or 'out' (str)
   fadeSpeed = milliseconds (int)
*/
function fade(obj,in_out,fadeSpeed) {
	
	// fading in
	if (in_out == 'in') {		
		if (!fadeOnLoadDone) {
			clearTimeout(fade_onload_timeout);
			fadeOnLoadDone = false;
		}
		obj.stop().fadeTo(fadeSpeed, 1.0);
	
	// fading out (default)
	} else {
		if (!fadeOnLoadDone) {
			fade_onload();
		} else {
			obj.stop().fadeTo(fadeSpeed, fadeTo_value);
		}
	}
}



/* 		Regular fading */
/* pass the jQuery object, 'in' or 'out', and fade duration milliseconds
*/
function fade_in() {
	fade( $ob(this), 'in', fadeIn_time );
}
function fade_out() {
	fade( $ob(this), 'out', fadeOut_time );
}
/* 		Fast fading */
/* same notes as regular fading
*/
function fastfade_in() {
	fade( $ob(this), 'in', fastfadeIn_time );
}
function fastfade_out() {
	fade( $ob(this), 'out', fastfadeOut_time );
}



// Slide Show
// ############################

/* dir = 1 (forward) or -1 (backward) 
*/
function changeSlide(dir) {

  var incr = true;
  if (dir == 0) {
	  // This allows skipping a pic w/o updating the counter
	  var incr = false;
	  dir = 1;
  }
  
  if ($ob('div.view-content div.large-image').length > 0)	{
	
	var curPic = $ob('div.view-content div.large-image.current');
	var nextPic = (dir == 1) ? curPic.next() : curPic.prev() ;

	if (nextPic.length == 0)
		nextPic = (dir == 1) ? $ob('div.view-content div.large-image:first') : $ob('div.view-content div.large-image:last') ;
	curPic.removeClass('current').addClass('previous');
	nextPic.css({opacity: 0.0}).addClass('current').animate({opacity: 1.0}, 1000, function() {
			curPic.removeClass('previous');
		}
	);
	
  } else {

	var curPic = $ob('div.field-name-field-large-image div.field-items div.current');
	var nextPic = (dir == 1) ? curPic.next() : curPic.prev() ;

	if (nextPic.length == 0)
		nextPic = (dir == 1) ? $ob('div.field-name-field-large-image div.field-items div:first') : $ob('div.field-name-field-large-image div.field-items div:last') ;
	curPic.removeClass('current').addClass('previous');
	nextPic.css({opacity: 0.0}).addClass('current').animate({opacity: 1.0}, 1000, function() {
			curPic.removeClass('previous');
		}
	);

  }
	if (incr) updateImageNavCount(dir);
}

// Start stop slideshow
// #####################

function startStop() {
	
	if (slideShow_paused) {

		slideShow();
		slideShowVar = setInterval(slideShow, slideShow_interval);
		slideShow_paused = false;

	} else {

		clearInterval(slideShowVar);
		slideShow_paused = true;
	}
}


// Step to an arbitrary pic
// ############################

function gotoPic(pic) {
  
	// alert('cur=' + curPicIndex + ', pic=' + pic);

	var imgObj = $ob('div.view-content div.large-image');
	if (imgObj.length > 0) {
		var curPic = $ob('div.view-content div.large-image:eq(' + (curPicIndex - 1) + ')');
		var nextPic = $ob('div.view-content div.large-image:eq(' + (pic - 1) + ')');
	} else {
		var curPic = $ob('div.field-name-field-large-image div.field-items div:eq(' + (curPicIndex - 1) + ')');
		var nextPic = $ob('div.field-name-field-large-image div.field-items div:eq(' + (pic - 1) + ')');		
	}

	var steps = pic - parseInt(curPicIndex);
	
	curPic.removeClass('current').addClass('previous');
	nextPic.css({opacity: 0.0}).addClass('current').animate({opacity: 1.0}, 1000, function() {
			curPic.removeClass('previous');
		}
	);
	clearInterval(slideShowVar);
	slideShow_paused = true;
	updateImageNavCount(steps);
	
	// alert('cur=' + curPicIndex + ', pic=' + pic + ', steps=' + steps);
}

function slideShow() {
	changeSlide(1);
}
// 		Next slide
function nextSlideClick() {
	clearInterval(slideShowVar);
	slideShow_paused = true;
	changeSlide(1);
}
// 		Previous slide
function prevSlideClick() {
	clearInterval(slideShowVar);
	slideShow_paused = true;
	changeSlide(-1);
}

	
// 		Update nav count
function updateImageNavCount(upDown) {
	curPicIndex = curPicIndex + upDown;
	if (curPicIndex > slideCount) {
		curPicIndex = 1;
		slideShow_loopCount++;
		if (slideShow_loopCount >= slideShow_loopLimit) {
			clearInterval(slideShowVar);
			slideShow_paused = true;
		}
	} else if (curPicIndex == 0) {
		curPicIndex = slideCount;		
	}
	//$ob('#search-box').val(curPicIndex);

	$ob('#main-img-nav-count').html(curPicIndex + ' of ' + slideCount);
}

// Order form
// #########################
function showOrderForm() {
	$ob("#order-form").removeClass('on-bottom');
	$ob("#order-form").fadeTo(300, 1.0);
	$ob("#order-form").addClass('on-top');
}

;
/*!
 * jQuery Tools v1.2.6 - The missing UI library for the Web
 * 
 * scrollable/scrollable.js
 * scrollable/scrollable.autoscroll.js
 * scrollable/scrollable.navigator.js
 * toolbox/toolbox.mousewheel.js
 * 
 * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
 * 
 * http://flowplayer.org/tools/
 * 
 * jquery.event.wheel.js - rev 1 
 * Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
 * Liscensed under the MIT License (MIT-LICENSE.txt)
 * http://www.opensource.org/licenses/mit-license.php
 * Created: 2008-07-01 | Updated: 2008-07-14
 * 
 * -----
 * 
 */
(function(a){a.tools=a.tools||{version:"v1.2.6"},a.tools.scrollable={conf:{activeClass:"active",circular:!1,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:"> *",items:".items",keyboard:!0,mousewheel:!1,next:".next",prev:".prev",size:1,speed:400,vertical:!1,touch:!0,wheelSpeed:0}};function b(a,b){var c=parseInt(a.css(b),10);if(c)return c;var d=a[0].currentStyle;return d&&d.width&&parseInt(d.width,10)}function c(b,c){var d=a(c);return d.length<2?d:b.parent().find(c)}var d;function e(b,e){var f=this,g=b.add(f),h=b.children(),i=0,j=e.vertical;d||(d=f),h.length>1&&(h=a(e.items,b)),e.size>1&&(e.circular=!1),a.extend(f,{getConf:function(){return e},getIndex:function(){return i},getSize:function(){return f.getItems().size()},getNaviButtons:function(){return n.add(o)},getRoot:function(){return b},getItemWrap:function(){return h},getItems:function(){return h.find(e.item).not("."+e.clonedClass)},move:function(a,b){return f.seekTo(i+a,b)},next:function(a){return f.move(e.size,a)},prev:function(a){return f.move(-e.size,a)},begin:function(a){return f.seekTo(0,a)},end:function(a){return f.seekTo(f.getSize()-1,a)},focus:function(){d=f;return f},addItem:function(b){b=a(b),e.circular?(h.children().last().before(b),h.children().first().replaceWith(b.clone().addClass(e.clonedClass))):(h.append(b),o.removeClass("disabled")),g.trigger("onAddItem",[b]);return f},seekTo:function(b,c,k){b.jquery||(b*=1);if(e.circular&&b===0&&i==-1&&c!==0)return f;if(!e.circular&&b<0||b>f.getSize()||b<-1)return f;var l=b;b.jquery?b=f.getItems().index(b):l=f.getItems().eq(b);var m=a.Event("onBeforeSeek");if(!k){g.trigger(m,[b,c]);if(m.isDefaultPrevented()||!l.length)return f}var n=j?{top:-l.position().top}:{left:-l.position().left};i=b,d=f,c===undefined&&(c=e.speed),h.animate(n,c,e.easing,k||function(){g.trigger("onSeek",[b])});return f}}),a.each(["onBeforeSeek","onSeek","onAddItem"],function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}});if(e.circular){var k=f.getItems().slice(-1).clone().prependTo(h),l=f.getItems().eq(1).clone().appendTo(h);k.add(l).addClass(e.clonedClass),f.onBeforeSeek(function(a,b,c){if(!a.isDefaultPrevented()){if(b==-1){f.seekTo(k,c,function(){f.end(0)});return a.preventDefault()}b==f.getSize()&&f.seekTo(l,c,function(){f.begin(0)})}});var m=b.parents().add(b).filter(function(){if(a(this).css("display")==="none")return!0});m.length?(m.show(),f.seekTo(0,0,function(){}),m.hide()):f.seekTo(0,0,function(){})}var n=c(b,e.prev).click(function(a){a.stopPropagation(),f.prev()}),o=c(b,e.next).click(function(a){a.stopPropagation(),f.next()});e.circular||(f.onBeforeSeek(function(a,b){setTimeout(function(){a.isDefaultPrevented()||(n.toggleClass(e.disabledClass,b<=0),o.toggleClass(e.disabledClass,b>=f.getSize()-1))},1)}),e.initialIndex||n.addClass(e.disabledClass)),f.getSize()<2&&n.add(o).addClass(e.disabledClass),e.mousewheel&&a.fn.mousewheel&&b.mousewheel(function(a,b){if(e.mousewheel){f.move(b<0?1:-1,e.wheelSpeed||50);return!1}});if(e.touch){var p={};h[0].ontouchstart=function(a){var b=a.touches[0];p.x=b.clientX,p.y=b.clientY},h[0].ontouchmove=function(a){if(a.touches.length==1&&!h.is(":animated")){var b=a.touches[0],c=p.x-b.clientX,d=p.y-b.clientY;f[j&&d>0||!j&&c>0?"next":"prev"](),a.preventDefault()}}}e.keyboard&&a(document).bind("keydown.scrollable",function(b){if(!(!e.keyboard||b.altKey||b.ctrlKey||b.metaKey||a(b.target).is(":input"))){if(e.keyboard!="static"&&d!=f)return;var c=b.keyCode;if(j&&(c==38||c==40)){f.move(c==38?-1:1);return b.preventDefault()}if(!j&&(c==37||c==39)){f.move(c==37?-1:1);return b.preventDefault()}}}),e.initialIndex&&f.seekTo(e.initialIndex,0,function(){})}a.fn.scrollable=function(b){var c=this.data("scrollable");if(c)return c;b=a.extend({},a.tools.scrollable.conf,b),this.each(function(){c=new e(a(this),b),a(this).data("scrollable",c)});return b.api?c:this}})(jQuery);
(function(a){var b=a.tools.scrollable;b.autoscroll={conf:{autoplay:!0,interval:3e3,autopause:!0}},a.fn.autoscroll=function(c){typeof c=="number"&&(c={interval:c});var d=a.extend({},b.autoscroll.conf,c),e;this.each(function(){var b=a(this).data("scrollable"),c=b.getRoot(),f,g=!1;function h(){f=setTimeout(function(){b.next()},d.interval)}b&&(e=b),b.play=function(){f||(g=!1,c.bind("onSeek",h),h())},b.pause=function(){f=clearTimeout(f),c.unbind("onSeek",h)},b.resume=function(){g||b.play()},b.stop=function(){g=!0,b.pause()},d.autopause&&c.add(b.getNaviButtons()).hover(b.pause,b.resume),d.autoplay&&b.play()});return d.api?e:this}})(jQuery);
(function(a){var b=a.tools.scrollable;b.navigator={conf:{navi:".navi",naviItem:null,activeClass:"active",indexed:!1,idPrefix:null,history:!1}};function c(b,c){var d=a(c);return d.length<2?d:b.parent().find(c)}a.fn.navigator=function(d){typeof d=="string"&&(d={navi:d}),d=a.extend({},b.navigator.conf,d);var e;this.each(function(){var b=a(this).data("scrollable"),f=d.navi.jquery?d.navi:c(b.getRoot(),d.navi),g=b.getNaviButtons(),h=d.activeClass,i=d.history&&history.pushState,j=b.getConf().size;b&&(e=b),b.getNaviButtons=function(){return g.add(f)},i&&(history.pushState({i:0}),a(window).bind("popstate",function(a){var c=a.originalEvent.state;c&&b.seekTo(c.i)}));function k(a,c,d){b.seekTo(c),d.preventDefault(),i&&history.pushState({i:c})}function l(){return f.find(d.naviItem||"> *")}function m(b){var c=a("<"+(d.naviItem||"a")+"/>").click(function(c){k(a(this),b,c)});b===0&&c.addClass(h),d.indexed&&c.text(b+1),d.idPrefix&&c.attr("id",d.idPrefix+b);return c.appendTo(f)}l().length?l().each(function(b){a(this).click(function(c){k(a(this),b,c)})}):a.each(b.getItems(),function(a){a%j==0&&m(a)}),b.onBeforeSeek(function(a,b){setTimeout(function(){if(!a.isDefaultPrevented()){var c=b/j,d=l().eq(c);d.length&&l().removeClass(h).eq(c).addClass(h)}},1)}),b.onAddItem(function(a,c){var d=b.getItems().index(c);d%j==0&&m(d)})});return d.api?e:this}})(jQuery);
(function(a){a.fn.mousewheel=function(a){return this[a?"bind":"trigger"]("wheel",a)},a.event.special.wheel={setup:function(){a.event.add(this,b,c,{})},teardown:function(){a.event.remove(this,b,c)}};var b=a.browser.mozilla?"DOMMouseScroll"+(a.browser.version<"1.9"?" mousemove":""):"mousewheel";function c(b){switch(b.type){case"mousemove":return a.extend(b.data,{clientX:b.clientX,clientY:b.clientY,pageX:b.pageX,pageY:b.pageY});case"DOMMouseScroll":a.extend(b,b.data),b.delta=-b.detail/3;break;case"mousewheel":b.delta=b.wheelDelta/120}b.type="wheel";return a.event.handle.call(this,b,b.delta)}})(jQuery);
;

