//Copyright (c) 2005 XTS Services Limited
//Unauthorised reproduction, copying prohibited under international copyright law.

var typ_val;
var c_focus;
var image_done = new Array();
var image_preload = new Array();
var search_array;
var doc_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");
var site_url = "www.themeshshop.com";

function show_full_categories()
{
	document.getElementById('full_categories').style.position='relative';
	document.getElementById('full_categories').style.width='656px';
	document.getElementById('full_categories').style.visibility='visible';	
	document.getElementById('full_categories_footer').style.visibility='visible';		
	document.getElementById('half_categories').style.position='absolute';
	document.getElementById('half_categories').style.visibility='hidden';
}

function change_td(id,colour)
{
document.getElementById(id).style.backgroundColor  = colour;
}

function swap_div(info_id, id_on, id_off, filename_on, filename_off, text)
{
	var info_div = document.getElementById(info_id);

	var on_div = document.getElementById(id_on);
	var off_div = document.getElementById(id_off);	
	
	info_div.innerHTML = text;

	on_div.style.background = 'url(' + doc_protocol + site_url + '/gfx/' + filename_on + '.gif)';
	off_div.style.background = 'url(' + doc_protocol + site_url + '/gfx/' + filename_off + '.gif)';	
}

function check_address()
{
	if(document.getElementById('customer_firstname').value=="")
	{
		alert('You must enter your name');
		document.getElementById('customer_firstname').focus();
		return false;
	}else if(document.getElementById('customer_surname').value=="")
	{
		alert('You must enter your name');
		document.getElementById('customer_surname').focus();
		return false;	
	}else if(document.getElementById('address_line1').value=="")
	{
		alert('You must enter the first line of your address');
		document.getElementById('address_line1').focus();
		return false;			
	}else if(document.getElementById('address_postcode').value=="")
	{
		alert('You must enter your postcode');
		document.getElementById('address_postcode').focus();
		return false;			
	}else{
		return true;
	}
}

function check_payment()
{
var regExPass = /^[a-zA-Z0-9]{6,32}$/;
var regExCard = /(\d{6}[-\s]?\d{12})|(\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4})/;
var regExNumeric = /^[0-9.]+$/;

	if(document.getElementById('ctype').value==1)
	{
		if(document.getElementById('new_card_no' + c_focus).value=="")
		{
			alert('Please enter your credit card number');
			document.getElementById('new_card_no' + c_focus).focus();
			return false;
		}else if(!regExCard.test(document.getElementById('new_card_no' + c_focus).value))
		{
			alert('Please enter a valid credit card number');
			document.getElementById('new_card_no' + c_focus).focus();
			return false;
		}else if(!check_LUHN_card(document.getElementById('new_card_no' + c_focus).value))
		{
			alert('Your credit card number does not appear to be correct - please check it and try again');
			document.getElementById('new_card_no' + c_focus).focus();
			return false;
		}else if(document.getElementById('card_security_code').value=="")
		{
			alert('Please enter the card security code on your card');
			document.getElementById('card_security_code').focus();
			return false;
		}else if(!regExNumeric.test(document.getElementById('card_security_code').value))
		{
			alert('Your card security code must be a number');
			document.getElementById('card_security_code').focus();
			return false;				
		}else if(document.getElementById('new_card_holder').value=="")
		{
			alert('Please enter your name as it appears on the credit card');
			document.getElementById('new_card_holder').focus();			
			return false;
		}else if(document.getElementById('customer_card_address_line1').value=="")
		{
			alert('Please enter the first line of the card holder`s address');
			document.getElementById('customer_card_address_line1').focus();		
			return false;
		}else if(document.getElementById('customer_card_address_postcode').value=="")
		{
			alert('Please enter the postcode of the card holder`s address');
			document.getElementById('customer_card_address_postcode').focus();				
			return false;
		}else if(document.getElementById('new'))
		{
			if(document.getElementById('ax_pass').value=="")
			{
				alert('Please choose a password');
				document.getElementById('ax_pass').focus();
				return false;
			}else if(document.getElementById('ax_pass').value!=document.getElementById('ax_pass_comp').value)
			{
				alert('Your password does not match with the confirmation - please check and try again');
				document.getElementById('ax_pass').focus();
				return false;
			}else if((document.getElementById('ax_pass').value).length < 6)
			{
				alert('Your password must be 6 characters or greater');
				document.getElementById('ax_pass').focus();
				return false;	
			}else if(!regExPass.test(document.getElementById('ax_pass').value))
			{
				alert('Your pasword must be between 6 and 32 characters in length and may contain only letters and numbers');
				document.getElementById('ax_pass').focus();
				return false;					
			}else{
				return true;
			}
		}else{
			return true;
		}
	}else{
		if(document.getElementById('new_card_no' + c_focus).value=="")
		{
			alert('Please enter your credit card number');
			document.getElementById('new_card_no' + c_focus).focus();
			return false;
		}else if(!regExCard.test(document.getElementById('new_card_no' + c_focus).value))
		{
			alert('Please enter a valid credit card number');
			document.getElementById('new_card_no' + c_focus).focus();
			return false;
		}else if(!check_LUHN_card(document.getElementById('new_card_no' + c_focus).value))
		{
			alert('Your credit card number does not appear to be correct - please check it and try again');
			document.getElementById('new_card_no' + c_focus).focus();
			return false;			
		}else if(document.getElementById('card_security_code' + c_focus).value=="")
		{
			alert('Please enter the card security code on your card');
			document.getElementById('card_security_code' + c_focus).focus();
			return false;
		}else if(!regExNumeric.test(document.getElementById('card_security_code' + c_focus).value))
		{
			alert('Your card security code must be a number');
			document.getElementById('card_security_code' + c_focus).focus();
			return false;				
		}else{
			return true;
		}
	}
}

