function SymError()
{
  return true;
}

window.onerror = SymError;

function changeDiv(the_div,the_change)
{
  var the_style = getStyleObject(the_div);
  if (the_style != false)
  {
    the_style.display = the_change;
  }
}

function hideAll()
{
  changeDiv("annual_questions","none");
  changeDiv("previous_questions","none");
}

function getStyleObject(objectId) {
  if (document.getElementById && document.getElementById(objectId)) {
    return document.getElementById(objectId).style;
  } else if (document.all && document.all(objectId)) {
    return document.all(objectId).style;
  } else {
    return false;
  }
}

function getObj(strName)
{
  if (document.getElementById)
  {
    return document.getElementById(strName);
  }
  else if (document.all)
  {
    return document.all[strName];
  }
  else if (document.layers)
  {
    return document.layers[strName];
  } 
  else 
  {
    return null;
  }
}

function postBackHiddenField(sourceFieldID, hiddenFieldID) {
	/*if (hiddenFieldID == FinalSubmit)
	{
		changeDiv(DropDownDiv,'none');
	}*/
    var hiddenField = $get(hiddenFieldID);    
    if (hiddenField) {
    var tb = getObj(sourceFieldID) 
		hiddenField.value = tb.value;					
        __doPostBack(hiddenFieldID,'');
    }
 }

var selected = 0;
var mouseOverTown = false;
var currentMouseOver = '';


function countTowns()
{
	//return getElementsByClassName("TownLI", "li", getObj("TownUL")).length; 
	var spans;
	var count = 0;
	if (document.all) 
	{
		spans = document.all.tags('li');
	}
	else if (document.getElementsByTagName) 
	{
		spans = document.getElementsByTagName('li');
	}
	if (spans) {		
		for(var i=0;i<spans.length;i++)
		{						
			if(spans[i].className == 'TownLIUnSelected' || spans[i].className == 'TownLISelected')
			{
				count++;
			}
		}

		return count;
	}
}

function TownClickedNew()
{
//	alert(currentMouseOver);
	mouseOverTown = false;	
	
//	alert('foo');
//	getObj(TownSearchBox).value = getObj(sourceFieldID).innerText;
	postBackHiddenField(currentMouseOver, FinalSubmit);
	changeDiv(DropDownDiv,'none');
}

function townClicked(sourceFieldID, hiddenFieldID)
{	
//	alert('townClicked');
	mouseOverTown = false;	
	
//	alert('foo');
//	getObj(TownSearchBox).value = getObj(sourceFieldID).innerText;
	postBackHiddenField(sourceFieldID, FinalSubmit);
	changeDiv(DropDownDiv,'none');
	
}

function townMouseOver(fieldID, sourceFieldID, hiddenFieldID)
{	
//	alert('Over');
	mouseOverTown = true;
	currentMouseOver = sourceFieldID;
//	alert(currentMouseOver);
	getObj(fieldID).setAttribute("class", "TownLISelected");	
	getObj(fieldID).setAttribute("className", "TownLISelected");	
}

function townMouseOut(fieldID, sourceFieldID, hiddenFieldID)
{	
	//changeDiv(DropDownDiv,'none');	
	//alert(getObj(sourceFieldID).value);	
	getObj(fieldID).setAttribute("class", "TownLIUnSelected");	
	getObj(fieldID).setAttribute("className", "TownLIUnSelected");
	mouseOverTown = false;
}



function tabOrEnter(sourceFieldID, hiddenFieldID, evt)
{


	if (countTowns() == 1)
	{
		objName = HiddenFieldStringStart +'01'+ HiddenFieldStringEnd;
		postBackHiddenField(objName, FinalSubmit);
		changeDiv(DropDownDiv,'none');
	}
	else
	{
		if (!mouseOverTown)
		{
		
			if(selected == 0)
			{
				objName = hiddenFieldID;
			}
			else if(selected <10)
			{
				objName = HiddenFieldStringStart +'0'+ selected +''+ HiddenFieldStringEnd;
			}
			else
			{
				objName = HiddenFieldStringStart +''+ selected +''+ HiddenFieldStringEnd;
			}
			
			changeDiv(DropDownDiv,'none');
			postBackHiddenField(objName, FinalSubmit);
		}
	}
	
		//getObj(sourceFieldID).value = selec
		//changeDiv(DropDownDiv,'none');
}

function dropDownKeyPress(sourceFieldID, hiddenFieldID, evt)
{	
	evt = (evt) ? evt : ((window.event) ? window.event : "")
    if (evt) {

		var code = evt.keyCode;
//		alert(code);
		switch (code)
		{
			case 13:
				//enter
				tabOrEnter(sourceFieldID, hiddenFieldID, evt);
				break;
			case 40:
				//down
				var count = countTowns();
				if (selected < count)
				{
					selected++;			
				}
				else
				{
					selected = 1;
				}
				setDisplay();
				break;
			case 38:			
				//up
				var count = countTowns();
				if (selected > 1)
				{
					selected--;		
				}
				else
				{
					selected = count;
				}		
				setDisplay();
				break;
			case 9:
				//tab do nothing
				break;
			default:			
				if ((getObj(sourceFieldID).value.length) >= 2)
				{
					postBackHiddenField(sourceFieldID, hiddenFieldID);					
				}
				
				selected = 0;
				setDisplay();
				break;
		}	
		
		
	}
}

