function openClose (elem, elemPlus) {

	if (!Element.visible(elem)) {
		Effect.SlideDown(elem, { duration: 0.2 });
	} else {
		Effect.SlideUp(elem, { duration: 0.2 });
	}
	sign = elemPlus!=null?'[-]':'[+]';
	if(sign!=null){
		$(elemPlus).innerHTML = sign
	}

}

function toggle_special (toggle) {

	if (toggle) {
		Effect.Fade ('special-offer-show');
		Effect.Appear ('special-offer');
	} else {
		Effect.Fade ('special-offer');
		Effect.Appear ('special-offer-show');
	}

	var params = 'toggle=' + toggle;

	new Ajax.Request (
		'/static/toggle-special.html',
		{method: 'get', parameters: params}
	);

}

function set_location (parent, parent_id) {

	set_location_visibility (parent_id, parent.checked)

	document.getElementsByClassName('location_tree_'+parent_id, 'location_div_'+parent_id).each(function(child) {
		child.checked = parent.checked;
	});

}

function set_location_visibility (parent_id, state) {

	if (state) {

		Element.show ('location_div_' + parent_id);
		$('location_visibility_' + parent_id).firstChild.nodeValue = '[-]';

	} else {

		Element.hide ('location_div_' + parent_id);
		$('location_visibility_' + parent_id).firstChild.nodeValue = '[+]';

	}

}

function toggle_location_visibility (parent, parent_id) {

	if (parent.firstChild.nodeValue == '[+]')
		set_location_visibility (parent_id, true);
	else
		set_location_visibility (parent_id, false);

}


function infoBoxToggle(id) {

	if (Element.visible(id)) {

		$(id+'Img').src = '/img/template/plus.png';
		Effect.BlindUp (id, { duration: 0.2 })

	} else {

		$(id+'Img').src = '/img/template/minus.png';
		Effect.BlindDown (id, { duration: 0.2 })

	}

}

function toggle_trust (show, hide) {

	Element.hide (hide+'Box');
	Element.removeClassName (hide+'Tab', 'active');
	Element.removeClassName (hide+'Box', 'active');

	Element.show (show+'Box');
	Element.addClassName (show+'Tab', 'active');
	Element.addClassName (show+'Box', 'active');

}

function set_image (index) {

	/* clear old div */
	var container = $('detailsImg');

	try {
		container.removeChild ($('largeImage'));
		container.removeChild ($('smallImages'));
	} catch (x) {}


	if (large[index]) {

		/* create new div */
		var large_image_div = document.createElement ('div');
		large_image_div.setAttribute ('id', 'largeImage');

		/* main image */
		var img = document.createElement ('img');
		img.setAttribute ('alt', 'Main Image');
		img.setAttribute ('src', medium[index]);

		var a = document.createElement ('a');
		a.setAttribute ('href', large[index]);
		a.appendChild (img);

		large_image_div.appendChild (a);

		/* add div */
		container.appendChild (large_image_div);

	}


	/* create new div */
	var small_images_div = document.createElement ('div');
	small_images_div.setAttribute ('id', 'smallImages');

	/* thumbnails */
	for (var i = 0; i < small.length; i++) {

		if (i != index) {

			var img = document.createElement ('img');
			img.setAttribute ('alt', 'Thumbnail ' + i);
			img.src = small[i];

			var a = document.createElement ('a');
			a.setAttribute ('href', 'javascript:set_image(' + i + ')');
			a.appendChild (img);

			small_images_div.appendChild (a);

		}

	}

	/* add div */
	container.appendChild (small_images_div);


}

function set_referral_message (type) {

	var message = $('message');

	if (message.value == lister_message || message.value == buyer_message || message.value == '' || confirm ('Overwrite your changes?')) {

		if (type == 'lister')
			message.value = lister_message;
		else if (type == 'buyer')
			message.value = buyer_message;

	}

}

function Parent (id, label) {

	this.id = id;
	this.label = label;
	this.children = new Array ();

}

function Child (id, label) {

	this.id = id;
	this.label = label;

}

function set_parent (selected_parent_id, selected_children) {

	/* unfortunately we have to use this horrible createElement workaround as
	IE does not let you set a dynamically created elements' checked state. at
	least onClick works... */

	num_checked = 0;

	var category_tree = $('category_tree');
	while (category_tree.hasChildNodes())
		category_tree.removeChild (category_tree.firstChild);

	parents.each(function(parent) {

		if (parent) {

			var radio = createElement ('radio', 'parent', (parent.id == selected_parent_id));
			radio.onclick = function () { set_parent(parent.id, new Array ()) }

			var text = document.createElement ('span');
			text.innerHTML = ' ' + parent.label;

			var label = document.createElement ('label');
			label.appendChild(radio);
			label.appendChild(text);

			var br = document.createElement ('br');

			category_tree.appendChild(label);
			category_tree.appendChild(br);

			if (parent.id == selected_parent_id) {

				var div = document.createElement ('div');
				div.style.padding = '5px 0 10px 20px';

				parent.children.each(function(child) {

					var checked = selected_children.include(child.id);

					var checkbox = createElement ('checkbox', 'categories[]', checked);
					checkbox.value = child.id;
					checkbox.onclick = function () { set_child(this) }

					var c_text = document.createElement ('span');
					c_text.innerHTML = ' ' + child.label;

					var c_label = document.createElement ('label');
					c_label.appendChild(checkbox);
					c_label.appendChild(c_text);

					var c_br = document.createElement ('br');

					div.appendChild(c_label);
					div.appendChild(c_br);

					if (checked)
						set_child (checkbox);


				});

				category_tree.appendChild(div);

			}

		}

	});

}

function set_child (child) {

	if (child.checked) {

		if (num_checked + 1 > max_checked) {

			child.checked = false;

			alert ('You may only select '+max_checked+' sub-categories.');

		} else {

			num_checked ++;

		}

	} else {

		num_checked --;

	}

}

var parents = new Array ();
var max_checked = 4;
var num_checked = 0;

function switch_assoc (newi) {

	var oldi = $('pri-assoc-img').firstChild;

	var oldihref = oldi.href;
	var oldisrc = oldi.firstChild.src;
	var oldialt = oldi.firstChild.alt;
	var oldititle = oldi.firstChild.title;

	var newihref = newi.href;
	var newisrc = newi.firstChild.src;
	var newialt = newi.firstChild.alt;
	var newititle = newi.firstChild.title;

	oldi.href = newihref;
	oldi.firstChild.src = newisrc;
	oldi.firstChild.alt = newialt;
	oldi.firstChild.title = newititle;

	newi.href = oldihref;
	newi.firstChild.src = oldisrc;
	newi.firstChild.alt = oldialt;
	newi.firstChild.title = oldititle;

}




function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}
