var PB = Class.create({
	direction:'H',
	page:1,
	pages:1,
	count:0,
	css:[],
	cssID:[],
	cssShown:[],
	slideId:false,
	sliderPos:0,
	viewport:774,
	rowHeight:135,
	viewall:false,
	filter:[],
	clearFilter:[],
	filterTitle:[],
	mouseover:[],
	shapes:[],
	sh:[],
	defaults:[],
	layouts:'s',
	isreset:false,
	
	initialize:function(){
		if( $('pb-lg-leftarrow') ){
			Event.observe('pb-lg-leftarrow','mousedown',function(){
				PB.left();
			});
			Event.observe('pb-lg-rightarrow','mousedown',function(){
				PB.right();
			});
		}
		Element.setStyle($('pg_1'),{fontWeight:'600'});
	},
	right:function(){
		PB.toPage(PB.page+1);
	},
	left:function(){
		PB.toPage(PB.page-1);
	},
	toPage:function(to){
		if(to > PB.pages || to < 1){return false;}
		if( PB.direction == 'V' ){
			var sp = 'top';
			var w = 'height';
		}else{
			var sp = 'left';
			var w = 'width';
		}
		var startPos=parseInt($('pb-productslider').getStyle(sp))||0;
		var width=parseInt($('pb-productslider').getStyle(w));
		var distance=(to-PB.page)*PB.viewport;
		var stopPos=0-((to-1)*PB.viewport);

		if(stopPos>0){stopPos=0;}
		if(stopPos<=(0-width)){return false;}
		if(stopPos==startPos){return false;}
		
		Element.setStyle($('pg_'+PB.page),{fontWeight:'normal'});
		Element.setStyle($('pg_'+to),{fontWeight:'600'});

		this.loadImages(to);
		//next page or more than one away
		if(to+1<=PB.pages && (PB.page+1==to || Math.abs(to-PB.page)>1) ){this.loadImages(to+1)}
		//previous page or more than one away
		if(to-1>0 && (PB.page-1==to || Math.abs(to-PB.page)>1) ){this.loadImages(to-1)}

		window.clearInterval(PB.slideId);
		PB.slideId=window.setInterval(function(){
			PB.page=to;
			if(to==1){
				Element.hide('pb-leftarrow');
			}else{
				Element.show('pb-leftarrow');
			}
			Element.update('pb-pg-num', to );
			var sliderPos=parseInt($('pb-productslider').getStyle(sp))||0;
			var x=PB.calculateDecel(sliderPos,stopPos);
			if( PB.direction == 'V' ){
				$('pb-productslider').style.top=x+"px";
			}else{
				$('pb-productslider').style.left=x+"px";
			}
			if(x==stopPos){
				window.clearInterval(PB.slideId);
			}
		},60);
	},
	loadImages:function(page){
		if( PB.cssShown[page] === false ){
			PB.css[page].each(function(item, index){
				Element.setStyle($(PB.cssID[page][index]),{backgroundImage:item});
			});
			PB.cssShown[page] = true;
		}
	},
	viewAll:function(){
		PB.cssShown.each(function(shown, index){ if(shown===false){PB.loadImages(index);} });
		if( PB.direction == 'V' ){
			var totalHeight = PB.rowHeight*PB.count+'px';
			Element.setStyle($('pb-productslider'),{top:'0px'});
		}else{
			var totalHeight = PB.rowHeight*PB.pages+'px';
			var totalWidth = PB.viewport+'px';
			Element.setStyle($('pb-productslider'),{left:'0px'});
			Element.setStyle($('pb-productslider'),{width:totalWidth});
		}
		Element.setStyle($('container'),{height:totalHeight});
		Element.setStyle($('pb-productslider'),{height:totalHeight});
		Element.setStyle($('pb-container'),{height:totalHeight});
		if( $('pb-lg-leftarrow') ){
			Element.hide('pb-lg-leftarrow');
			Element.hide('pb-lg-rightarrow');
		}
		Element.hide('pb-show-all');
		Element.hide('pb-page-nums');
		Element.show('pb-hide-top');
		Element.show('pb-hide-bottom');
		PB.viewall = true;
	},
	hideAll:function(){
		if( PB.direction == 'V' ){
			var totalHeight = PB.viewport+'px';
			Element.setStyle($('pb-productslider'),{height:PB.viewport*PB.pages+'px'});
		}else{
			var totalHeight = PB.rowHeight+'px';
			var totalWidth = PB.viewport*PB.pages+'px';
			Element.setStyle($('pb-productslider'),{height:totalHeight});
			Element.setStyle($('pb-productslider'),{width:totalWidth});
		}
		Element.setStyle($('container'),{height:totalHeight});
		Element.setStyle($('pb-container'),{height:totalHeight});
		if( $('pb-lg-leftarrow') ){
			Element.show('pb-lg-leftarrow');
			Element.show('pb-lg-rightarrow');
		}
		Element.show('pb-show-all');
		Element.show('pb-page-nums');
		Element.hide('pb-hide-top');
		Element.hide('pb-hide-bottom');
		PB.viewall = false;
		var x=0-((PB.page-1)*PB.viewport);
		if( PB.direction == 'V' ){
			$('pb-productslider').style.top=x+"px";
		}else{
			$('pb-productslider').style.left=x+"px";
		}
	},
	calculateDecel:function(from,to){
		var diff=Math.abs(from-to);
		if( diff<.025*PB.viewport ){
			var n=from-Math.floor((from-to)*.5);
		}else if( diff<.05*PB.viewport ){
			var n=from-Math.floor((from-to)*.25);
		}else{
			var n=from-Math.floor((from-to)*.2);
		}
		if(diff<4)return to;
		else return n;
	},
	filter:function(area,value,from,menu){
		if( value == '' ){
			new Effect.Highlight(menu, {startcolor:'#193c64', endcolor:'#93a3b6',restorecolor:'#93a3b6'} );
			Element.setStyle($(menu+'t'),{color:'#193c64'});
			$(menu+'_img').src = '/images/arrow-btn-dn-on.gif';
			PB.filter[menu] = false;		
			Element.update(menu+'t', PB.filterTitle[menu]);
			PB.clearFilter[menu] = "";
			$('menu-items-'+menu).onmouseover = PB.mouseover[menu];
		}else{
			PB.mouseover[menu] = $('menu-items-'+menu).onmouseover;
			$('menu-items-'+menu).onmouseover=null;
			new Effect.Highlight(menu, {startcolor:'#93a3b6', endcolor:'#193c64',restorecolor:'#193c64'} );
			Element.setStyle($(menu+'t'),{color:'#ffffff'});
			PB.filter[menu] = true;
			Element.update(menu+'t', from);
			PB.clearFilter[menu] = "PB.filter('"+area+"','','"+from+"','"+menu+"');";
			if(is_open[menu]){
				menu_shut(menu);
			}
			$(menu+'_img').src = '/images/arrow-btn-selected.gif';
		}
		PB.update(area,value);
	},
	update:function(area,value){
		if(PB.isreset!==true){
			PB.filter[area] = value;
			new Ajax.Request('/ajax.php?load=pbfilter&area='+encodeURIComponent(area)+'&value='+encodeURIComponent(value),{});
		}
	},
	open:function(menu){
		menu_open(menu);
	},
	click:function(menu){
		if( PB.filter[menu] === true){
			eval(PB.clearFilter[menu]);
		}else if( is_open[menu]){
			menu_close(menu,100);
			$(menu+'_img').src = '/images/arrow-btn-dn-on.gif';
		}else{
			$(menu+'_img').src = '/images/arrow-btn-up-on.gif';
			PB.open(menu);
		}	
	},
	keepopen:function(menu){
		document.body.style.cursor='pointer';
		if( PB.filter[menu] === true){
		}else{
			Element.setStyle($(menu),{backgroundColor:'#193c64'});
			Element.setStyle($(menu+'t'),{color:'#ffffff'});
			if( is_open[menu] === true ){
				$(menu+'_img').src = '/images/arrow-btn-up-on.gif';
				PB.open(menu);
			}else{
				$(menu+'_img').src = '/images/arrow-btn-dn-on.gif';
			}
		}
	},
	close:function(menu){
		document.body.style.cursor='auto';
		if( PB.filter[menu] === true){
		}else{
			Element.setStyle($(menu),{backgroundColor:'transparent'});
			Element.setStyle($(menu+'t'),{color:'#193c64'});
			if( is_open[menu] === true ){
				$(menu+'_img').src = '/images/arrow-btn-up-off.gif';
				menu_close(menu);
			}else{
				$(menu+'_img').src = '/images/arrow-btn-dn-off.gif';
			}
		}
	},
	color:function(value,color){
		var area = 'CO';
		PB.update(area,value);
		if( value == '' || value == 'T' ){
			Element.update('ftco','COLOR');
			Element.show('ft_co');
			Element.hide('ft_sa');
			Element.hide('ft_cos');
			PB.filter[area] = false;
		}else{
			Element.update('ftco',color+' COLOR');
			Element.hide('ft_co');
			Element.show('ft_sa');
			Element.show('ft_cos');
			PB.filter[area] = value;
		}
	},
	shape:function(value){
		if( PB.shapes[value] === true ){
			PB.shapes[value] = false;
			$('fts_'+value).src='/images/ft-shape-'+value+'-off.jpg';
			PB.update('SH','-'+value);
			Element.show('ft_sha');
		}else{
			PB.shapes[value] = true;
			$('fts_'+value).src='/images/ft-shape-'+value+'-on.jpg';
			PB.update('SH',value);
			Element.show('ft_sha');
		}
	},
	shapeAll:function(){
		PB.sh.each(function(i){
			PB.shapes[i] = false;
			$('fts_'+i).src='/images/ft-shape-'+i+'-off.jpg';
		});
		Element.hide('ft_sha');
		PB.update('SH','');
	},
	shapeOver:function(code,on){
		if( on === true ){
			$('fts_'+code).src='/images/ft-shape-'+code+'-on.jpg';
		}else if(PB.shapes[code] !== true){
			$('fts_'+code).src='/images/ft-shape-'+code+'-off.jpg';
		}
	},
	layout:function(value){
		if( PB.layouts != value ){
			$('fl'+PB.layouts+'i').src='/images/layout-'+PB.layouts+'-off.jpg';
			Element.setStyle($('fl'+PB.layouts+'t'),{fontWeight:'normal'});
			PB.layouts = value;
			$('fl'+PB.layouts+'i').src='/images/layout-'+PB.layouts+'-on.jpg';
			Element.setStyle($('fl'+PB.layouts+'t'),{fontWeight:'600'});
			PB.update('LO',value);
		}
	},
	layoutOver:function(code,on){
		if( on == true ){
			$('fl'+code+'i').src='/images/layout-'+code+'-on.jpg';
		}else if(PB.layouts != code){
			$('fl'+code+'i').src='/images/layout-'+code+'-off.jpg';
		}
	},
	reset:function(){
		PB.isreset = true;
		Element.update('ftco','COLOR');
		Element.show('ft_co');
		Element.hide('ft_sa');
		Element.hide('ft_cos');
		$('ct_low').value = '0.20';
		$('ct_high').value = '2.00';
		ct_slider.setValue(.2,0);
		ct_slider.setValue(2,1);
		$('pr_low').value = '0';
		$('pr_high').value = PB.defaults['pr_high']*100;
		pr_slider.setValue(0,0);
		pr_slider.setValue(PB.defaults['pr_high'],1);
		PB.sh.each(function(i){
			PB.shapes[i] = false;
			$('fts_'+i).src='/images/ft-shape-'+i+'-off.jpg';
		});
		$('flsi').src='/images/layout-s-on.jpg';
		$('flmi').src='/images/layout-m-off.jpg';
		PB.layouts = 's';
		Element.hide('ft_reset');
		PB.isreset = false;
		PB.update('RESET','ALL');
	}
});

