//This function will pre-cache an image
function preCache(image)
	{
	var pic = new Array();
  if (document.images)
		{
		idx = pic.length;
	  pic[idx] = new Image();
	  pic[idx].src = image;
  	}
	}

//change CLASS of an element
function change(id, newClass)
	{
	identity=document.getElementById(id);
	identity.className=newClass;
	}

// Clear element text
function clearText(id, text) 
	{
	var e = document.getElementById(id);
	if (text == e.value) e.value = ""
	if (e.style)
  		{
		e.style.fontStyle = "normal";
		e.style.color = "black";
		}
	}

// Restore element default text
function recallText(id, text)
	{
	var e = document.getElementById(id);
	if(e.value == "") 
		{
		e.value = text;
		}
	if(e.value == text)
		{
		if(e.style) 
			{
			e.style.fontStyle = "italic";
			e.style.color = "black";
			}
		}
	}
	
//Rollover: On
function rollOn(imgName){
  if(document.images){
    document.images[imgName].src="/img/" + imgName + "_on.gif";
  }
}

//Rollover: Off
function rollOff(imgName){
  if (document.images){
    document.images[imgName].src="/img/" + imgName + "_off.gif";
  }
}

function update_prim_options(this_id, new_id, name_lookup_array, is_checked)
	{
	prim_select = document.getElementById (this_id);
	num_options = prim_select.options.length;
	new_name = name_lookup_array[new_id-1];
	if(is_checked)
		{
		//insert
		var new_option = new Option (new_name, new_id);
		for(i=0;i<=num_options;i++)
			{
			if((i == num_options) || ((prim_select.options[i].value != 0) && (new_name <= prim_select.options[i].text)))
				{
				try
					{
					prim_select.add(new_option, prim_select.options[i]); // standards compliant; doesn't work in IE
					break;
					}
				catch(ex)
					{
					prim_select.add(new_option, i); // IE only
					break;
					}
				}
			}
		}
	else
		{
		//remove
		for(i=0;i<num_options;i++)
			{
			if(prim_select.options[i].value == new_id)
				{
				prim_select.remove(i);
				break;
				}
			}
		}
	}

function setMaxLength()
	{
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for(var i=0;i<x.length;i++)
		{
		if(x[i].getAttribute('maxlength'))
			{
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];
			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
			}
		}
	}

function checkMaxLength()
	{
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	var temp_str = this.value;
	
	// Account for IE in windows, which forces all newlines as \r\n
  	if (temp_str.indexOf('\r\n')!=-1)
    	temp_str = temp_str.replace ( /\r\n/g, "X" ); // replace all instances of \r\n with another character to get an accurate count
  
	var currentLength = temp_str.length;
	
	if(currentLength > maxLength)
		this.relatedElement.className = 'textarea_exceeded';
	else
		this.relatedElement.className = '';
	
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
	}

function handle_country (select_object)
	{
	var selected_code = select_object.options.item(select_object.selectedIndex).value;
	var city_id = "city";
	var zip_code_id = "zip_code";
	var main_address_id = "main_address";
	if(selected_code == "")
		{
		//hide & wipe city
		document.getElementById(city_id).style.display = "none";
		document.getElementById(city_id+"_input").value = "";

		//hide & wipe zip
		document.getElementById(zip_code_id).style.display = "none";
		document.getElementById(zip_code_id+"_input").value = "";

		//hide main address
		document.getElementById(main_address_id).style.display = "none";
		}
	else if (selected_code == "US")
		{
		//hide & wipe city
		document.getElementById(city_id).style.display = "none";
		document.getElementById(city_id+"_input").value = "";

		//show zip
		document.getElementById(zip_code_id).style.display = "block";

		//show main address
		document.getElementById(main_address_id).style.display = "block";
		}
	else
		{
		//hide & wipe zip
		document.getElementById(zip_code_id).style.display = "none";
		document.getElementById(zip_code_id+"_input").value = "";

		//show city
		document.getElementById(city_id).style.display = "block";

		//show main address
		document.getElementById(main_address_id).style.display = "block";
		}
	
	document.getElementById(it).style.display = vis;
	}
		
window.onload = setMaxLength;