/* <![CDATA[ */

var Events={
	guid:1,NODE_TYPE:{ELEMENT_NODE:1,TEXT_NODE:3},
	cancel:function(event){event.preventDefault();event.stopPropagation();event.returnValue=false;},
	fix:function(event){
		if(!event.target){event.target=event.srcElement;if(event.target.nodeType==Events.NODE_TYPE.TEXT_NODE){event.target=event.target.parentNode;}}
		if(!event.preventDefault){event.preventDefault=Events.preventDefault;}
		if(!event.stopPropagation){event.stopPropagation=Events.stopPropagation;}
		return event;
	},
	handle:function(event){
		event=event||Events.fix(((this.ownerDocument||this.document||this).parentWindow||window).event);
		var handlers=this.events[event.type];
		for(var i in handlers){this.$$handleEvent=handlers[i];if(this.$$handleEvent(event)===false){return false;}}
		return true;
	},
	preventDefault:function(){this.returnValue=false;},
	remove:function(element,type,handler){
		if(element.removeEventListener){element.removeEventListener(type,handler,false);}
		else{if(element.events&&element.events[type]){delete element.events[type][handler.$$guid];}}
	},
	stopPropagation:function(){this.cancelBubble=true;}
};
Events.add=!!(document.addEventListener)?
	function(element,type,handler){element.addEventListener(type,handler,false);}:
	function(element,type,handler){
		if(!handler.$$guid){handler.$$guid=Events.guid++;}
		if(!element.events){element.events={};}
		var handlers=element.events[type];
		if(!handlers){handlers=element.events[type]={};if(element['on'+type]){handlers[0]=element['on'+type];}} // deal with existing handler 
		handlers[handler.$$guid]=handler;
		element['on'+type]=Events.handle;
	};

var Window={
	fn:[],
	load:function(){
		if(Window.fn.length){
			var fn;while((fn=Window.fn.shift())){fn();}
		}
	},
	push:function(fn){Window.fn.push(fn);}
};

var Load={
	IE:!!(document.all)&&(/microsoft/i.test(navigator.appName)),Mac:(/mac/i.test(navigator.platform)),NS4:document.getElementById?false:document.layers,
	domInit:function(){ // this is called when the document has loaded (but not necessarily all the associated images etc.)
		if(arguments.callee.done){return;}arguments.callee.done=true; //double execution check
		if((Load.IE&&Load.Mac)||Load.NS4){return;} // we don't run script on IE5.2/Mac or NN4...
		if(Window){Window.load();}
	},
	initialize:function(){
		if(Load.IE&&!Load.Mac){
			document.write('<'+'script id="__ie_onload" defer src="//0"><'+'/script>');
			document.getElementById('__ie_onload').onreadystatechange=function(){if(this.readyState=='complete'){Load.domInit();}}; // call the onload handler
		}
		else{
			if(document.addEventListener){
				document.addEventListener('DOMContentLoaded',Load.domInit,null); // only Mozilla will handle this
				if(/WebKit|KHTML/i.test(navigator.userAgent)){
					window.__WebKitTimer=window.setInterval(function(){if(/loaded|complete/.test(document.readyState)){
						window.clearInterval(window.__WebKitTimer);try{delete window.__WebKitTimer;}catch(ex){window.__WebKitTimer=null;} // clear the interval
						Load.domInit(); // call the onload handler
					}},10);
				}
			}
			else{Events.add(window,'load',Load.domInit);}
		}
	}
};
Load.initialize();

var Cookie={
	get:function(s){
		var cA=document.cookie.split(';'),sEq=s+'=';
		for(var i=0,l=cA.length,c;i<l;++i){
			c=cA[i];
			while(c.charAt(0)==' '){c=c.substr(1);}
			if(c.indexOf(sEq)===0){return c.substr(sEq.length);}
		}
		return null;
	},
	set:function(s,v,t){
		var c=s+'='+v+'; path=/';
		if(typeof t=='Number'){
			var d=new Date();
			d.setTime(d.getTime()+(t*24*60*60*1000));
			c+='; expires='+d.toGMTString();
		}
		document.cookie=c;
		return Cookie.get(s);
	},
	vet:function(s){return Cookie.set(s,'',-1);}
};

var QS={
	src:document.location.search.length?document.location.search.substr(1).split('&'):[],
	get:function(s){
		for(var i=0,l=QS.src.length,kv;i<l;++i){
			kv=QS.src[i].split('=');
			if(kv[0].toLowerCase()==s.toLowerCase()){return kv[1];}
		}
		return null;
	}
};

