function add_row(ele,table){
	ele=obj(ele);
	table=obj(table);
	
	var ch=ele.cloneNode(true);
	if(ch.style.display=='none'){
		ch.style.display='block';
	}
	ch.id='';
	ch.className='';
	var tb=document.createElement('tbody');
	tb.appendChild(ch);
	table.appendChild(tb);
}

//returns an element given by id or id if passed an element
function obj(id){
	var t=typeof id;
	if(t.toLowerCase()=='string' && document.getElementById(id))
		return document.getElementById(id);
	return id;
}

function getLabel(ele){
//	alert(ele.name+"\n"+ele.parentNode);
	if(ele.parentNode.getElementsByTagName('label').length>0)
		return ele.parentNode.getElementsByTagName('label')[0];
	else{
		lbl=ele.form.getElementsByTagName('label');
		for(var i in lbl){
			if(lbl[i].htmlFor==ele.id){
				return lbl[i];
			}
		}
	}
	return false;
}

function isRequired(ele,key){
	if(!key)
		key='required';
		
	if(ele && ele.tagName){
		if(ele.tagName.toLowerCase()=='input' && ele.alt==key)
			return true;
		else if(ele.tagName.toLowerCase()=='select' && ele.title==key)
			return true;
	}
	return false;
}

function contact_form_submit(form){
	var err=[];
	form=obj(form);
/*	if(form.elements.length<=0 && document.getElementById(form).elements.length>0){
		form=document.getElementById(form);
	}*/
	for(var i=0; i<form.elements.length; i++){
		var ele=form.elements[i];
//		alert(ele.id+" | "+ele.name+" | "+ele.alt+" | "+err.value+" | "+err.length);
//		if(((ele.alt && ele.alt=='required') || (ele.title && ele.title=='required')) && (ele.value && (trim(ele.value)=='' || typeof(ele.value)=='undefined'))){
		if(isRequired(ele)){
//		alert(ele.id+" | "+ele.name+" | "+ele.alt+" | "+err.value+" | "+err.length);
			var lbl=getLabel(ele);
			if(lbl!==false){
				var lbl_text;
				if(lbl.title!=''){
					lbl_text=lbl.title;
				}else{
					lbl_text=lbl.childNodes[0].nodeValue.toString();
					lbl_text=lbl_text.substring(0,lbl_text.length-1);
				}
	/*			if(ele.parentNode.getElementsByTagName('label').length>0)
					lbl=ele.parentNode.getElementsByTagName('label')[0].childNodes[0].nodeValue.toString();
				else{
					lbl=ele.form.getElementsByTagName('label');
					for(var i in lbl){
						if(lbl[i].htmlFor==ele.id){
							lbl=(lbl[i].title!='' ? lbl[i].title : lbl[i].childNodes[0].nodeValue.toString().substring(0,lbl[i].childNodes[0].nodeValue.toString().length-1));
							break;
						}
					}
				}*/
				if(lbl.className!='required' && trim(ele.value)==''){
					lbl.className='required';
					err.push(lbl_text);
				}else if(trim(ele.value)!=''){
					lbl.className='';
				}
			}else{
				err.push(ele.name);
			}
		}
	}
	if(err.length>0){
		alert("The following fields are required:\n\n"+implode("\n",err)+"\n\nPlease correct these errors and try submitting again.");
		return false;
	}
	return true;
}

function in_array(needle, haystack, argStrict){
	//argStrict ~ strict comparison between elements
 
    var key = '', strict = !!argStrict;
 
    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }
 
    return false;
}

function implode(glue, pieces){
	return ((pieces instanceof Array) ? pieces.join(glue) : pieces);
}

function trim(s){
	var l=0; var r=s.length -1;
	while(l < s.length && s[l] == ' ')
	{	l++; }
	while(r > l && s[r] == ' ')
	{	r-=1;	}
	return s.substring(l, r+1);
}
