function $(id)
{
	return document.getElementById(id);
}

function displayText(text)
{
	document.getElementById('display').style.display = 'block';
	document.getElementById('display').innerHTML = text;
	document.getElementById('flickr-link').style.display = 'none';
}

function displayDefaultText()
{
	document.getElementById('display').style.display = 'none';
	document.getElementById('flickr-link').style.display = 'block';
}

function roundThese(bgColor, ids)
{
	for(var i = 0; i < ids.length; i++)
	{
		var container = null;
		
		if(container = document.getElementById(ids[i]))
		{
			container.parentNode.insertBefore(createTopRow(bgColor), container);
			container.parentNode.appendChild(createBottomRow(bgColor));
		}
	}
}

function roundThis(bgColor, id)
{
	if(container = document.getElementById(id))
	{
		container.parentNode.insertBefore(createTopRow(bgColor), container);
		container.parentNode.appendChild(createBottomRow(bgColor));
	}
}

function roundThisWithBorder(bgColor, borderColor, id)
{
	if(container = document.getElementById(id))
	{
		container.parentNode.insertBefore(createTopRowWithBorder(bgColor, borderColor), container);
		container.parentNode.appendChild(createBottomRowWithBorder(bgColor, borderColor));
	}
}

function createTopRow(bgColor)
{
	var rTop = document.createElement('b');
	rTop.className = 'row-top';
	
	var r1 = document.createElement('b');
	r1.className = 'r1';
	r1.style.backgroundColor = bgColor;
	
	var r2 = document.createElement('b');
	r2.className = 'r2';
	r2.style.backgroundColor = bgColor;
	
	var r3 = document.createElement('b');
	r3.className = 'r3';
	r3.style.backgroundColor = bgColor;
	
	var r4 = document.createElement('b');
	r4.className = 'r4';
	r4.style.backgroundColor = bgColor;
	
	rTop.appendChild(r1);
	rTop.appendChild(r2);
	rTop.appendChild(r3);
	rTop.appendChild(r4);
	
	return rTop;
}

function createBottomRow(bgColor)
{
	var rBottom = document.createElement('b');
	rBottom.className = 'row-bottom';
	
	var r1 = document.createElement('b');
	r1.className = 'r1';
	r1.style.backgroundColor = bgColor;
	
	var r2 = document.createElement('b');
	r2.className = 'r2';
	r2.style.backgroundColor = bgColor;
	
	var r3 = document.createElement('b');
	r3.className = 'r3';
	r3.style.backgroundColor = bgColor;
	
	var r4 = document.createElement('b');
	r4.className = 'r4';
	r4.style.backgroundColor = bgColor;
	
	rBottom.appendChild(r4);
	rBottom.appendChild(r3);
	rBottom.appendChild(r2);
	rBottom.appendChild(r1);
	
	return rBottom;
}

function createTopRowWithBorder(bgColor, borderColor)
{
	var rTop = document.createElement('b');
	rTop.className = 'row-top';
	
	var r1 = document.createElement('b');
	r1.className = 'r1 r-border';
	r1.style.backgroundColor = bgColor;
	r1.style.borderColor = borderColor;
	r1.style.borderTop = '1px solid ' + borderColor;
	
	var r2 = document.createElement('b');
	r2.className = 'r2 r-border';
	r2.style.backgroundColor = bgColor;
	r2.style.borderColor = borderColor;
	
	var r3 = document.createElement('b');
	r3.className = 'r3 r-border';
	r3.style.backgroundColor = bgColor;
	r3.style.borderColor = borderColor;
	
	var r4 = document.createElement('b');
	r4.className = 'r4 r-border';
	r4.style.backgroundColor = bgColor;
	r4.style.borderColor = borderColor;
	
	rTop.appendChild(r1);
	rTop.appendChild(r2);
	rTop.appendChild(r3);
	rTop.appendChild(r4);
	
	return rTop;
}