function check_LUHN_card(cardNumber)
{
	var isValid = false;
	var ccCheckRegExp = /[^\d ]/;
	var cardNumbersOnly = cardNumber.replace(/ /g,"");
	var cardNumberLength = cardNumbersOnly.length;	
	var numberProduct;
	var numberProductDigitIndex;
	var checkSumTotal = 0;

	for (digitCounter = cardNumberLength - 1;digitCounter >= 0;digitCounter--)
    {
		checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
		digitCounter--;
		numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
		
		for (var productDigitCounter = 0;productDigitCounter < numberProduct.length;productDigitCounter++)
		{
			checkSumTotal += 
			parseInt(numberProduct.charAt(productDigitCounter));
		}
	}

	isValid = (checkSumTotal % 10 == 0);

	return isValid;
}

function check_change_card()
{
	if(document.getElementById('new_card_holder').value=="")
	{
		alert('Please enter your name as it appears on the credit card');
		document.getElementById('new_card_holder').focus();			
		return false;
	}else if(document.getElementById('customer_card_address_line1').value=="")
	{
		alert('Please enter the first line of the card holder`s address');
		document.getElementById('customer_card_address_line1').focus();		
		return false;
	}else if(document.getElementById('customer_card_address_postcode').value=="")
	{
		alert('Please enter the postcode of the card holder`s address');
		document.getElementById('customer_card_address_postcode').focus();				
		return false;
	}else{
		return true;
	}
}

function toggle_login(val)
{
var opacity = 100;
var par_opacity = 50;
var btn_new_user = document.getElementById('div_button_new_user');
var btn_existing_user = document.getElementById('div_button_existing_user');

	if(val==10)
	{


		document.getElementById('div_form_new_user').style.visibility="hidden";	
		
		btn_existing_user.style.visibility="hidden";		
		// IE/Win
		btn_existing_user.style.filter = "alpha(opacity:"+opacity+")";
	 	// Safari<1.2, Konqueror
		btn_existing_user.style.KHTMLOpacity = opacity/100;
  		// Older Mozilla and Firefox
		btn_existing_user.style.MozOpacity = opacity/100;
		// Safari 1.2, newer Firefox and Mozilla, CSS3
		btn_existing_user.style.opacity = opacity/100;
		

		btn_new_user.style.visibility="visible";
		// IE/Win
		btn_new_user.style.filter = "alpha(opacity:"+par_opacity+")";
	 	// Safari<1.2, Konqueror
		div_button_new_user.style.KHTMLOpacity = par_opacity/100;
  		// Older Mozilla and Firefox
		div_button_new_user.style.MozOpacity = par_opacity/100;
		// Safari 1.2, newer Firefox and Mozilla, CSS3
		div_button_new_user.style.opacity = par_opacity/100;		

		
		
		document.getElementById('div_form_existing_user').style.visibility="visible";	
		document.getElementById('ax_email_existing').focus();		
		typ_val = val;
		
	}else if(val==1)
	{

		document.getElementById('div_form_existing_user').style.visibility="hidden";
		
		btn_existing_user.style.visibility="visible";		
		// IE/Win
		btn_existing_user.style.filter = "alpha(opacity:"+par_opacity+")";
	 	// Safari<1.2, Konqueror
		btn_existing_user.style.KHTMLOpacity = par_opacity/100;
  		// Older Mozilla and Firefox
		btn_existing_user.style.MozOpacity = par_opacity/100;
		// Safari 1.2, newer Firefox and Mozilla, CSS3
		btn_existing_user.style.opacity = par_opacity/100;
		
	
		btn_new_user.style.visibility="hidden";
		// IE/Win
		btn_new_user.style.filter = "alpha(opacity:"+opacity+")";
	 	// Safari<1.2, Konqueror
		div_button_new_user.style.KHTMLOpacity = opacity/100;
  		// Older Mozilla and Firefox
		div_button_new_user.style.MozOpacity = opacity/100;
		// Safari 1.2, newer Firefox and Mozilla, CSS3
		div_button_new_user.style.opacity = opacity/100;
		
		document.getElementById('div_form_new_user').style.visibility="visible";		
		document.getElementById('ax_email').focus();
		typ_val = val;		
	}
	
}

