function addLoadEvent(func){
if(typeof func!='function')return;if(window.calledloadevents)func();else{
var oldloadevents=window.loadevents;if(typeof window.loadevents=='function')window.loadevents=function(){oldloadevents();func();}
else window.loadevents=function(){window.calledloadevents=true;func();}}
}
function initEl(id,func){
var e=gebi(id);if(e&&typeof func=='function')func(e);}
function insertAfter(newEl,targEl){
var parent=targEl.parentNode;if(parent.lastChild==targEl)parent.appendChild(newEl);else parent.insertBefore(newEl,targEl.nextSibling);}
function getForAttrib(label){
var f=label.getAttribute('for');return f?f:label.htmlFor;}
function prepareLabelClickFocus(){
if(!document.getElementsByTagName)return;var l=gebtn('label');for(var i=0;i<l.length;++i){
if(!getForAttrib(l[i]))continue;l[i].onclick=function(){
var id=getForAttrib(this);if(!gebi(id))return false;var el=document.getElementById(id);el.focus();if(el.select)el.select();return true;}}
}
function parseLabelName(label){
var a=label.indexOf('*');var c=label.lastIndexOf(':');return label.substring(a + 1, c);}
function selectDefaultInput(root){
var is=gebtn('input', root);for(var i=0;i<is.length;++i){
if(is[i].className.indexOf('default')!=-1){
is[i].focus();is[i].select();break;}}
}
function initTextFocus(root){
var is=gebtn('input', root);for(var i=0;i<is.length;++i){
if(/^(text|password)$/.test(is[i].type)){
is[i].onfocus=function(){this.style.borderStyle='dotted';}
is[i].onblur=function(){this.style.borderStyle='solid';}}
}
var is=gebtn('textarea', root);for(var i=0;i<is.length;++i){
is[i].onfocus=function(){this.style.borderStyle='dotted';}
is[i].onblur=function(){this.style.borderStyle='solid';}}
}
function findLabelForInput(form, el){
var l=gebtn('label', form);for(var j=0;j<l.length;++j){
if(getForAttrib(l[j])==el.id)return parseLabelName(l[j].lastChild.nodeValue);}
return '';}
function validateForm(form){
if(form.novalidate)return true;for(var i=0;i<form.elements.length;++i){
var el=form.elements[i];if(el.className.indexOf('required')!=-1){
if(!isFilled(el)){
var t=findLabelForInput(form, el);alert('Please fill in the ' + t + ' field.');el.focus();if(el.select)el.select();return false;}}
if(el.className.indexOf('email')!=-1){
if(isFilled(el)&&!isEmail(el)){
var t=findLabelForInput(form, el);alert('The ' + t + ' field must be a valid email address.');el.focus();if(el.select)el.select();return false;}}
}
return true;}
function resetFields(form){
for(var i=0;i<form.elements.length;++i){
var el=form.elements[i];if(el.type=='submit')continue;if(!el.defaultValue)continue;if(el.type=='text')el.onfocus=function(){this.select();}}
}
function prepareFormValidation(){
for(var i=0;i<document.forms.length;++i){
var f=document.forms[i];if(typeof f.onsubmit=='function'){
f.p=f.onsubmit;f.onsubmit=function(){
if(!validateForm(this))return false;return this.p.call(this);}}
else{
f.onsubmit=function(){
return validateForm(this);}}
}}
function isFilled(fld){
return fld.value.length>=1;}
function isEmail(fld){
if(fld.value.indexOf('@')==-1||fld.value.indexOf('.')==-1)return false;if(fld.value.length<5)return false;return/^\s*[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]{2,})+\s*$/.test(fld.value);}
function describeObject(obj, recurse){
var d='';for(var i in obj){
var v='';if(recurse&&typeof obj[i]=='object')v='\n{\n' + describeObject(obj[i])+ '}';else v=obj[i];d+=i + '=(' +(typeof obj[i])+ ')' + v + '\n';}
return d;}
document.infoMsg=null;function showInfoMsg(msg){
var im=document.infoMsg;if(!msg){
if(im)im.style.display='none';return;}
if(!im){
document.infoMsg=im=document.createElement('div');document.getElementsByTagName('body')[0].appendChild(im);var s=document.createElement('span');im.appendChild(s);s.setAttribute('id','infomsg');}
im.firstChild.innerHTML=msg;im.style.display='block';}
function setOpacity(el, valueOutOfTen){
el.style.opacity=valueOutOfTen/10;el.style.filter='alpha(opacity=' +(valueOutOfTen*10)+ ')';}
function gebi(id, root){
if(!document.getElementById)return null;if(!root)root=document;return root.getElementById(id);}
function gebtn(tagName, root){
if(!document.getElementsByTagName)return null;if(!root)root=document;return root.getElementsByTagName(tagName);}
function setInnerById(id, html){
var el=gebi(id);if(el)el.innerHTML=html;}
function getLabelFor(id){
var l=gebtn('label');for(var i=0;i<l.length;++i)if(getForAttrib(l[i])==id)return l[i];return null;}
function addClass(el, className){
var r=new RegExp('(^|)' + className + '(|$)');if(r.test(el.className))return;var n=[ el.className , className ];el.className=n.join(' ');}
function removeClass(el, className){
var p=el.className.split(className);el.className=p.join(' ');}
function disableButtons(form, disabled){
var is=form.getElementsByTagName('input');for(var i=0;i<is.length;++i){
var t=is[i].getAttribute('type').toLowerCase();if(t=='submit'||t=='reset')is[i].disabled=disabled;}}
function busifyForm(form, busy){
var p=typeof form.nonbusyOnSubmit;if(busy){
if(p=='undefined')form.nonbusyOnSubmit=form.onsubmit;form.onsubmit=function(){return false;}}
else if(p!='undefined')form.onsubmit=form.nonbusyOnSubmit;disableButtons(form, busy);}
function getQstrVar(key, query){
if(typeof query=='undefined')query=window.location.search.substring(1);var v=query.split('&');for(var i=0;i<v.length;++i){
var p=v[i].split('=', 2);if(p[0]==key)return p[1];}
return null;}
function getHrefArr(href, pagename){
var r=new Array();href=href.split('?').slice(0, 1).toString();var p=href.split('/').slice();var pi=p.indexOf(pagename);if(pi>=0)for(var i=pi + 1;i<p.length;++i)r.push(unescape(p[i]));return r;}
function getQstrMap(href){
var r=new Array();var q=href.split('?').slice(1).toString();if(q!=''){
var p=q.split('&');for(var i=0;i<p.length;++i){
var a=p[i].split('=', 2);r[a[0]]=unescape(a[1]);}}
return r;}
function getSuccessBox(m){
return '<div id="notification" class="success">SUCCESS<br/>' + m + '</div>';}
function getWarningBox(m){
return '<div id="notification" class="warning">WARNING<br/>' + m + '</div>';}
function getErrorBox(m){
return '<div id="notification" class="error">ERROR<br/>' + m + '</div>';}

