function addOptions(obj, opt_array){
	if(opt_array==null)return;
	var l=obj.options.length;
	if(arguments[2]==1){
		for(var i=0; i<opt_array.length; i+=2)obj.options[l+parseInt(i/2)]=new Option(opt_array[i+1], decodeURI(opt_array[i]));
	}
	else{
		for(var i=0; i<opt_array.length; i+=2)obj.options[l+parseInt(i/2)]=new Option(opt_array[i+1], opt_array[i]);
	}
}

function fillcheck(f,prefix){
	var start='Please specify ';
	if(arguments[2])start=arguments[2];

	if(f && prefix){
		e=f.elements;
		for(var i=0;i<e.length;i++){
			if(e[i].type=='text' || e[i].type=='textarea' || e[i].type=='password' || e[i].type=='hidden'){
				if(!e[i].value && e[i].name){
					var te=document.getElementById(prefix+e[i].name);
					if(te && te.innerText){
						alert(start+te.innerText);
						return 0;
					}
				}
			}
		}
	}
	return 1;
}

function FillChecker(){

	this.pretext="Please specify ";

	this.checkfromspan=function(name,form){
		var e=document.getElementsByName(name);
		for(var i=0;i<e.length;i++){
			var a=e[i].getAttribute('chkfield');
			var l=e[i].getAttribute('chklabel');
			if(!l)l=this.fetchlabel(innertext(e[i]));
			if(!(a && form[a]))continue;
			if(form[a].length){
				for(var i2=0; i2<form[a].length; i2++) {
					if(form[a][i2].checked) break;
				}
				if(!(i2>=form[a].length))return this.unpass(l);
			}
			else{
				if(!l)l=form[a].getAttribute('chklabel');
				if(!form[a].value)return this.unpass(l);
			}
		}
		return 1;
	}
	this.checkfromfield=function(objs){
		for(var i=0;i<objs.length;i++){
			if(!this.filled(objs[i])){
				var l=objs[i].getAttribute('chklabel');
				if(!l){
					l=this.gettext(objs[i]);
					if(this.required(l))return this.unpass(this.fetchlabel(l));
				}
				else return this.unpass(l);
			}
		}
		return 1;
	}
	this.unpass=function(str){
		if(!str)return 1;
		alert(this.pretext+str);
		return 0;
	}
	this.filled=function(obj){
		if(obj.tagName=='select' || obj.type=='text' || obj.type=='textarea' || obj.type=='password'){
			return obj.value!='';
		}
		return 1;
	}
	this.gettextnode=function(obj){
		return prevbytag(ancesbytag(obj,'td'),'td');
	}
	this.gettext=function(obj){
		var tn=this.gettextnode(obj);
		if(tn) return innertext(tn);
		return '';
	}
	this.fetchlabel=function(str){
		if(!str)return '';
		str=str.replace(/^\s*/,'');
		return str.replace(/[*:]/g,'');
	}
	this.required=function(str){
		if(!str)return 0;
		return str.match(/^\s*\*/);
	}


}

function validateemail(email){
	email=email.replace(/(^)(\s*)/g, '$1');
	email=email.replace(/(\s*)($)/g, '$2');
	var i;
	for(i=0; i<email.length; i++){
		if(email.charCodeAt(i)>127) return '';
	}
	if( email.match(/^(.+)@(.+)\.([^.\s]{2,})$/) ) return email;
	return '';
}

function validatename(name){
	var reg=/^[a-zA-Z]\w{2,19}$/;
	var r=name && name.match(reg);
	return r;
}

function setradio(r, v){
	if(r==null || !(r.length>0)) return;
	for(var i=0; i<r.length; i++){
		if(r[i].value==v){
			r[i].checked=1;
			return;
		}
	}
}


function getradiovalue(r){
	if(r==null || !(r.length>0)) return;
	for(var i=0; i<r.length; i++){
		if(r[i].checked){
			return r[i].value;
		}
	}
	return '';
}


