/* 
 * PIONEER scripts
 * custom jQuery functions
 *
 */
 
 
var $j = jQuery.noConflict();

var ie6 = ($j.browser.msie && $j.browser.version < 7 ) ? true : false;
var ie7 = ($j.browser.msie && $j.browser.version == 7 ) ? true : false;
var saf = ($j.browser.safari) ? true : false;

$j(document).ready(function () {	
	
    // Confirmation message
		$j('.message_bar, .message_bar_2').each( function() {
			$j(this).fadeIn('fast',function() { $j(this).delay(10000).fadeOut(1000); });																									
		});
		
		// Voting buttons
		$j('.voting_button').each( function() {
			$j(this).click( function(e) { 
				if (!$j(this).hasClass('voting_button_on')) {
					var score = $j('.voting_score',$j(this)).html();
					score = Number(score.replace('+',''))+1;
					$j('.voting_score',$j(this)).html('+'+score);
					$j(this).addClass('voting_button_on');
				}											 
				e.preventDefault(); 
			});																								
		});		
	
		// Lightboxes zoom tool
		$j('.open_zoom, #product_visual1, #product_visual2, #view_large_visual').each( function() {
			$j(this).each( function() {																
				$j(this).click( function(e) { 
					var source = $j(this).attr('href') ? $j(this).attr('href') : $j('#view_large_visual').attr('href');
					var lightbox = jQuery.fn.lightbox({ 
						 overlayId : 'overlay_zoom',						
						 lightboxId : 'lightbox_zoom',
						 width : 885,
						 height : 505,
						 source: source,
						 hidePageScroll: true
					});					
					lightbox.open() 
					e.preventDefault();
				});
			});
		});
		$j('.zoom_tool_content').zoomTool();

		// Lightbox prompt
		$j('.open_lightbox').each( function() {
			$j(this).each( function() {																
				$j(this).click( function(e) { 
					var source = $j(this).attr('href');
					var lightbox = jQuery.fn.lightbox({ 
						 overlayId : 'overlay_prompt',						
						 lightboxId : 'lightbox_prompt',
						 //width : 885,
						 //height : 457,
						 width : 887,
						 height : 459,
						 source: source
					});					
					lightbox.open() 
					e.preventDefault();
				});
			});
		});	
		
		// Lightbox prompt
		$j('.open_prompt').each( function() {
			$j(this).each( function() {																
				$j(this).click( function(e) { 
					var source = $j(this).attr('href');					
					var lightbox = jQuery.fn.lightbox({ 
						 overlayId : 'overlay_prompt',						
						 lightboxId : 'lightbox_prompt',
						 width : 600,
						 height : 400,
						 source: source
					});					
					lightbox.open() 
					e.preventDefault();
				});
			});
		});
				

		// Lightbox prompt
		$j('.open_register_product').each( function() {
			$j(this).each( function() {																
				$j(this).click( function(e) { 
					var source = $j(this).attr('href');
					var lightbox = jQuery.fn.lightbox({ 
						 overlayId : 'overlay_register',						
						 lightboxId : 'lightbox_register',
						 width : 548,
						 height : 680,
						 source: source
					});					
					lightbox.open() 
					e.preventDefault();
				});
			});
		});		
		
    // Product pages: "More actions" dropdown
		$j('.dropdown').dropdown();
		
		// 
		//$j('.clickable').clickableElement();
 
});




/*
    CLICKABLE ELEMENT
*/

(function($) {
	jQuery.fn.clickableElement = function() {

		return this.each(function(){
			 
			var $el = $(this);
			var $link = $('a:eq(0)',$el); // first A inside element
			
			if ($link.size()>0) {
				// add pointer cursor
				$el.css({'cursor':'pointer'});
				// click event: trigger action first A HREF inside element
				$el.mouseenter( function(e) { /*don't show title*/ e.preventDefault(); });
				$el.click( function(e) { 
					var target = $link.attr('target');	
					if (target=='_blank') window.open($link.attr('href')); 
					else  location.href = $link.attr('href'); 
				});
			};
			
		});

	};
})(jQuery);



/*
    DROPDOWN
*/

(function($) {
	jQuery.fn.dropdown = function() {

		return this.each(function(){
			 
			var $dropdown = $(this);
			var $trigger = $('.dropdown_button',$(this));
			var $options = $('.dropdown_options',$(this));
			
			$trigger.mouseenter( function() { $options.fadeIn(); });
			$trigger.click( function(e) { e.preventDefault(); });
			$options.mouseleave( function() { $options.fadeOut(); });
			
		});

	};
})(jQuery);



/*
    ZOOM TOOL
*/

