var agt=navigator.userAgent.toLowerCase();
var is_safari = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1));

function grabEnter(buttonToClick,event)
{
	var keynum=(window.event?event.keyCode:event.which);
	if(!keynum){keynum=(window.event?window.event.keyCode:window.event.which);}
	
	if(keynum==13 && buttonToClick)
	{
		if(is_safari){return false;}
		var b=$(buttonToClick); if(!b){return true;}
		if(b.click){b.click(); return false;}
		if(b.href){eval(b.href.substring(11)); return false;}
	}
	return true;
}

function limitCharacters()
{
	var a=document.getElementsByTagName("textarea");
	for(var i=0; i<a.length; i++)
	{
		if(a[i].id && a[i].className && a[i].className.match("limit2000")!=null )
		{
			var m=document.createElement("div");
			m.className="limit2000Warning";
			m.id=a[i].id+"m";
			m.innerHTML="Maximum of 2000 characters.<br/>You have entered 0 characters.";
			a[i].parentNode.appendChild(m);

			if(a[i].id.indexOf("_")>0)
			{		
				//find last underscore in id
				var idChunk, list=Array(), btns=document.getElementsByTagName("input");
				for(var j=a[i].id.length; j>0; j--){ if(a[i].id[j]=="_"){idChunk=a[i].id.substring(0,j+1); break;} }
				for(var k in btns){var e=btns[k]; if(e.type=="submit" && e.id.match("^"+idChunk)!=null){list[list.length]=e.id;}}
				a[i].buttons=list;
			}
		
			var f=function(){
				var c=this.value.length,t="Maximum of 2000 characters.<br/>";
				if(c>2000){t+="<span class='warn'>"}
				t+="You have entered "+c+" characters.";
				if(c>2000){t+=" Please shorten your entry.</span>"}
				$(this.id+"m").innerHTML=t;
				if(this.buttons){for(var idx in this.buttons){var e=$(this.buttons[idx]); if(e){e.disabled=(c>2000);}}}
			};
			a[i].onchange=f;
			a[i].onkeyup=f;
			a[i].onkeydown=f;
			a[i].onclick=f;
		}
	}
}
if(limitCharacters){limitCharacters()}

/*default values*/
function loadDefaultValues()
{
	var a=document.getElementsByTagName("input");
	for(var i=0; i<a.length; i++)
	{
		if(a[i].type=="text" && a[i].id && a[i].className && a[i].className.match("default")!=null )
		{
			a[i].defaultValue=a[i].value;
			var f=function(){setDefault(this,this.defaultValue)};
			a[i].onblur=f;
			a[i].onfocus=f;
		}
	}
}
if(loadDefaultValues){loadDefaultValues();}

function setDefault(element,defaultValue)
{
	if(!element||element.value==null){return;}
	if(element.value==defaultValue){element.value="";}
	else if(element.value==""){element.value=defaultValue;}
}

/*util*/
function $() {var elements=new Array(); for(var i=0;i<arguments.length;i++){var element=arguments[i]; if(typeof element=='string'){element=document.getElementById(element);} if(arguments.length==1){return element;} elements.push(element);} return elements;}