function setDisplay()
{
	var objName;
	var i = 0;
	for(i=1;i<=countTowns();i++)
	{
		if(i<10)
		{
			objName = HiddenFieldStringStart +'0'+ i +'_liTown';
		}
		else
		{
			objName = HiddenFieldStringStart +''+ i +'_liTown';
		}

		if (getObj(objName) != null)
		{
			getObj(objName).setAttribute("class", "TownLIUnSelected");	
			getObj(objName).setAttribute("className", "TownLIUnSelected");
		}

	}

	
	if(selected <10)
	{
		objName = HiddenFieldStringStart + '0'+ selected + '_liTown';
	}
	else
	{
		objName = HiddenFieldStringStart + selected + '_liTown';
	}
	
	if (getObj(objName))
	{
		getObj(objName).setAttribute("class", "TownLISelected");
		getObj(objName).setAttribute("className", "TownLISelected");
	}

	changeDiv(DropDownDiv,'block');
	
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;	
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

function setClass(objName, className)
{
	getObj(objName).setAttribute("class", className);	
	getObj(objName).setAttribute("className", className);
}


function FormReplaceInvalidChars(Check, Type)
{

	var disallowed = /[$\\@\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|\<\>\?]/;
    switch(Type) 
    { 
        case "email": 
		{
			disallowed = /[$\\\#%\^\&\*\(\)\[\]\+\_\{\}\`\~\=\|\<\>\?]/;
			break;
		}
        case "default": 
		{
			
			break;
		}
		default:
		{
			break;
		}
	}
	var pass = getObj(Check).value;
	var length = pass.length;
	var currentChar = 0;
	var valid = true;

	while (currentChar < length)
	{
	  	var lchar = pass.charAt(currentChar);		
		if (lchar.search(disallowed) != -1)
		{
			valid = false;		
			break;
		}		
		currentChar+=1;	 
	}
	
	return valid;
}

function FormValueCheck(inputs, outputid)
{

	var arinputs = inputs.split(',');
	var currentInput = 0
	var valid = true;

	while (currentInput < arinputs.length -1)
	{
		if (FormReplaceInvalidChars(arinputs[currentInput], arinputs[currentInput + 1]) != true)
		{
			getObj(outputid).innerHTML = 'There are invalid characters in your text entries';
			valid = false;
			break;
		}
		currentInput = currentInput + 2;
	}	
	return valid;
}


//BANNER ADS
function Banner(refreshTime, width, height, altText, start, random){
	this.objName = "bannerAd" + (Banner.count++);
	eval(this.objName + "=this");
	if (!refreshTime) this.refreshTime = 5000; else this.refreshTime = refreshTime*1000;
	if (!width) this.width = 460; else this.width = width;
	if (!height) this.height = 68; else this.height = height;
	if (random == null) this.random = 1; else this.random = random;
	this.altText = altText;
	this.ads = [];
	if (start) this.currentAd = start-1; else start = null;
	this.mySize = 0;

	this.Ad = function(src, href, target, mouseover) {
		var tempImage = new Image();
		tempImage.src = src;
		this.ads[this.mySize] = new Object();
		var ad = this.ads[this.mySize];
		ad.src = src;
		if (typeof(target) == "undefined" || target == null) ad.target = "_self"; else ad.target = target;
		ad.href = href;
		ad.mouseover = mouseover;
		this.mySize++;
	}

	this.link = function(){
		var	ad = this.ads[this.currentAd];
//		alert(ad.href);
		postBackBannerField(ad.href);
	}

	this.showStatus = function(){
		var ad = this.ads[this.currentAd];
		if (ad.mouseover) status = ad.mouseover;
		else status = ad.href;
	}

	this.randomAd = function(){
		var n;
		do { n = Math.floor(Math.random() * (this.mySize)); } 
		while(n == this.currentAd);
		this.currentAd = n;
	}

	this.output = function(){
		var tempCode = "";
		if (this.mySize > 1){
			if (this.currentAd == null) this.randomAd();
			if (this.currentAd >= this.mySize) this.currentAd = this.mySize - 1;
			tempCode = '<a href="javascript:'+this.objName+'.link();"';
			tempCode += ' onMouseOver="' + this.objName + '.showStatus(); return true"';
			tempCode += ' onMouseOut="status=\'\';return true">';
			tempCode += '<img src="' + this.ads[this.currentAd].src + '" width="' + this.width;
			tempCode += '" name="' + this.objName + 'Img" height="' + this.height + '" ';
			if (this.altText) tempCode += 'alt="'+this.altText + '" ';
			tempCode += 'border="0" /></a>';
			document.write(tempCode);
			this.nextAd();
		} else document.write("Error: two banners must be defined for the script to work.");
	}

	this.newAd = function(){
		if (!this.random){	
			this.currentAd++;
			if (this.currentAd >= this.mySize)
			   this.currentAd = 0;
		}
		else {
			this.randomAd();
		}
		this.nextAd();
	}

	this.nextAd = function(){
		document.images[this.objName+ 'Img'].src = this.ads[this.currentAd].src;
		setTimeout(this.objName+'.newAd()',this.refreshTime)
	}
}
Banner.count = 0;