(function($) {
	jQuery.fn.zoomTool = function(options) {
		
		// defaults, override with options
		settings = jQuery.extend({
			scroller: 'zoom_tool_scroller'
		}, options);
		
		return this.each(function(){
	     
			 var $scroller = $('.'+settings.scroller);
			 var $mover = $('.'+settings.scroller+' ul');
			 var $scrollerLinks = $('.'+settings.scroller+' li a');
		   var $scrollerItems = $('.'+settings.scroller+' li');
			 var $alt = $('.alt_description',$(this));
			 var $downloadLink = $('.download_visual',$(this));
			 var $next;
			 var $prev;
			 var selectedItem = 0;
			 var currentPos = 1;
			 var nrVisibleItems = 5;
			 
			 var qs = new Querystring();
			 var visual = qs.get('visual');
			 if(visual!='null' && visual!='') { getSelectedItem(visual); }
			 
			 if($scrollerItems.size()<=nrVisibleItems) {
				  //$next.addClass('next_button_disabled');
					//$prev.addClass('previous_button_disabled');
			 } else {
				  $next = $('<a class="next_button"></a>').prependTo($('.zoom_tool_scroller_container')); 
					$prev = $('<a class="previous_button"></a>').prependTo($('.zoom_tool_scroller_container')); 
			 	  $next.click( function(e) { 
					  moveScroller(currentPos+nrVisibleItems);
					  e.preventDefault(); 
				  });
				  $prev.click( function(e) { 
					  moveScroller(currentPos-nrVisibleItems);
				 	  e.preventDefault(); 
				  });					 
			 }
			 
		   $scrollerLinks.each( function(i) {
			 	 $(this).click(function(e) {
					 var $a = $(this);											
					 updateZoom(i);
				   e.preventDefault();											
				 });
			 });

       function moveScroller(pos) {
         if (pos<0) pos = 0;
		     else if ($scrollerLinks.size()>nrVisibleItems && pos>$scrollerLinks.size()-nrVisibleItems) pos = $scrollerLinks.size()-nrVisibleItems;
				 
				 var left = Number($mover.css('left').replace('px',''));
			   $mover.animate({'left':(-146*pos)+'px'}, 300);
				 currentPos = pos;
				 if ($prev) {
					 if (pos==0) $prev.addClass('previous_button_disabled');
					 else $prev.removeClass('previous_button_disabled');
				 };
				 if ($next) {
					 if (pos==$scrollerLinks.size()-nrVisibleItems) $next.addClass('next_button_disabled');
					 else $next.removeClass('next_button_disabled');
				 };
			 };
				 
			 function getSelectedItem() {
				 
				 $scrollerLinks.each( function(i) {								 
					 if( $('img',$(this)).attr('src').indexOf(visual + '_overview') > 0  ) {
						 selectedItem = i; 
					 };
				 });				
			 };

			 function updateZoom(i) {
					var data = $($scrollerLinks[i]).attr('rel').evalJSON();
          //update alt
					$alt.text(data.alt);
					//update download link
					$downloadLink.attr('href',data.download).attr('title',data.dimensions);
					// update flash 
					var flashvars = {
						//xmlPath: '_zoom.php?visual='+data.large//.replace('_large.jpg','.jpg') testing pneer124
						xmlPath: 'zoomConfig.jsp?visual='+data.large//.replace('_large.jpg','.jpg')
					};
					var params = {
						menu: 'false'
					};
					var attributes = {};
					swfobject.embedSWF("/files/swf/zoom/zoom.swf", "zoomFlash", "885", "382", "9.0.0", "/files/swf/zoom/expressInstall.swf", flashvars, params, attributes);

          $($scrollerLinks[selectedItem]).removeClass('selected');
					$($scrollerLinks[i]).addClass('selected');
					selectedItem = i;
			 };
			
			 updateZoom(selectedItem);
			 if (selectedItem>(nrVisibleItems-1)) { moveScroller(selectedItem); }
			 else moveScroller(0);
		});
		
	};
})(jQuery);



/*
    LIGHTBOX
*/

(function($) {
	jQuery.fn.lightbox = function(options) {
		
		// defaults, override with options
		settings = jQuery.extend({
		  overlayId : 'overlay',
			lightboxId : 'lightbox',
			overlayClass: 'lightbox_overlay',
			lightboxClass: 'lightbox',
			closeButtonClass: 'lightbox_close',
			contentClass: 'lightbox_zoom_content',
			width : 882,
			height : 482,
			source: 'blank.html',
			resizable: true
		}, options);
	  
		return this.each(function(){
															
			// lightbox html
		  var lightbox = '';
			lightbox += '<div id="' + settings.overlayId + '" class="' + settings.overlayClass + '"></div>';
			lightbox += '<div id="' + settings.lightboxId + '" class="lightbox_content ' + settings.lightboxClass + '" style="width:' + (settings.width) + 'px; height:' + (settings.height) + 'px; margin-top:-' + Math.round(settings.height/2) + 'px; margin-left:-' + Math.round(settings.width/2) + 'px;">';
			lightbox += '<div class="' + settings.closeButtonClass + '"></div><div class="' + settings.contentClass + '">';
			lightbox += '<iframe width="'+(settings.width+30)+'" height="'+(settings.height+30)+'" frameborder="0" scrolling="no" allowtransparency="true" src="' + settings.source + '">&lt/iframe>';
			lightbox += '</div></div>';	
			
			
			//$('.lightbox_content').resizable();
			//$j('.lightbox_content').draggable();
			
			
			// the iframe must be bigger than the overlay to hide scrollbars in chrome, opera
			jQuery.fn.open = function() {
			  		 
				$lightbox = $('body').append(lightbox);
				$('#'+settings.overlayId).bgiframe();
				
				if (ie6) {
					// position for IE6
					$('html').css({'height':'100%','overflow':'hidden'});
					// position background overlay
					lightboxPos = $('.'+settings.lightboxClass).offset();
					$('.'+settings.overlayClass).css({'background-position':'center '+(lightboxPos.top-150)});
					$('.'+settings.overlayClass).focus();				
					$(window).resize( function() { 
					  if ($('.'+settings.lightboxClass).length!=0) {												 
					  	lightboxPos = $('.'+settings.lightboxClass).offset();
					  	$('.'+settings.overlayClass).css({'background-position':'center '+(lightboxPos.top-150)}); 
						};
				  });
				} else { 
				  $('html').css({'height':'100%','overflow':'hidden'});
				}
				
				
				
				$('.'+settings.closeButtonClass).click(function(){$lightbox.close();});
				$('.'+settings.overlayClass).click(function(){$lightbox.close();});
			}	
			
			
			

			jQuery.fn.close = function() {
				$('html').css({'height':'auto','overflow':'scroll'});
				$('.'+settings.overlayClass).remove();
				$('.'+settings.lightboxClass).remove();
			}
			
    });

	};	
})(jQuery);

