/**
 * @short Cehcks if the given field has data, and show a mark on it's label
 */
checkHasData = function(field){
	if ($(field).value==''){
		$(field+'_required').className='error' 
		return false
	}
	$(field+'_required').className='hidden' 
	return true;
}

var requiredFieldList=new Array()

/**
 * @short for the given field it marks it as required, and forces has some text before send.
 */
requiredField = function(field){
	label=$(field+"_label")
	var span=''
	if ($(field+'_required'))
		span=$(field+'_required')
	else{
		span=SPAN('*')
		span.id=field+"_required"
	}

	connect($(field),'onkeyup',function(){ checkHasData(field); })

	appendChildNodes(label,span)

	checkHasData(field)

	requiredFieldList.push(field)
}

var requiredEmailList=new Array()

/**
 * @short Given field must be an email address
 */
requiredEmail = function(field,errormsg){
	//requiredField(field)
	connect($(field),'onkeyup',function(){ checkValidEmail(field,errormsg) })
	requiredEmailList.push(field)
}

/**
 * @short Checks all required fields are properly set.
 */
allRequiredFieldsOk = function(){
	ok=true
	// non-empty
	forEach(requiredFieldList,function(field){
		if ($(field).value=='')
			ok=false
	})
	// valie email
	forEach(requiredEmailList,function(field){
		if (!checkValidEmail(field,''))
			ok=false
	})
	return ok
}

/**
 * @short Checks if the email is valid, according to a regex.
 *
 * errormsg is only changed if errormsg param is != ''
 */
checkValidEmail = function(mail_field,errormsg){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var val=$(mail_field).value
	val=val.replace(',',' ')
	val=val.split(' ')
	try{
		for(i=0;i<val.length;i++){
			if (val[i]!=''){
				var valid=filter.test(val[i])
				if (!valid){
					if (errormsg!='')
						$(mail_field+'_alert').innerHTML=errormsg
					return false
				}
			}
		}
	}
	catch(e){
		log(e)
	}
	$(mail_field+'_alert').innerHTML=''
	return true
}

/**
 * @short For the given node and childs, replace id substrings.
 */
replaceIds = function(node, oldid, newid){
	for (var n in node.childNodes){
		var nd=node.childNodes[n]
		var id=typeof(nd.id)
		var name=typeof(nd.name)
		if (id!='undefined' || name!='undefined'){
			replaceIds(nd,oldid,newid);
		}
	}
	if (node.id)
		node.id=node.id.replace(oldid,newid)
	if (node.name)
		node.name=node.name.replace(oldid,newid)
}

