﻿//////////////////////
// Prev/Next Item functions
//////////////////////
var lastIndex = new Array();
var isChangingItem = new Array();

function ChangeItem(id, offset)
{
	if (isChangingItem[id])
	{
		return;
	}
	
	isChangingItem[id] = true;
	
	var elem = document.getElementById(id);
	var children = elem.getElementsByTagName("div");
	var index = lastIndex[id];

	if (!index)
	{
		index = 0;
	}
	
	var index2 = index + offset;
	
	if (index2 < 0)
	{
		index2 = children.length - 1;
	}
	else if (index2 >= children.length)
	{
		index2 = 0;
	}
	
	if (index2 == index)
	{
		isChangingItem[id] = false;
	}
	else
	{
		lastIndex[id] = index2;
		$(children.item(index)).fadeOut("fast", function() { $(children.item(index2)).fadeIn("fast"); isChangingItem[id] = false; });
		/*
		$(children.item(index2)).removeClass("hideItem");
		$(children.item(index2)).addClass("showItem");
		$(children.item(index)).removeClass("showItem");
		$(children.item(index)).addClass("hideItem");
		*/
	}
}

function Prev(id)
{
	ChangeItem(id, -1);
}

function Next(id)
{
	ChangeItem(id, 1);
}

function GoTo(id, index)
{
	if (isChangingItem[id])
	{
		return;
	}

	if (!lastIndex[id])
	{
		lastIndex[id] = 0;
	}

	ChangeItem(id, index - lastIndex[id]);
}

function ShowItem(id)
{
	var elem = document.getElementById(id);
	
	if (elem)
	{
		elem.className = "showItem";
	}
}

function HideItem(id)
{
	var elem = document.getElementById(id);
	
	if (elem)
	{
		elem.className = "hideItem";
	}
}
//////////////////////
// Hero functions
//////////////////////
function ShowHero(id, index, delay)
{
	var elem = document.getElementById(id);
	var children = elem.getElementsByTagName("img");
	var index2 = index + 1;
	
	if (index2 >= children.length)
	{
		index2 = 0;
	}
	
	elem.style.backgroundImage = "url(" + children.item(index).src + ")";
	$(children.item(index)).fadeOut("slow", function() { $(children.item(index2)).fadeIn("slow"); });
	window.setTimeout("ShowHero('" + id + "', " + index2 + ", " + delay + ")", delay);
}

//////////////////////////////////
// Photo gallery
//////////////////////////////////
function ShowPhoto(container, id, diff)
{
	if (isChangingItem[id])
	{
		return;
	}
	
	isChangingItem[id] = true;

	var photoViewer = document.getElementById(container);
	var photoImages = photoViewer.getElementsByTagName("div");
	var elem = document.getElementById(id);
	var children = elem.getElementsByTagName("img");
	var isNewWindow = false;
	
	if (!lastIndex[id])
	{
		lastIndex[id] = 0;
		isNewWindow = true;
	}
	
	var index = lastIndex[id];
	var index2 = index + diff;

	if (index2 < 0)
	{
		index2 = children.length - 1;
	}
	else if (index2 >= children.length)
	{
		index2 = 0;
	}

	lastIndex[id] = index2;
	photoViewer.style.backgroundImage = "url(" + children.item(index2).src.replace("thumb", "photo") + ")";
	photoImages.item(0).style.backgroundImage = "url(" + children.item(index).src.replace("thumb", "photo") + ")";
	$(photoImages.item(0)).fadeOut("slow", 
		function()
		{
			photoImages.item(0).style.backgroundImage = "url(images/spacer.gif)";
			$(photoImages.item(0)).show();
			isChangingItem = false;
		});

	if (isNewWindow)
	{
		$('#MasterOverlay').removeClass('hideItem');
		$(photoViewer.parentNode).removeClass('hideItem');
		window.location = "#top";
	}
}

function StopPhoto(container, id)
{
	var photoViewer = document.getElementById(container);

	$('#MasterOverlay').addClass('hideItem');
	$(photoViewer.parentNode).addClass('hideItem');
	lastIndex[id] = null;
}

function ToggleMessageBox(container, message)
{
	var box = document.getElementById(container);

	if (message)
	{
		$('#MasterOverlay').removeClass('hideItem');
		$(box.parentNode).removeClass('hideItem');
		$(box).html(message);
	}
	else
	{
		$('#MasterOverlay').addClass('hideItem');
		$(box.parentNode).addClass('hideItem');
		$(box).html("");
	}
} 

function JumpNextField(val, size, elem)
{
	if (val.length >= size)
	{
		try
		{
			elem.focus();
		}
		catch(e)
		{
			// Do nothing
		}
	}
}

//////////////////////////////////
// Server functions
//////////////////////////////////
function GetFormBuffer($list, requireValues)
{
	var buffer = "";

	for (var i = 0; i < $list.length; i ++)
	{
		var item = $list[i];

		if (i > 0)
		{
			buffer += "&";
		}

		if (requireValues && ($(item).val() == ""))
		{
			return "";
		}

		buffer += escape(item.name) + "=" + escape($(item).val());
	}

	return buffer;
}

function ClearForm($list)
{
	for (var i = 0; i < $list.length; i ++)
	{
		$($list[i]).val("");
	}
}

function ServerCallbackXDomain($list, page)
{
	dhtmlLoadScript(page + "?postback=on&" + GetFormBuffer($list));
}

function dhtmlLoadScript(url)
{
	var e = document.createElement("script");
	
	e.src = url;
	e.type = "text/javascript";
	document.getElementsByTagName("head")[0].appendChild(e);
}

function ServerCallback($list, page)
{
	var buffer = GetFormBuffer($list);
	var req = null;
	var result = false;

	try
	{
		req = new XMLHttpRequest;
	}
	catch(e)
	{
		req = new ActiveXObject("MSXML2.XMLHTTP.3.0");
	}

	if (req)
	{
		req.open("POST", page + "?postback=on&rnd=" + Math.random());
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		req.send(buffer);
		//window.location = "#top";
		result = true;
	}
	
	return result;
}

function validateEmail(elementValue, id)
{
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    var elem = document.getElementById(id);
    var isValid = emailPattern.test(elementValue);

    if (elem)
    {
        if (isValid)
        {
            elem.className = "hideItem";
        }
        else
        {
            elem.className = "showItem";
        }
    }

    return isValid;
}

////////////////////////
// Validation functions
////////////////////////
var num_regex = /^\d+$/; // numeric digits only

function FixNumbersOnly(elem)
{
	var value = elem.value;
	
	while ((value.length > 0) && !value.match(num_regex))
	{
		value = value.substr(0, value.length - 1);
	}

	elem.value = value;
	
	return value;
}

function HasRequiredField(value)
{
	if ( (value.length == 0) || (value.replace(" ", "") == "") )
	{
		return false;
	}
	else
	{
		return true;
	}
}

function RequireField(value, id)
{
	var result = HasRequiredField(value);

	if (result)
	{
		HideItem(id);
	}
	else
	{
		ShowItem(id);
	}
}