function checkformbox(formname, fields, values, separator){
	var a=fields.split(separator);
	var b=values.split(separator);
	var f,e;
	for(var i=0; i<a.length; i++){

		if(!(f=document[formname][a[i]])){
			if(f=document[formname][a[i]+'[]']) checkformbox(formname,a[i]+'[]',b[i],separator);
			continue;
		}
		if(a[i].substring(a[i].length-2, a[i].length)=='[]'){
			if(e=document.getElementsByName(a[i])){
				var v=b[i].split(',');
				var vv=new Object();
				for(var i2=0; i2<v.length; i2++){
					vv[v[i2]]=1;
				}
				for(var i2=0; i2<e.length; i2++){
					if(e[i2].value && vv[e[i2].value])e[i2].checked=1;
				}
			}
			continue;
		}
		if(f.options){
			setSelect(f, b[i]);
		}
		if(f.value){
			if(f.value==b[i]) f.checked=1;
		}
		else setradio(f, b[i]);
	}
}

function setchkbox(id){
	var e=document.getElementsByName(id);
	if(!e) return;
	for(var i=0; i<e.length; i++){
		if(arguments[1]!==null) e[i].checked=arguments[1];
		else e[i].checked=!e[i].checked;
	}
}

function joinchkbox(id){
	var a=[];
	var e=document.getElementsByName(id);
	var l=arguments[1]===null ? ',' : arguments[1];
	if(!e)return '';
	for(var i=0; i<e.length; i++){
		if(e[i].checked)a.push(e[i].value);
	}
	return a.join(l);
}

function setSelect(s, v){
	if(!s || !s.options) return;
	for(var i=0; i<s.options.length; i++){
		if(s.options[i].value==v){
			s.selectedIndex=i;
			return 1;
		}
	}
	return;
	if(arguments[2]!==null && arguments[2]!=''){
		s.options[s.options.length]=new Option(arguments[2], v);
		s.selectedIndex=s.options.length-1;
	}
}
function refreshSelect(s, v, t){
	if(v==null)return;
	if(s.value!=v) {
		s.options[s.options.length]=new Option(t, v);
		s.selectedIndex=s.options.length-1;
	}
	else if(s.options[s.selectedIndex].text!=t) s.options[s.selectedIndex].text=t;
}

function chksubmit(f){
	var fds, alt;
	if(arguments[1]!=null && arguments[1]!=''){
		if(arguments[2]==null || arguments[2]=='') arguments[2]=arguments[1];
		fds=arguments[1].split(',');
		alt=arguments[2].split(',');
		for(var i=0; i<fds.length; i++){
			p1=eval('f.'+fds[i]);
			if(p1.value==''){
				alert('Please specify '+alt[i]);
				return;
			}
		}
	}
	if(arguments[3]!=null && arguments[3]!=''){
		esc=arguments[3].split(',');
		for(var i=0; i<esc.length; i++){
			if(f[esc[i]] && f[esc[i]].value) f[esc[i]].value=htmlescape(f[esc[i]].value);
		}

	}
	f.submit();
	return true;
}

function array2chkobj(a){
	var o=new Object(), i;
	for(i=0; i<a.length; i++) if(a[i]!='') o[a[i]]=1;
	return o;
}

function enterkeyed(event){

	return event.keyCode==13;
}

function dosave(par){
	if(!par.form || !par.frame)return;
	var f=par.form;
	var b={};

	if(!(f.id.value>0)){
		f.submitbutton.onclick();
		return;
	}
	b.target=f.target;
	b.redirect=f.redirect.value;
	b.onsuccess=f.onsuccess.value;
	b.nowrapper=f.nowrapper.value;

	f.target=par.frame;
	f.redirect.value='';
	f.onsuccess.value="parent.document.getElementById('"+par.btnid+"').style.backgroundColor='#fff';";

	f.submitbutton.onclick();
	document.getElementById('savebtn').style.backgroundColor='#ccc';
	f.submitbutton.disabled=0;


	f.target=b.target;
	f.redirect.value=b.redirect;
	f.onsuccess.value=b.onsuccess;
	f.nowrapper.value=b.nowrapper;

}

function makeinstsave(par){
	if(!par.frame)par.frame='saveframe';
	if(!par.btnid)par.btnid='savebtn';
	if(!par.btntext)par.btntext='Save';
	document.write("<span style='border:1px solid black;padding:3px 12px;cursor:pointer;' onclick=\"dosave({form:document."+par.formname+",frame:'"+par.frame+"',btnid:'"+par.btnid+"'});\" id='"+par.btnid+"'>"+par.btntext+"</span>");
	document.write("<iframe style='width:0px;height:0px;' name='"+par.frame+"'></iframe>");
}