var Search={
	Advanced:function(f){
		f.getElementById(f.id+'_keywords').value='';
		return Search.Go(f,true);
	},
	Go:function(f,b){
		if(Search.Validate(f)||b){f.submit();}
		return false;
	},
	Validate:function(f){
		var a=f.getElementById(f.id+'_action');
		a.value=(f.getElementById(f.id+'_keywords').value.length>2)?'search':'';
		return a.value.length!==0;
	}
};

var Paging={
	current:1,pages:[],qs:document.location.search.split('&'),
	_addClass:function(el,s){var c=el.className.split(' '),cN,b=false;while((cN=c.pop())&&!b){b=(cN==s);}if(!b){el.className+=' '+s;}},
	_addElement:function(params){
		if(!params||!params.tag){return document.createElement('div');}
		var el=document.createElement(params.tag);
		for(var prop in params){switch(prop){
			case 'className':Paging._addClass(el,params[prop]);break;
			case 'click':el.style.cursor='pointer';Events.add(el,'click',params[prop]);break;
			case 'text':el.appendChild(document.createTextNode(params[prop]));break;
			case 'title':try{el.setAttribute('title',params[prop]);}catch(e){el.title=params[prop];};break;
		}}
		return el;
	},
	_addNav:function(c,pl){
		var ul=document.createElement('ul');ul.className='inline';ul.id='page-nav';
		ul.appendChild(Paging._addElement({className:'nb',click:Paging.prev,tag:'li',text:'Previous page',title:'Previous page of items'}));
		var li=document.createElement('li');
		li.appendChild(Paging._addElement({className:'dnone',tag:'span',text:'Page '}));
		li.appendChild(document.createTextNode(c+' of '+pl));
		ul.appendChild(li);
		ul.appendChild(Paging._addElement({click:Paging.next,tag:'li',text:'Next page',title:'Next page of items'}));
		ul.appendChild(Paging._addElement({className:'last nb',click:Paging.showAll,tag:'li',text:'Show all',title:'Show all items'}));
		document.getElementById('content').appendChild(ul);
	},
	_empty:function(el){while(el.firstChild){el.removeChild(el.firstChild);}return el;},
	_get:function(){
		try{
			var divs=document.getElementById('content').getElementsByTagName('div');
			if(divs.length){
				var i=0,div;while((div=divs[i++])){if(/^subpage/.test(div.className)){Paging.pages.push(div);}}
			}
		}catch(e){}
	},
	_innerText:function(el,s){
		var i=0,child;
		while((child=el.childNodes[i++])){if(child.nodeType==Events.NODE_TYPE.TEXT_NODE){el.removeChild(child);}}
		el.appendChild(document.createTextNode(s));
	},
	_remClass:function(el,s){var c=el.className.split(' '),a=[],cN;while((cN=c.pop())){if(cN!=s){a.push(cN);}}el.className=a.join(' ');},
	init:function(){
		Paging._get();
		if(Paging.pages.length>1){
			Paging._addNav(Paging.current,Paging.pages.length);
			var p=Cookie.get('CtgID'+QS.get('CtgID'));
			if(isNaN(parseInt(p,10))&&(p=='a')){return Paging.showAll();}
			p=Math.max(Math.min(parseInt(p,10), Paging.pages.length),1);
			return Paging.showAll();
		}
	},
	next:function(){if(Paging.current<Paging.pages.length){	Paging.show(Paging.current+1);}},
	prev:function(){if(Paging.current>1){Paging.show(Paging.current-1);}},
	show:function(index){
		if((index>0)&&(index<=Paging.pages.length)){
			var i=0,page;
			while((page=Paging.pages[i++])){Paging[(index!=i)?'_addClass':'_remClass'](page,'dnone');}
			Paging.current=index;
			var ul=document.getElementById('page-nav'),lis=ul.getElementsByTagName('li');
			lis[0].style.visibility=(index==1)?'hidden':'visible';
			lis[2].style.visibility=(index==Paging.pages.length)?'hidden':'visible';
			Paging[(index==1)?'_addClass':'_remClass'](lis[1],'nb');
			Paging._innerText(lis[1],index+' of '+Paging.pages.length);
			return Cookie.set('CtgID'+QS.get('CtgID'),index);
		}
	},
	showAll:function(){
		if(Paging.pages.length){
			arguments.callee.all=(!arguments.callee.all||(arguments.callee.all=='no'))?'yes':'no';
			var all=(arguments.callee.all=='yes');
			Paging.show(1);
			var lis=document.getElementById('page-nav').getElementsByTagName('li');
			lis[0].style.visibility='hidden';lis[1].style.visibility=lis[2].style.visibility=(all)?'hidden':'visible';
			Paging._innerText(lis[3],(!all)?'Show all':'Show pages');
			var title=!all?'Show all items':'Show pages of items';
			try{lis[3].setAttribute('title',title);}catch(e){lis[3].title=title;}
			var n='CtgID'+QS.get('CtgID');
			if(all){
				var i=0,page;
				while((page=Paging.pages[i++])){page.className=page.className.replace(/\s*\bdnone\b/,'');}
				Cookie.set(n,'a');
			}
			else{return Cookie.set(n,1);}
		}
	}
};