function check_login_update()
{

var	regExEmail = /^[\.\wæøå-]+@([a-zA-Zæøå0-9]+([\.-]{0,1}[a-zA-Zæøå0-9]+|[a-zA-Zæøå0-9]?))+\.[a-zA-Z]{2,6}$/;

	if(typ_val==10)
	{
		if(document.getElementById('ax_email_existing').value!="" && document.getElementById('ax_pass').value!="")
		{
			document.forms['signin_existing'].submit();
		}else{
			if(document.getElementById('ax_email_existing').value=="")
			{
				alert('Please enter an email address');
				document.getElementById('ax_email_existing').focus();			
			}else if(document.getElementById('ax_pass').value=="")
			{
				alert('If you have already registered, please enter your password or select new customer to continue');
				document.getElementById('ax_pass').focus();						
			}		
		}
	}else{
		if(!regExEmail.test(document.getElementById('ax_email').value))
		{
			alert("Your email must be in the correct name@domain format.\nIf you require support, please contact support@meshcomputersownersclub.com");
		}else if(document.getElementById('ax_email').value=="")
		{
			alert('Please enter an email address');
			document.getElementById('ax_email').focus();
		}else{
			document.forms['signin_new'].submit();		
		}
	}
}

function check_login()
{
	if(typ_val==10)
	{
		if(document.getElementById('ax_email').value!="" && document.getElementById('ax_pass').value!="")
		{
			document.forms['signin'].submit();
		}else{
			if(document.getElementById('ax_email').value=="")
			{
				alert('Please enter an email address');
				document.getElementById('ax_email').focus();			
			}else if(document.getElementById('ax_pass').value=="")
			{
				alert('If you have already registered, please enter your password or select new customer to continue');
				document.getElementById('ax_pass').focus();						
			}		
		}
	}else{
		if(document.getElementById('ax_email').value!="")
		{
			document.forms['signin'].submit();		
		}else{
			alert('Please enter an email address');
			document.getElementById('ax_email').focus();
		}
	}
}

function change_card(id, ctype, usefocus)
{
	document.getElementById('ctype').value=ctype;
	document.getElementById('new_card_radio' + id).checked=true;
	if(usefocus)
	{
		document.getElementById('new_card_no' + id).focus();
	}
	c_focus=id;
}

function check_rtn_quantity(int_total, int_current, obj_id)
{

	if(isNaN(int_current) || int_current==0)
	{
		alert('Please enter a number between 1 and ' + int_total);
		document.getElementById(obj_id).focus();
	}else if(int_current > int_total)
	{
		alert('Please enter a number between 1 and ' + int_total);
		document.getElementById(obj_id).focus();
	}

}

function update_rtns_reasons(mint_id,obj_id)
{
	if(document.getElementById(obj_id).checked==true)
	{
		document.getElementById('rsn_' + mint_id).disabled=false;
		document.getElementById('rsn_' + mint_id).focus();
	}else{
		document.getElementById('rsn_' + mint_id).disabled=true;	
	}
}

function check_rtns_form()
{
	var bln_return=false;
	var i=0;
	
	while(document.getElementById('rsn_' + i))
	{
		if(document.getElementById('rsn_' + i).disabled==false && document.getElementById('rsn_' + i).value=='')
		{
			alert("Please enter the reason why you wish to return this item");
			document.getElementById('rsn_' +i).focus();
			return false;
		}
		if(document.getElementById('slt_' + i).checked==true)
		{
			bln_return=true;
		}
		i++;
	}
	
	if(bln_return==true)
	{
		return true;
	}else{
		alert("You have not selected any products to return");
		return false;
	}
}

function view_details(mint_id)
{
	if(document.getElementById('view_order_details_id'))
	{
		document.getElementById('view_order_details_id').value=mint_id
		document.forms['view_order_details'].submit();
	}
}

function check_change_details()
{
var regExPass = /^[a-zA-Z0-9]{6,32}$/;

	if(document.getElementById('customer_firstname').value=="")
	{
		alert('You must enter your name');
		document.getElementById('customer_firstname').focus();
		return false;
	}else if(document.getElementById('customer_surname').value=="")
	{
		alert('You must enter your name');
		document.getElementById('customer_surname').focus();
		return false;	
	}else if(document.getElementById('ax_email').value=="")
	{
		alert('Please enter your email address');
		document.getElementById('ax_email').focus();
		return false;			
	}else if(document.getElementById('ax_pass').value!=document.getElementById('ax_pass_comp').value)
	{
		alert('Your password does not match with the confirmation - please check and try again');
		document.getElementById('ax_pass').focus();
		return false;
	}else if((document.getElementById('ax_pass').value).length < 6 && document.getElementById('ax_email').value!="")
	{
		alert('Your password must be 6 characters or greater');
		document.getElementById('ax_pass').focus();
		return false;
	}else if(!regExPass.test(document.getElementById('ax_pass').value))
	{
		alert('Your pasword must be between 6 and 32 characters in length and may contain only letters and numbers');
		document.getElementById('ax_pass').focus();
		return false;	
	}else{
		return true;
	}
}