function createBottomRowWithBorder(bgColor, borderColor)
{
	var rBottom = document.createElement('b');
	rBottom.className = 'row-bottom';
	
	var r1 = document.createElement('b');
	r1.className = 'r1 r-border';
	r1.style.backgroundColor = bgColor;
	r1.style.borderColor = borderColor;
	r1.style.borderBottom = '1px solid ' + borderColor;
	
	var r2 = document.createElement('b');
	r2.className = 'r2 r-border';
	r2.style.backgroundColor = bgColor;
	r2.style.borderColor = borderColor;
	
	var r3 = document.createElement('b');
	r3.className = 'r3 r-border';
	r3.style.backgroundColor = bgColor;
	r3.style.borderColor = borderColor;
	
	var r4 = document.createElement('b');
	r4.className = 'r4 r-border';
	r4.style.backgroundColor = bgColor;
	r4.style.borderColor = borderColor;
	
	rBottom.appendChild(r4);
	rBottom.appendChild(r3);
	rBottom.appendChild(r2);
	rBottom.appendChild(r1);
	
	return rBottom;
}

function slowFade(compId, fadeFor, startAfter, stayFor)
{
	window.setTimeout(
		function()
		{
			_slowFade(compId, fadeFor, stayFor);
		}, startAfter);
}

function _slowFade(compId, fadeFor, stayFor)
{
	document.getElementById(compId).style.backgroundColor = '#FFFFCC';
	
	window.setTimeout(
		function()
		{
			fadeOut(compId, fadeFor);
		}, stayFor);			
}

function fadeOut(compId, fadeFor)
{
	var i = 0;
	
	var interval = fadeFor/colors.length;
	
	var timer = window.setInterval(
					function()
					{
						if(i < colors.length)
						{
							document.getElementById(compId).style.backgroundColor = '#'+colors[i++];
						}
					}, interval);

	window.setInterval(
		function ()
		{
			clearInterval(timer);
		}, fadeFor);
}

var colors = 
	['FEFECD', 'FDFDCE', 'FCFCCF', 'FBFBD0', 
	 'FAFAD1', 'F9F9D2', 'F8F8D3', 'F7F7D4', 
	 'F6F6D5', 'F5F5D6', 'F4F4D7', 'F3F3D8', 
	 'F2F2D9', 'F1F1DA', 'F0F0DB', 'EFEFDC', 
	 'EEEEDD'];

function commentSuccess()
{
	document.CommentsForm.reset();
	document.CommentsForm.commentSubmit.disabled = false;
	$('count').innerHTML = '2000';
	$('comment-success-msg').style.display = 'inline';
	
	slowFade('comment-success-msg', 5000, 0, 2000);
	window.setTimeout(function(){$('comment-success-msg').style.display = 'none';}, 9000);
}

function commentFailure()
{
	$('comment-failure-msg').style.display = 'inline';
	document.CommentsForm.commentSubmit.disabled = false;
	
	slowFade('comment-failure-msg', 5000, 0, 2000);
	window.setTimeout(function(){$('comment-failure-msg').style.display = 'none';}, 9000);
}

function commentSumFailure()
{
	$('comment-sum-failure-msg').style.display = 'inline';
	document.CommentsForm.commentSubmit.disabled = false;
	
	slowFade('comment-sum-failure-msg', 5000, 0, 2000);
	window.setTimeout(function(){$('comment-sum-failure-msg').style.display = 'none';}, 9000);
}

function validateComments()
{
	var nameField = document.CommentsForm.name.value;
	var emailField = document.CommentsForm.email.value;
	var commentField = document.CommentsForm.comment.value;
	var sumField = document.CommentsForm.sum.value;
	
	var error = false;

	if(!nameField || nameField.match(/\s+$/))
	{
		slowFade('nameBg', 5000, 0, 2000);
		error = true;
	}
	if(!sumField || sumField.match(/\s+$/))
	{
		slowFade('sumBg', 5000, 0, 2000);
		error = true;
	}
	if(!emailField || emailField.match(/\s+$/))
	{
		slowFade('emailBg', 5000, 0, 2000);
		error = true;
	}
	else if(!emailField.match(/^[a-zA-Z0-9]+[-._a-zA-Z0-9]*@[-._a-zA-Z0-9]*[a-zA-Z0-9]+$/g))
	{
		$('email-error-msg').style.display = 'inline';
		
		slowFade('email-error-msg', 5000, 0, 2000);
		window.setTimeout(function(){$('email-error-msg').style.display = 'none';}, 9000);
		error = true;
	}
	
	if(!commentField || !validateCommentsTextarea(commentField.length))
	{
		error = true;
	}
	
	if(!error)
	{
		document.CommentsForm.commentSubmit.disabled = true;
	}
	
	return !error;
}

