	var disableSelection = function (target)
	{
	  	if (typeof target.onselectstart!="undefined") //IE route
		{
			target.onselectstart=function(){return false}
		}  
		else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
		{ 
			target.style.MozUserSelect="none"
		}
		else //All other route (ie: Opera)
		{
			target.onmousedown=function(){return false}
		}
		target.style.cursor = "default";
	};
	
	var disableAllDivs = function()
	{
		var alltables=document.getElementsByTagName("div");
	   	for(var i=0; i<alltables.length; i++)
	   	{
	    	disableSelection(alltables[i]); //disable text selection within all tables on the page
	  	}
	};
	
	var TimeToFade = 1000.0;

	function fade(eid)
	{
	  var element = document.getElementById(eid);
	  if(element == null)
	    return;
	   
	  if(element.FadeState == null)
	  {
	    if(element.style.opacity == null 
	        || element.style.opacity == '' 
	        || element.style.opacity == '1')
	    {
	      element.FadeState = 2;
	    }
	    else
	    {
	      element.FadeState = -2;
	    }
	  }
	    
	  if(element.FadeState == 1 || element.FadeState == -1)
	  {
	    element.FadeState = element.FadeState == 1 ? -1 : 1;
	    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
	  }
	  else
	  {
	    element.FadeState = element.FadeState == 2 ? -1 : 1;
	    element.FadeTimeLeft = TimeToFade;
	    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
	  }  
	}
	
	function animateFade(lastTick, eid)
	{  
	  var curTick = new Date().getTime();
	  var elapsedTicks = curTick - lastTick;
	  
	  var element = document.getElementById(eid);
	 
	  if(element.FadeTimeLeft <= elapsedTicks)
	  {
	    element.style.opacity = element.FadeState == 1 ? '1' : '0';
	    element.style.filter = 'alpha(opacity = ' 
	        + (element.FadeState == 1 ? '100' : '0') + ')';
	        if(element.style.opacity == '0')
	        {
	        	element.style.display = 'none';
	        }
	    element.FadeState = element.FadeState == 1 ? 2 : -2;
	    return;
	  }
	 
	  element.FadeTimeLeft -= elapsedTicks;
	  var newOpVal = element.FadeTimeLeft/TimeToFade;
	  if(element.FadeState == 1)
	    newOpVal = 1 - newOpVal;
	
	  element.style.opacity = newOpVal;
	  element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
	  
	  setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
	}



var kaceyH = new function(){
	this.imageViewer = function(targetID, startingImgIndex){
		var imageIndex = startingImgIndex;
		var imgDiv = document.createElement('div');
		imgDiv.id = targetID;
		imgDiv.className = 'imageViewer';
		
		var arrowBar = document.createElement('div');
		arrowBar.id = targetID + '_imageViewerArrowBar';
		arrowBar.className = 'imageViewerArrowBar';
		
		var backArrow = document.createElement('div');
		backArrow.id = targetID + '_imageViewerBackArrow';
		backArrow.className = 'imageViewerBackArrow';
		backArrow.appendChild(document.createTextNode('<'));
		backArrow.onclick = function(){
			setImageIndex(imageIndex - 1);
		};
		
		var nextArrow = document.createElement('div');
		nextArrow.id = targetID + '_imageViewerNextArrow';
		nextArrow.className = 'imageViewerNextArrow';
		nextArrow.appendChild(document.createTextNode('>'));
		nextArrow.onclick = function(){
			setImageIndex(imageIndex + 1);
		};
		
		arrowBar.appendChild(backArrow);
		arrowBar.appendChild(nextArrow);
		imgDiv.appendChild(arrowBar);
		
		var extraThumbsBar = document.createElement('div');
		extraThumbsBar.id = targetID + '_imageViewerExtraThumbsBar';
		extraThumbsBar.className = 'imageViewerExtraThumbsBar';
		imgDiv.appendChild(extraThumbsBar);
		
		var setImageIndex = function(newIndex){
			imageIndex = newIndex;
			if(imageIndex >= imageLists.length)
			{
				imageIndex = imageLists.length - 1;
			}
			if(imageIndex<=0)
			{
				imageIndex = 0;
				backArrow.style.display = 'none';	
			}
			else
			{
				backArrow.style.display = 'block';
			}
			if(imageIndex >= imageLists.length - 1)
			{
				nextArrow.style.display = 'none';
			}
			else
			{
				nextArrow.style.display = 'block';
			}
			
			while(extraThumbsBar.hasChildNodes()) extraThumbsBar.removeChild(extraThumbsBar.firstChild);
			extraThumbsBar.style.display = "none";
			
			imgDiv.style.backgroundImage = "url('" + imageLists[imageIndex].images[0].url +"')";
			
			if(imageLists[imageIndex].images.length > 1)
			{
				for(var i = 0; i < imageLists[imageIndex].images.length; i++)
				{
					var thumbDiv = document.createElement('div');
					thumbDiv.className = "imageViewerThumbnail";
					thumbDiv.id = targetID + "_imageViewerThumbnail" + i;
					thumbDiv.style.backgroundImage = "url('" + imageLists[imageIndex].images[i].url + "')";
					thumbDiv.title = imageLists[imageIndex].images[i].description;
					thumbDiv.onclick = function(){
						imgDiv.style.backgroundImage = this.style.backgroundImage;
						imgDiv.title = this.title;
					};
					extraThumbsBar.appendChild(thumbDiv);
					extraThumbsBar.style.display = "block";
				}
			}
		};
		
		setImageIndex(startingImgIndex);
		disableAllDivs();
		
		return imgDiv;
	};
	this.imageColumn = function(targetID, img1Url, img2Url, img3Url, img4url){
		
		var imgColumn = document.createElemt('div');
		imgColumn.id = targetID;
		imgColumn.className = 'pictureColumn';
		
		return imgColumn;
	};
	
	this.contactForm = function(targetID){
		var formElement = document.createElement('form');
		formElement.className = "kaceyHForm";
		formElement.id = targetID;
		// send using PEAR?
		// need php to post to
		var personalFieldset = document.createElement('fieldset');
		
		var firstName = document.createElement('input');
		firstName.type = "text";
		personalFieldset.appendChild(firstName);
		
		var lastName = document.createElement('input');
		lastName.type = "text";
		personalFieldset.appendChild(lastName);
		
		var emailInput = document.createElement('input');
		emailInput.type = "email";
		personalFieldset.appendChild(emailInput);
		
		var etsyNameInput = document.createElement('input');
		etsyNameInput = "text";
		personalFieldset.appendChild(etsyNameInput);
		
		formElement.appendChild(personalFieldset);
		return formElement;
	};
	

	
};