function check_review_form()
{
	if(document.getElementById('product_rating').value=="")
	{
		alert("Please select a star rating for the product");
		document.getElementById('product_rating').focus();
		return false;
	}else if(document.getElementById('review_title').value=="")
	{
		alert("Please enter your review title");
		document.getElementById('review_title').focus();
		return false;
	}else if(document.getElementById('review_text').value=="")
	{
		alert("Please enter your review text");
		document.getElementById('review_text').focus();
		return false;
	}else if(document.getElementById('review_name').value=="" && document.getElementById('display_email1').checked==true)
	{
		alert("Please enter your name");
		document.getElementById('review_name').focus();
		return false;
	}else if(document.getElementById('review_location').value=="")
	{
		alert("Please enter your location");
		document.getElementById('review_location').focus();
		return false;		
	}else{
		return true;
	}
		
}

function ow(URL, w_width, w_height) 
{
	day = new Date();
	id = day.getTime();
	if(!w_width)
	{
		eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=1,height=1');");
	}else{
		eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=" + parseInt(w_width) + ",height=" + parseInt(w_height) + "');");		
	}
}

function resizewindow(ew, eh) {
	var object = document.getElementById("para");
	var ww = object.offsetWidth+ew+40;
	var wh =  object.offsetHeight+eh+55;
	ww > (screen.width - 100) ? ww=(screen.width - 100) : ww=ww;
	wh > (screen.height - 100) ? wh=(screen.height - 100) : wh=wh;
	var mintPopupLeft = (screen.width - ww) / 2;
	var mintPopupTop = (screen.height - wh) / 2;
	top.window.resizeTo(ww, wh);
	top.window.moveTo(mintPopupLeft, mintPopupTop);
}

function complete_form_order()
{
	document.getElementById('completecontainer').style.visibility = 'visible';
	document.getElementById('completetext').style.visibility = 'visible';
	document.forms['complete_form'].submit();
}

function check_cancel_items()
{
	var bln_item_check = false;
	i=0;

	while(document.getElementById('cncl_' + i))
	{
		if(document.getElementById('cncl_' + i).checked==true)
		{
			bln_item_check=true;
		}
		i++;
	}
	if(bln_item_check==false)
	{
		alert("Please tick an item that you wish to cancel.");
		return false;
	}else{
		return true;
	}
}

function check_return_items()
{
	var bln_item_check = false;
	i=0;

	while(document.getElementById('slt_' + i))
	{
		if(document.getElementById('slt_' + i).checked==true)
		{
			bln_item_check=true;
		}
		i++;
	}
	if(bln_item_check==false)
	{
		alert("Please tick an item that you wish to cancel.");
		return false;
	}else{
		return true;
	}
}

function check_reminder_form()
{
	if(document.getElementById('ax_email').value=="")
	{
		alert("Please enter your email address");
		return false;
	}else{
		return true;
	}
}

function check_password_form()
{

var regExPass = /^[a-zA-Z0-9]{6,32}$/;

	if(document.getElementById('ax_pass').value=="")
	{
		alert('Please choose a password');
		document.getElementById('ax_pass').focus();
		return false;
	}else if(document.getElementById('ax_pass').value!=document.getElementById('ax_pass_comp').value)
	{
		alert('Your password does not match with the confirmation - please check and try again');
		document.getElementById('ax_pass').focus();
		return false;
	}else if((document.getElementById('ax_pass').value).length < 6)
	{
		alert('Your password must be 6 characters or greater');
		document.getElementById('ax_pass').focus();
		return false;
	}else if(!regExPass.test(document.getElementById('ax_pass').value))
	{
		alert('Your pasword must be between 6 and 32 characters in length and may contain only letters and numbers');
		document.getElementById('ax_pass').focus();
		return false;	
	}else{
		return true;
	}	
}

function check_help_form()
{
var	regExEmail = /^[\.\wæøå-]+@([a-zA-Zæøå0-9]+([\.-]{0,1}[a-zA-Zæøå0-9]+|[a-zA-Zæøå0-9]?))+\.[a-zA-Z]{2,6}$/;
			
	if(document.getElementById('contact_name').value=="")
	{
		alert("Please enter your name");
		document.getElementById('contact_name').focus();
		return false;
	}else if(!regExEmail.test(document.getElementById('contact_email').value))
	{
		alert("Please enter a valid email address");
		document.getElementById('contact_email').focus();		
		return false;
	}else if(document.getElementById('contact_enquiry').value=="")
	{
		alert("Please enter your enquiry");
		document.getElementById('contact_enquiry').focus();		
		return false;
	}else{
		return true;
	}
}

function check_newsletter_form()
{
var	regExEmail = /^[\.\wæøå-]+@([a-zA-Zæøå0-9]+([\.-]{0,1}[a-zA-Zæøå0-9]+|[a-zA-Zæøå0-9]?))+\.[a-zA-Z]{2,6}$/;

	if(document.getElementById('email_addr').value=="")
	{
		alert("Please enter your email address");
		document.getElementById('email_addr').focus();
		return false;
	}else if(!regExEmail.test(document.getElementById('email_addr').value))
	{
		alert("Please enter a valid email address");
		document.getElementById('email_addr').focus();
		return false;
	}else{
		return true;
	}
		
}

