var undefined;

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function tabSelect(name, num, max, items, highlight) 
{
	for (i=0; i < max; i++)
	{
		base = $(name + '_tab')
		tab = $(name + "_tab" + (i+1))
		label = $(name + "_label" + (i+1))
		img = $(name + "_img" + (i+1))
		if (tab)
		{
		if (i == num)
		{
			if (tab.style.display == "none")
				new Effect.Appear(tab)
			else
				tab.style.display= "";
			
			// if (base.top)
			// tab.top = label.bottom + "px";
			
			if (highlight)
				new Effect.Highlight($(name+'_tab'))
				
			label.style.border = "1px solid transparent";
			label.style.background = "transparent";
			img.src = "/images/icons/"+ items[i] + ".png"
		}
		else
		{
			if ((tab.style.display == "") || (tab.style.display == undefined))
				new Effect.Fade(tab)
			else
				tab.style.display = "none"
			
			label.style.border = "1px solid transparent";
			label.style.background = "transparent";
			img.src= "/images/icons/" + items[i] + "_g.png";
		}
		}
	}
	
}

function chooseType(name,type,highlight)
{
	var imgs = new Array('print','t_shirt','mug')
	descript = $(name + "_about")
	if (type == "print")
	{
		tabSelect(name,0,3,imgs,highlight)
		descript.innerHTML = "<b>Print</b> choices:"
	}
	else if (type == "t_shirt")
	{
		tabSelect(name,1,3,imgs,highlight)
		descript.innerHTML = "<b>T-shirt</b> choices:"
	}
	else if (type == "mug")
	{
		tabSelect(name,2,3,imgs,highlight)
		descript.innerHTML = "<b>Mug</b> choices:"
	}
	input = $(name + "[item_type]")
	input.value= type
	
}

function constrain(field_id, min, max)
{
	tag = $(field_id)
	if (tag)
	{
		if (parseInt(tag.value, 0) == NaN) {
			tag.value= min.toString();
		}
		if ((min != null) && (parseInt(tag.value, 0) < min))
		{
			tag.value = min.toString();
		}
		else if ((max != null) && (parseInt(tag.value,0) > max))
		{
			tag.value = max.toString();
		}
	}
}

function isMin(field_id)
{
	tag = $(field_id)
	val = parseInt(tag.value,0)
	if (tag.attributes && tag.attributes.min && (min = tag.attributes.min.value))
	{
		if (min.length > 0)
		{
			return (val <= parseInt(min,0))
		}
	}
	return false;
}

function isMax(field_id)
{
	tag = $(field_id)
	val = parseInt(tag.value,0)
	if (tag.attributes && tag.attributes.max && (max = tag.attributes.max.value))
	{
		if (max.length > 0)
		{
			return (val >= parseInt(max,0))
		}
	}
	return false;
}

function modifyNum(field_id, value)
{
	tag = $(field_id);
	// alert(tag.attributes.min.value)
	val = (parseInt(tag.value,0) + value);
	if (tag.attributes && tag.attributes.min && (min = tag.attributes.min.value))
	{
		if ((min.length > 0) && (val < parseInt(min,0)))
		{
			val = min;
		}
	}
	if (tag.attributes && tag.attributes.max && (max = tag.attributes.max.value))
	{
		if ((max.length > 0) && (val > parseInt(max,0)))
		{
			val = max;
		}
	}
	tag.value = val.toString()
}

function repeatModify(field_id, value)
{
	if (interval_handlers[field_id] || timeout_handlers[field_id]) {
		cancelRepeatModify(field_id);
	}
	timeout_handlers[field_id] = setTimeout(function (){
		timeout_handlers[field_id] = null
		interval_handlers[field_id] = setInterval(function () {
			if (!active_handlers[field_id]) {
				try {
					active_handlers[field_id] = true
					modifyNum(field_id, value)
				} finally {
					active_handlers[field_id] = false
				}
			}
		}, 70)
	}, 800)
}

function cancelRepeatModify(field_id)
{
	if (timeout_handlers[field_id]) {
		clearTimeout(timeout_handlers[field_id])
		timeout_handlers[field_id] = null;
	}
	if (interval_handlers[field_id]) {
		clearInterval(interval_handlers[field_id])
		interval_handlers[field_id] = null;
	}
}

function icon(name,state)
{
	if (state)
		name += "_" + state
	return iconURL + name + ".png"
}

function set_icon(field_id, name, state)
{
	if (isMin(field_id))
	{
		$(field_id + "_minus").src = icon("kiosk/minus","g");
	} else if (name == "minus") {
		$(field_id + "_" + name).src = icon("kiosk/"+name, state);
	} else {
		$(field_id + "_minus").src = icon("kiosk/minus");
	}
	
	if (isMax(field_id))
	{
		$(field_id + "_plus").src = icon("kiosk/plus", "g");
	}
	else if (name == "plus")
	{
		$(field_id + "_" + name).src = icon("kiosk/"+name, state);
	} else {
		$(field_id + "_plus").src = icon("kiosk/plus");
	}
	return true;
}

function valid_text_field(element, re)
{
	element = $(element);
	if (element.value) {
		if (element.value.match(re)) {
			return true;
		} else {
			return false;
		}
	} else {
		return true;
	}
}

function auto_validate(element)
{
	element = $(element);
	if (element.hasAttribute('VALID')) {
		re = new RegExp(element.getAttribute('VALID'))
		if (valid_text_field(element, re)) {
			element.style.backgroundColor = "";
			element.style.backgroundImage = "";
			element.style.outline = "";
			element.style.color = "";
		} else {
			element.style.backgroundColor = "#fee";
			element.style.backgroundImage = "url(" + icon('sm_warn') + ")";
			element.style.backgroundPosition = "90% 50%";
			element.style.backgroundRepeat = "no-repeat";
			element.style.outline = "2px solid red";
			element.style.color = "#c00";
		}
	}
}


Form.Nice = {
	radios: function (form){
		var form = $(form);
		var radios = Form.getInputs(form, 'radio', false);
		for (i = 0; i < radios.length; i++) {
			radio = radios[i]
			if (Element.hasClassName(radio, 'bordered')) {
				//radio.onChange= function (t) {  }
				if (radio.parentNode)
				{
					element = radio.parentNode;
				
					if (element && element.tagName.toLowerCase() == "div") {
						if (radio.checked) {
							//radio.elementNode.style.border = "2px solid blue;"
							Element.addClassName(element, 'radio_border_checked')
							Element.removeClassName(element, 'radio_border_unchecked')
						} else {
							//radio.elementNode.style.border = "2px solid #ccc;"
							Element.addClassName(element, 'radio_border_unchecked')
							Element.removeClassName(element, 'radio_border_checked')
						}
					}
				}
			}
		}
		return true;
	}
}

RadioObserver = Class.create()
RadioObserver.prototype = {
	initialize: function (radio, callback) {
		this.radio = radio;
		this.callback = callback;
		this.old_callback = radio.onchange || Prototype.emptyFunction;
		this.onchange = function () { }
	}
}
/*
Event.observe(document, 'load', function () {
	if (document.forms && (document.forms.length > 0)) {
		for (i = 0; i < document.forms.length; i++) {
			var form = document.forms[i];
			var radios = Form.getInputs(form, 'radio', false);
			if (radios && (radios.length > 0)) {
				for (j = 0; j < radios.length; j++) {
					var radio = radios[j];
					if (Element.hasClassName(radio, 'bordered')) {
						Event.observer(radio, 'change', function () {
							Form.Nice.radios(this.form);
						})
					}
				}
				Form.Nice.radios(form);
			}
		}
	}
	return false;
})
*/