var Velvet={
	xml:null,
	autoSubscribe:function(){
		var fA=document.getElementsByTagName('form');
		for(var i=0,l=fA.length;i<l;++i){
			var el=fA[i].ReceiveEmail;
			if(el&&(el.type=='checkbox')){return Velvet.subscribe(fA[i]);}
		}
	},
	autoSubmitCart:function(){
		var f=document.getElementById('fmCountry');
		if(f){f.submit();}
	},
	initSearchBox:function(){
		var el=document.getElementById('fmSearch_Keywords');
		if(/^search$/i.test(el.value)){el.style.color='#808080';}
		Events.add(el,'focus',Velvet.onSearchBox);
		Events.add(el,'blur',Velvet.onSearchBox);
	},
	onSearchBox:function(e){
		var el=e.target;
		el.value=el.value.replace(/^search$/i,'');
		if(el.value.length===0){
			if(e.type=='focus'){el.style.color='#000';}
			else{el.style.color='#808080';el.value='Search';}
		}
	},
	subscribe:function(f){
		var fS=document.getElementById('frmSubscribe'),fields={
			Email:f.Contact_Email?f.Contact_Email.value:'',
			Mode:f.ReceiveEmail?f.ReceiveEmail.checked?'1':'0':''
		};
		if(/^[^@\.]+(\.[^@\.]+)*@[^@\.]+(\.[^@\.]+)+/.test(fields.Email)&&fields.Mode.length){
			var qs=[];
			for(var field in fields){qs.push(field+'='+fields[field]);}
			var url='/_custom/_server/graficmail.asp?'+qs.join('&');
			Velvet.xmlHttp(url,'post');
		}
		return false;
	},
	xmlHttp:function(url,method,async,callback){
		Velvet.xml=window.XMLHttpRequest?new XMLHttpRequest():null;
		if(Velvet.xml===null){Velvet.xml=window.ActiveXObject&&(!(/mac/i.test(navigator.platform)))?new ActiveObject('Microsoft.XmlHttp'):null};
		if(Velvet.xml!==null){
			method=method||'get';
			async=(typeof async=='undefined')?true:new Boolean(async);
			callback=callback||function(){
				if(Velvet.xml.readyState==4){
					if(Velvet.xml.status==200){}
					else{if(window.console){window.console.log('XmlHttp call failure: '+Velvet.xml.status+'; '+Velvet.xml.error.description);}}
				}
			};
			var data=null;
			if((method=='post')&&(url.indexOf('?')!=-1)){
				data=url.substr(url.indexOf('?')+1);
				url=url.substr(0,url.indexOf('?'));
			}
			Velvet.xml.onreadystatechange=callback;
			Velvet.xml.open(method,url,async);
			if(method=='post'){Velvet.xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');}
			Velvet.xml.send(data);
		}
	},
	zoomBox:function(link){
		var z=document.getElementById('img-zoom');
		if(!link){Paging._addClass(z,'dnone');}
		else{link.blur();Paging._remClass(z,'dnone');}
		return false;
	},
	zoomWin:function(id,product){
		var win=window.open('/zoomImage.asp?image=/_images/products/enlarged/'+escape(id)+'&amp;product='+escape(product),'zoom','scrollbars=1,resizable=1,location=0,height=10,width=10');
		return false;
	}
};

// functions for DOM load
Window.push(Velvet.autoSubscribe);
Window.push(Velvet.autoSubmitCart);
Window.push(Velvet.initSearchBox);
Window.push(Paging.init);

/* ]]> */