function check_combine_orders_form()
{
	var bln_item_check = false;
	var checked_items = 0;
	var i = 0;
	var string_orders;

	while(document.getElementById('cmb_' + i))
	{
		if(document.getElementById('cmb_' + i).checked==true)
		{
			checked_items++;
			checked_items > 1 ? string_orders += ", " + document.getElementById('cmb_' + i).value : string_orders = document.getElementById('cmb_' + i).value; 
		}
		i++;
	}
	if(checked_items>1)
	{
		bln_item_check=true;
	}
	if(bln_item_check==false)
	{
		alert("Please tick at least two or more orders you wish to combine.");
		return false;
	}else{
		if(window.confirm("Are you sure you wish to combine orders " + string_orders + " ?"))
		{
			return true;
		}else{
			return false;
		}
	}	
}

function img_fx1_on(img_id)
{
	document.getElementById(img_id).style.position='relative';
	document.getElementById(img_id).style.top='1px';
	document.getElementById(img_id).style.left='1px';
}

function img_fx1_out(img_id)
{
	document.getElementById(img_id).style.top='0px';
	document.getElementById(img_id).style.left='0px';
}

function img_fx2_on(img_id)
{
	document.getElementById(img_id).style.position='relative';
	document.getElementById(img_id).style.top='1px';
}

function img_fx2_out(img_id)
{
	document.getElementById(img_id).style.top='0px';
}

function img_fx3_on(img_id)
{
	document.getElementById(img_id).style.position='relative';
	document.getElementById(img_id).style.left='1px';
}

function img_fx3_out(img_id)
{
	document.getElementById(img_id).style.left='0px';
}

function img_rotate(ary_images)
{
	var timeout = 5000; //timeout in ms
	var use_ie_effects = 1;
	var position = 0;
	
	if(document.getElementById('img_container').filters && use_ie_effects)
	{
		//set up internal divs

		while(ary_images[position])
		{
			if(position==0)
			{
				document.getElementById('img_container').innerHTML='<div align="center" id="image_int_' + position + '" style="visibility:visible;position:absolute;left:0px;top:0px;"><table width="100%" height="100%" align="center" cellspacing="0" cellpadding="0"><tr"><td align="center"><a href="' + ary_images[position]['image_href'] + '" class="gen"><img src="' + ary_images[position]['image_src'] + '" border=0 id="image_view_' + position + '"></a></td></tr></table></div>';
			}else{
				document.getElementById('img_container').innerHTML+='<div align="center" id="image_int_' + position + '" style="visibility:hidden;position:absolute;left:0px;top:0px;"><table width="100%" height="100%" align="center" cellspacing="0" cellpadding="0"><tr><td align="center"><a href="' + ary_images[position]['image_href'] + '" class="gen"><img src="' + ary_images[position]['image_src'] + '" border=0 id="image_view_' + position + '"></a></td></tr></table></div>';
			}

			if(parseInt(document.getElementById('image_view_' + position).height)>30)
			{
				if(document.getElementById('image_view_' + position).height > parseInt(document.getElementById('img_container').style.height))
				{
					document.getElementById('img_container').style.height = document.getElementById('image_view_' + position).height;
				}
				document.getElementById('image_view_' + position).vspace = ((parseInt(document.getElementById('img_container').style.height) - document.getElementById('image_view_' + position).height)/2);
				image_done[position] = true;
			}else{
				document.getElementById('image_view_' + position).vspace = 2;
				image_done[position] = false;
			}
			position++;
		}

		rotate_images_ie(ary_images,(ary_images.length-1),timeout);
		
	}else{
		while(ary_images[position])
		{
			if(position==0)
			{
				document.getElementById('img_container').innerHTML='<div align="center" id="image_int_' + position + '" style="visibility:visible;position:absolute;left:0px;top:0px;"><table width="100%" height="100%" align="center" cellspacing="0" cellpadding="0"><tr"><td align="center"><a href="' + ary_images[position]['image_href'] + '" class="gen"><img src="' + ary_images[position]['image_src'] + '" border=0 id="image_view_' + position + '"></a></td></tr></table></div>';
			}else{
				document.getElementById('img_container').innerHTML+='<div align="center" id="image_int_' + position + '" style="visibility:hidden;position:absolute;left:0px;top:0px;"><table width="100%" height="100%" align="center" cellspacing="0" cellpadding="0"><tr><td align="center"><a href="' + ary_images[position]['image_href'] + '" class="gen"><img src="' + ary_images[position]['image_src'] + '" border=0 id="image_view_' + position + '"></a></td></tr></table></div>';
			}

			if(parseInt(document.getElementById('image_view_' + position).height)>30)
			{
				if(document.getElementById('image_view_' + position).height > parseInt(document.getElementById('img_container').style.height))
				{
					document.getElementById('img_container').style.height = document.getElementById('image_view_' + position).height;
				}
				document.getElementById('image_view_' + position).vspace = ((parseInt(document.getElementById('img_container').style.height) - document.getElementById('image_view_' + position).height)/2);
				image_done[position] = true;
			}else{
				document.getElementById('image_view_' + position).vspace = 2;
				image_done[position] = false;
			}
			position++;
		}
		
		rotate_images_dom(ary_images,(ary_images.length-1),timeout);	
		
	}
	
}

