 /* AJAX Gallery 
    Author: Gustavo Campos me@guscampos.com
  */
			var cid;
			dom = {  
			  
			  winSize: function() {
				  
				var de = document.documentElement;
				var w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
				var h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
				return [w,h];

			  },
				
			  elementSize: function(element) {				  
				var dimensions = $(element).getDimensions(); 
				var w = dimensions.width; 
				var h =  dimensions.height;
				return [w,h];
			  },
			  
			  scrollXY: function() {
				  
				  var scrOfX = 0, scrOfY = 0;
				  if( typeof( window.pageYOffset ) == 'number' ) {
					//Netscape compliant
					scrOfY = window.pageYOffset;
					scrOfX = window.pageXOffset;
				  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
					//DOM compliant
					scrOfY = document.body.scrollTop;
					scrOfX = document.body.scrollLeft;
				  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
					//IE6 standards compliant mode
					scrOfY = document.documentElement.scrollTop;
					scrOfX = document.documentElement.scrollLeft;
				  }
		
					return [scrOfX,scrOfY];
				  
			  },
			  
			  moveDiv: function(what) {
				var div = $(what);
				if (event == null)
					event = window.event;
					
				var target = event.target != null ? event.target : event.srcElement;
				var scrollTop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;
				var scrollLeft = document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft;	
				div.style.left = (event.clientX + scrollLeft) - 205 + 'px';
				div.style.top = event.clientY + scrollTop + 5 + 'px';  
			  },

			  showCategories:function() {
				  	
				  $('categories-drop').show();
				  $('categories-drop').onmouseover = $('categories-drop').show();
				  clearTimeout(cid);
			  },
			  
			  hideCategories: function() {
				  cid = setTimeout('$(\'categories-drop\').hide()',1000);
			  },
			  
			  startCategories: function() {				  
				  $('categories-drop').show();
				  $('categories-drop').style.marginTop = '-7px';
				  new Ajax.Updater('categories-drop','/js/ajax/categories.php',{asynchronous:true});    
			  },
			  
			  registerNewsletter:function() {
					if($('form_newsletter').email.value == '') { alert('Please enter a valid email'); return false;}
					if($('form_newsletter').state.value == '') { alert('Please select a state'); return false;}
					var formVals = Form.serialize($('form_newsletter'));
					new Ajax.Request('/js/ajax/newsletter.php?action=newsletter&'+formVals, 
						{   method: 'post',
						
							onSuccess: function(transport) {   
								  
								 var output = transport.responseText || 'Error 1';	
								 alert(output);
								 $('form_newsletter').email.value = '';
								  
							},
								
							onLoading: function() {
								
							},
							
							onLoaded: function() {
								var output = transport.responseText || '0';	 							
								
							},
							onFailure: function() { alert('Error'); } 
						}
					 ); 
				},
				
				unregisterNewsletter:function() {
					if($('form_newsletter').email.value == '') { alert('Please enter a valid email'); return false;}
					if(!window.confirm('Are you sure you want to opt out of our newsletter?')) { 
						$('form_newsletter').email.value = '';
						return false; 
					}
					var formVals = Form.serialize($('form_newsletter'));
					new Ajax.Request('/js/ajax/newsletter.php?action=unsubscribe&'+formVals, 
						{   method: 'post',
						
							onSuccess: function(transport) {   
								  
								 var output = transport.responseText || 'Error 1';	
								 alert(output);	
								 $('form_newsletter').email.value = '';
								  
							},
								
							onLoading: function() {
								
							},
							
							onLoaded: function() {
								var output = transport.responseText || '0';	 							
								
							},
							onFailure: function() { alert('Error'); } 
						}
					 ); 
				}
				
			}