function validateCommentsTextarea(size)
{
	var limit = 2000;
	
	document.getElementById('count').innerHTML = (limit - size);
	
	if(size > limit)
	{
		slowFade('commentBg', 5000, 0, 2000);
		$('count').innerHTML = 0;
		return false;
	}
	else if(size == 0)
	{
		slowFade('commentBg', 5000, 0, 2000);
		return false;
	}
	
	return true;
}

function expand(elem)
{
	if(elem.style.display == 'block')
	{
		elem.style.display = 'none';
		elem.previousSibling.previousSibling.style.backgroundImage = 'url(\'../images/expand.gif\')';
	}
	else
	{
		elem.style.display = 'block';
		elem.previousSibling.previousSibling.style.backgroundImage = 'url(\'../images/contract.gif\')';
	}
}

function expandTarget(invoker, target)
{
	if(!target.style.display || target.style.display == 'block')
	{
		target.style.display = 'none';
		invoker.style.backgroundImage = 'url(\'../images/expand.gif\')';
	}
	else
	{
		target.style.display = 'block';
		invoker.style.backgroundImage = 'url(\'../images/contract.gif\')';
	}
}

function needsHack()
{
	var pos = navigator.userAgent.indexOf("MSIE ");

	if (pos == -1)
	{
		return false;
	}

	var version = navigator.userAgent.substring(pos + 5);

	return (version.indexOf("5.5") == 0 || version.indexOf("6") == 0) && navigator.platform == "Win32";
}

function fixPNG(imgId)
{
	if(needsHack())
	{
		var img = $(imgId);
		img.src = "../images/transparent.gif";
	}
}

function searchWarehouse(desc)
{
	var divs = $('warehouse-items').getElementsByTagName('div');
	
	var hiddenCount = 0;
	
	if(!desc || desc == '')
	{
		for(var i = 0; i < allWarehouseItems.length; i++)
		{
			$(allWarehouseItems[i].id).style.display = 'block';
		}
	}
	
	else
	{
		for(var i = 0; i < allWarehouseItems.length; i++)
		{
			if(allWarehouseItems[i].description.indexOf(desc.toLowerCase()) == -1)
			{
				$(allWarehouseItems[i].id).style.display = 'none';
				
				hiddenCount++;
			}
			else
			{
				$(allWarehouseItems[i].id).style.display = 'block';
			}
		}
	}
	
	if(hiddenCount == allWarehouseItems.length)
	{
		$('no-results-container').style.display = 'block';
	}
	else
	{
		$('no-results-container').style.display = 'none';
	}
}

var allWarehouseItems = new Array();

function WarehouseItem(id, description, date)
{
	this.id = id;
	this.description = description;
	this.date = date;
}

function indexWarehouseItems()
{
	var divs = $('warehouse-items').getElementsByTagName('div');
	
	for(var i = 0; i < divs.length; i++)
	{
		if(divs[i].id && divs[i].id.match(/.*-one/g))
		{
			allWarehouseItems.push(
				new WarehouseItem(
					divs[i].parentNode.parentNode.id,
					getNestedText(divs[i]),
					$(divs[i].parentNode.parentNode.id + '-two').innerHTML));
		}
	}
}

function getNestedText(element)
{
	var ELEMENT_NODE = 1;
	var TEXT_NODE = 3;
	
	var children = element.childNodes;
	var text = "";
	for (var i = 0; i < children.length; ++i)
	{
		var child = children[i];
	
		if (child.nodeType == ELEMENT_NODE)
		{
			text += getNestedText(child);
		}
		if (child.nodeType == TEXT_NODE)
		{
			text += child.nodeValue.replace(/\s+/g, ' ');
		}
	}
	
	return text.toLowerCase();
}

function sortUp()
{
	allWarehouseItems.sort(sortWarehouseItemsUp);

	list(allWarehouseItems);
}

function sortDown()
{
	allWarehouseItems.sort(sortWarehouseItemsDown);

	list(allWarehouseItems);
}

function list(wi)
{
	for(var i = 0; i < wi.length; i++)
	{
		$('warehouse-items').appendChild($(wi[i].id));
	}
}

function sortWarehouseItemsUp(item1, item2)
{
	return Date.parse(item1.date) - Date.parse(item2.date);
}

function sortWarehouseItemsDown(item1, item2)
{
	return Date.parse(item2.date) - Date.parse(item1.date);
}