function rotate_images_ie(ary_images,position,timeout)
{
	if(!ary_images[position])
	{
		position=0;
	}
	
	document.getElementById('img_container').filters[0].Apply();
		if(!document.getElementById('image_int_' + (position + 1)))
		{
			document.getElementById('image_int_' + position).style.visibility = "hidden";
			position=0;
			document.getElementById('image_int_' + position).style.visibility = "visible";				
			document.getElementById('image_href').href = ary_images[position]['image_href'];
		}else{
			document.getElementById('image_int_' + position).style.visibility = "hidden";			
			document.getElementById('image_int_' + (position + 1)).style.visibility = "visible";
			document.getElementById('image_href').href = ary_images[(position + 1)]['image_href'];
		position++;
		}

		if(!image_done[position])
		{
			if(parseInt(document.getElementById('image_view_' + position).height)>30)
			{
				if(document.getElementById('image_view_' + position).height > parseInt(document.getElementById('img_container').style.height))
				{
					document.getElementById('img_container').style.height = document.getElementById('image_view_' + position).height;
				}			
				document.getElementById('image_view_' + position).vspace = ((parseInt(document.getElementById('img_container').style.height) - document.getElementById('image_view_' + position).height)/2);
				image_done[position] = true;
			}else{
				document.getElementById('image_view_' + position).vspace = 2;
			}
		}
	
	document.getElementById('img_container').filters[0].Play();


	setTimeout("rotate_images_ie(ary_images," + position + "," + timeout + ")",timeout);
}

function rotate_images_dom(ary_images,position,timeout)
{
	if(!ary_images[position])
	{
		position=0;
	}

		if(!document.getElementById('image_int_' + (position + 1)))
		{
			fade_out_dom('image_int_' + position, 100);
			position=0;
			
			image = document.getElementById('image_int_' + position);
			set_dom_opacity(image, 0);
			fade_in_dom('image_int_' + position,0);	

			document.getElementById('image_href').href = ary_images[position]['image_href'];

		}else{
			
			fade_out_dom('image_int_' + position, 100);

			image = document.getElementById('image_int_' + (position + 1));
			set_dom_opacity(image, 0);
			fade_in_dom('image_int_' + (position + 1),0);
			
			document.getElementById('image_href').href = ary_images[(position + 1)]['image_href'];
			position++;
			
		}
	
	if(!image_done[position])
	{
		if(parseInt(document.getElementById('image_view_' + position).height)>30)
		{
			if(document.getElementById('image_view_' + position).height > parseInt(document.getElementById('img_container').style.height))
			{
				document.getElementById('img_container').style.height = document.getElementById('image_view_' + position).height;
			}			
			document.getElementById('image_view_' + position).vspace = ((parseInt(document.getElementById('img_container').style.height) - document.getElementById('image_view_' + position).height)/2);
			image_done[position] = true;
		}else{
			document.getElementById('image_view_' + position).vspace = 2;
		}
	}
		
	setTimeout("rotate_images_dom(ary_images," + position + "," + timeout + ")",timeout);
}

function set_dom_opacity(obj, opacity) 
{
	opacity = (opacity == 100)?99.999:opacity;
  
  // IE/Win
	obj.style.filter = "alpha(opacity:"+opacity+")";
  
  // Safari<1.2, Konqueror
	obj.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
	obj.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
	obj.style.opacity = opacity/100;
}

function fade_in_dom(objId,opacity) 
{
	if (document.getElementById) 
	{
		document.getElementById(objId).style.visibility=="hidden" ? document.getElementById(objId).style.visibility="visible" : 1==1;
		
		obj = document.getElementById(objId);
		if (opacity <= 100) 
		{
			set_dom_opacity(obj, opacity);
			opacity += 10;
			window.setTimeout("fade_in_dom('"+objId+"',"+opacity+")", 40);
		}
	}
}

function fade_out_dom(objId,opacity)
{
	
	if (document.getElementById) 
	{
		obj = document.getElementById(objId);
		if (opacity > -1) 
		{
			set_dom_opacity(obj, opacity);
			opacity -= 10;
			window.setTimeout("fade_out_dom('"+objId+"',"+opacity+")", 40);
		}else{
			document.getElementById(objId).style.visibility = "hidden";
		}
	}
}

function h_t10(objId,objIdh,hexColour)
{
	var object_cell = document.getElementById(objId);
	var object_link = document.getElementById(objIdh);
	object_cell.style.background = 'url(' + doc_protocol + site_url + '/gfx/tdh.jpg)';
	object_link.style.color=hexColour;
}