// Function to close Image pan overlay // triggered from flash
function closeImagePan() {
	
	if(saf) { $j('.lightbox').remove(); $j('.lightbox_overlay').remove(); }
	else { $j('.lightbox').remove(); $j('.lightbox_overlay').remove(); };
	$j("html").css({'height':'auto','overflow':'scroll'});
	
};
function closeLightbox() { $j('.lightbox_overlay').remove(); $j('.lightbox').remove(); $j("html").css({'height':'auto','overflow':'scroll'}); };



/*
    ----- PLUGINS --------------------------------------------------
*/

/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-07-21 18:44:59 -0500 (Sat, 21 Jul 2007) $
 * $Rev: 2446 $
 *
 * Version 2.1.1
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(b($){$.m.E=$.m.g=b(s){h($.x.10&&/6.0/.I(D.B)){s=$.w({c:\'3\',5:\'3\',8:\'3\',d:\'3\',k:M,e:\'F:i;\'},s||{});C a=b(n){f n&&n.t==r?n+\'4\':n},p=\'<o Y="g"W="0"R="-1"e="\'+s.e+\'"\'+\'Q="P:O;N:L;z-H:-1;\'+(s.k!==i?\'G:J(K=\\\'0\\\');\':\'\')+\'c:\'+(s.c==\'3\'?\'7(((l(2.9.j.A)||0)*-1)+\\\'4\\\')\':a(s.c))+\';\'+\'5:\'+(s.5==\'3\'?\'7(((l(2.9.j.y)||0)*-1)+\\\'4\\\')\':a(s.5))+\';\'+\'8:\'+(s.8==\'3\'?\'7(2.9.S+\\\'4\\\')\':a(s.8))+\';\'+\'d:\'+(s.d==\'3\'?\'7(2.9.v+\\\'4\\\')\':a(s.d))+\';\'+\'"/>\';f 2.T(b(){h($(\'> o.g\',2).U==0)2.V(q.X(p),2.u)})}f 2}})(Z);',62,63,'||this|auto|px|left||expression|width|parentNode||function|top|height|src|return|bgiframe|if|false|currentStyle|opacity|parseInt|fn||iframe|html|document|Number||constructor|firstChild|offsetHeight|extend|browser|borderLeftWidth||borderTopWidth|userAgent|var|navigator|bgIframe|javascript|filter|index|test|Alpha|Opacity|absolute|true|position|block|display|style|tabindex|offsetWidth|each|length|insertBefore|frameborder|createElement|class|jQuery|msie'.split('|'),0,{}))

 
// jQUERY easing 1.3

jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d)},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b},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},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b},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},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b}});

/**
 * Delay plugin inspired by learningjquery.com/2007/01/effect-delay-trick
 * @author : Jp Siffert
 * @param :  delay interval, if not given default to 1000ms
 * @return : jquery chain object
 */
$j.fn.delay = function(delay){
	if(typeof delay==="undefined")  delay = 1000;
	return this.animate({'void':0}, delay);
}

/* Client-side access to querystring name=value pairs
	Version 1.2.3
	22 Jun 2005
	Adam Vandenberg
*/

function Querystring(qs) { // optionally pass a querystring to parse
	this.params = new Object();
	this.get=Querystring_get;
	
	if (qs == null) qs=location.search.substring(1,location.search.length);
	if (qs.length == 0) return;
	
	qs = qs.replace(/\+/g, ' ')
	var args = qs.split('&') // parse out name/value pairs separated via &
	
  // split out each name=value pair
	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=');
		var name = unescape(pair[0]);
		if (pair.length == 2) value = unescape(pair[1]);
		else value = name;
		this.params[name] = value;
	}
}

function Querystring_get(key, default_) {
	if (default_ == null) default_ = null; var value=this.params[key]; if (value==null) value=default_;
	return value;
} 