function s_t10(objId,objIdh,type,hexColour)
{
	var object_style = document.getElementById(objId);
	var object_link = document.getElementById(objIdh);
	if(type=='a')
	{
		object_style.style.background = 'url(' + doc_protocol + site_url + '/gfx/tda.gif)';
	}else{
		object_style.style.background = 'url(' + doc_protocol + site_url + '/gfx/tdb.gif)';
	}
	object_link.style.color=hexColour;
}

function preload_image(image)
{
	var array_item;
	
	if (document.images) 
	{
		array_item = image_preload.length
		image_preload[array_item] = new Image();
		image_preload[array_item].src = doc_protocol + site_url + '/gfx/' + image;
	}
}

function preload_simage(image)
{
	var array_item;
	
	if (document.images) 
	{
		array_item = image_preload.length
		image_preload[array_item] = new Image();
		image_preload[array_item].src = doc_protocol + site_url + '/gfx/' + image;
	}
}

function build_search_query()
{

	var cookie_start = document.cookie.indexOf('XTS_search=');
	var cookie_end = cookie_start;
	//var cTemp;
	
	while (document.cookie.charAt(cookie_end)!=";" && cookie_end<=document.cookie.length)
	{
		cookie_end++;
	}

	cTemp = document.cookie.substring(cookie_start, cookie_end)	
	cTemp = unescape(cTemp);
	cTemp = cTemp.substring(11,cTemp.length);
	cTemp = cTemp.split('","');
	for(var i=0;i<cTemp.length;i++)
	{
		cTemp[i] = cTemp[i].replace(/%91/g, "\'");
		cTemp[i] = cTemp[i].replace(/%5C/g, "");		
		cTemp[i] = cTemp[i].replace(/\+/gi," ");
		cTemp[i] = cTemp[i].replace(/\\/gi,"");		
		cTemp[i] = unescape(cTemp[i]);

	}
	return(cTemp);
}

/*auto suggest*/
function AutoSuggest(elem, suggestions, div_max_height, iframe_wrka)
{

	//The 'me' variable allow you to access the AutoSuggest object
	//from the elem's event handlers defined below.
	var me = this;

	//A reference to the element we're binding the list to.
	this.elem = elem;

	this.suggestions = suggestions;

	//Arrow to store a subset of eligible suggestions that match the user's input
	this.eligible = new Array();

	//The text input by the user.
	this.inputText = null;

	//A pointer to the index of the highlighted eligible item. -1 means nothing highlighted.
	this.highlighted = -1;

	//A div to use to create the dropdown.
	this.div = document.getElementById("autosuggest");


	//Do you want to remember what keycode means what? Me neither.
	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var elm_height = 0;
	var max_line_length = 15;

	//The browsers' own autocomplete feature can be problematic, since it will 
	//be making suggestions from the users' past input.
	//Setting this attribute should turn it off.
	elem.setAttribute("autocomplete","off");

	//We need to be able to reference the elem by id. If it doesn't have an id, set one.
	if(!elem.id)
	{
		var id = "autosuggest" + idCounter;
		idCounter++;

		elem.id = id;
	}


	/********************************************************
	onkeydown event handler for the input elem.
	Tab key = use the highlighted suggestion, if there is one.
	Esc key = get rid of the autosuggest dropdown
	Up/down arrows = Move the highlight up and down in the suggestions.
	********************************************************/
	elem.onkeydown = function(ev)
	{

		var key = me.getKeyCode(ev);

		switch(key)
		{
			case TAB:
			me.useSuggestion();
			break;

			case ESC:
			me.hideDiv();
			break;

			case KEYUP:
			if (me.highlighted > 0)
			{
				me.highlighted--;
			}
			me.changeHighlight(key);
			break;

			case KEYDN:
			if (me.highlighted < (me.eligible.length - 1))
			{
				me.highlighted++;
			}
			me.changeHighlight(key);
			break;
		}
	};

	/********************************************************
	onkeyup handler for the elem
	If the text is of sufficient length, and has been changed, 
	then display a list of eligible suggestions.
	********************************************************/
	elem.onkeyup = function(ev) 
	{
		var key = me.getKeyCode(ev);
		switch(key)
		{
		//The control keys were already handled by onkeydown, so do nothing.
		case TAB:
		case ESC:
		case KEYUP:
		case KEYDN:
			return;
		default:

			if (this.value != me.inputText && this.value.length > 0)
			{
				me.inputText = this.value;
				me.getEligible();
				if(me.eligible.length!=0)
				{
					me.createDiv();
					me.positionDiv();
					me.showDiv();
				}else{
					me.hideDiv();
				}
			}
			else
			{
				me.hideDiv();
			}
		}
	};


	/********************************************************
	Insert the highlighted suggestion into the input box, and 
	remove the suggestion dropdown.
	********************************************************/
	this.useSuggestion = function()
	{
		if (this.highlighted > -1)
		{
			this.elem.value = this.eligible[this.highlighted];
			this.hideDiv();
			//It's impossible to cancel the Tab key's default behavior. 
			//So this undoes it by moving the focus back to our field right after
			//the event completes.
			setTimeout("document.getElementById('" + this.elem.id + "').focus()",0);
		}
	};

	/********************************************************
	Display the dropdown. Pretty straightforward.
	********************************************************/
	this.showDiv = function()
	{
		this.div.style.display = 'block';
	};

	/********************************************************
	Hide the dropdown and clear any highlight.
	********************************************************/
	this.hideDiv = function()
	{
		if(iframe_wrka)
		{
			document.getElementById(iframe_wrka).style.display='none';	
		}
		this.div.style.display = 'none';
		this.highlighted = -1;
	};

	/********************************************************
	Modify the HTML in the dropdown to move the highlight.
	********************************************************/
	this.changeHighlight = function()
	{
		var lis = this.div.getElementsByTagName('LI');
		for (i in lis)
		{
			var li = lis[i];

			if (this.highlighted == i)
			{
				li.className = "selected";
			}
			else
			{
				li.className = "";
			}
		}
	};

	/********************************************************
	Position the dropdown div below the input text field.
	********************************************************/
	this.positionDiv = function()
	{
		var el = this.elem;
		var x = 0;
		var y = el.offsetHeight;
	
		//Walk up the DOM and add up all of the offset positions.
		while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
		{
			x += el.offsetLeft;
			y += el.offsetTop;
			el = el.offsetParent;
		}

		x += el.offsetLeft;
		y += el.offsetTop;

		this.div.style.left = x + 'px';
		this.div.style.top = y + 'px';
	};

	/********************************************************
	Build the HTML for the dropdown div
	********************************************************/
	this.createDiv = function()
	{
		var ul = document.createElement('ul');
	
		//Create an array of LI's for the words.
		for (i in this.eligible)
		{
			var word = this.eligible[i];
	
			var li = document.createElement('li');
			var a = document.createElement('a');
			a.href="javascript:false";
			a.innerHTML = word;
			li.appendChild(a);
	
			if (me.highlighted == i)
			{
				li.className = "selected";
			}
	
			ul.appendChild(li);
		}
	
		this.div.replaceChild(ul,this.div.childNodes[0]);
	

		/********************************************************
		mouseover handler for the dropdown ul
		move the highlighted suggestion with the mouse
		********************************************************/
		ul.onmouseover = function(ev)
		{
			//Walk up from target until you find the LI.
			var target = me.getEventSource(ev);
			while (target.parentNode && target.tagName.toUpperCase() != 'LI')
			{
				target = target.parentNode;
			}
		
			var lis = me.div.getElementsByTagName('LI');
			
	
			for (i in lis)
			{
				var li = lis[i];
				if(li == target)
				{
					me.highlighted = i;
					break;
				}
			}
			me.changeHighlight();
		};

		/********************************************************
		click handler for the dropdown ul
		insert the clicked suggestion into the input
		********************************************************/
		ul.onclick = function(ev)
		{
			me.useSuggestion();
			me.hideDiv();
			me.cancelEvent(ev);
			return false;
		};
	
		this.div.className="suggestion_list";
		this.div.style.position = 'absolute';

	};

	/********************************************************
	determine which of the suggestions matches the input
	********************************************************/
	this.getEligible = function()
	{
		elm_height = 0;
		this.eligible = new Array();
		for (i in this.suggestions) 
		{
			var suggestion = this.suggestions[i];
			
			if(suggestion.toLowerCase().indexOf(this.inputText.toLowerCase()) == "0")
			{
				this.eligible[this.eligible.length]=suggestion;
				if(suggestion.length>max_line_length)
				{
					elm_height = elm_height + (10 * Math.round(suggestion.length / max_line_length));
				}else{
					elm_height = elm_height + 10;
				}
			}
		}
		if(elm_height)
		{
			if(div_max_height)
			{
				if(elm_height>div_max_height)
				{
					document.getElementById(iframe_wrka).style.display='inline';	
				}else{
					document.getElementById(iframe_wrka).style.display='none';						
				}
			}
		}
	};

	/********************************************************
	Helper function to determine the keycode pressed in a 
	browser-independent manner.
	********************************************************/
	this.getKeyCode = function(ev)
	{
		if(ev)			//Moz
		{
			return ev.keyCode;
		}
		if(window.event)	//IE
		{
			return window.event.keyCode;
		}
	};

	/********************************************************
	Helper function to determine the event source element in a 
	browser-independent manner.
	********************************************************/
	this.getEventSource = function(ev)
	{
		if(ev)			//Moz
		{
			return ev.target;
		}
	
		if(window.event)	//IE
		{
			return window.event.srcElement;
		}
	};

	/********************************************************
	Helper function to cancel an event in a 
	browser-independent manner.
	(Returning false helps too).
	********************************************************/
	this.cancelEvent = function(ev)
	{
		if(ev)			//Moz
		{
			ev.preventDefault();
			ev.stopPropagation();
		}
		if(window.event)	//IE
		{
			window.event.returnValue = false;
		}
	}
}

//counter to help create unique ID's
var idCounter = 0;
/*//auto suggest*/