var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

// doCheck
function do_check(frm)
{
	var err = "";
	var field_denied = ['image', 'hidden', 'submit', 'button'];
	Form.getElements($(frm)).each(function(e){
		if(!field_denied.include(e.type))
			err += parse_obj(e);
	});
	
	if(err)
		return show_error('msg_error', err);
	
	Element.hide('msg_error');
	return true;
}

// show_error
function show_error(bloc_message, msg, obj)
{
	Element.update($(bloc_message).firstChild, msg);
	Element.show(bloc_message);
		
	if(window.Modalbox && Modalbox.options.checkJs)
		Modalbox.resizeToContent();
	
	if(obj)
		obj.value = "";
	
	
	return false;
}

// check_obj
function parse_obj(obj)
{
	switch(obj.type)
	{
		case "text" :
		case "select-one" :
		case "textarea" :
		case "password" :
			return check_obj_text(obj);
		break;
		case "checkbox" :
			return check_obj_checkbox(obj);
		break;
		
		default:
			return "";
		break;
		
	}
}


// function check_obj_text
function check_obj_text(obj)
{
	
	// champ obligatoire
	if(!obj.value.length && Element.hasClassName(obj, 'required'))
		return obj_error(obj);
	
		
	// champ avec un check particulié
	if(obj.name.match(/email/) && obj.value.length && !obj.value.match(filter))
		return obj_error(obj);
	
	if(obj.name == "rpwd" && obj.value.length && obj.value != $('pwd').value)
		return obj_error(obj);
	
	if(obj.name == "tel" && obj.value.length && !obj.value.match(/^\+*[\d\-\s]+$/))
		return obj_error(obj);
	
	if(obj.name == "gsm" && obj.value.length && !obj.value.match(/^\+*[\d\-\s]+$/))
		return obj_error(obj);

		
	return obj_error(obj, true);
}

// check_obj_checkbox
function check_obj_checkbox(obj)
{
	var err = ""
	// champ obligatoire <span>*</span>
	if(Element.hasClassName(obj, 'required'))
	{	
		
		// si grouper []
		if(obj.name.match(/\[\]/))
		{
			frm = obj.parentNode;
			elt = frm.getInputs('checkbox', obj.name)
			for(var i=0, status=true, msg=false; i<elt.length; i++)
			{
				// au moins une box est checker
				if(elt[i].checked)
				{
					status = false;
					break;
				}
				
				if(obj == elt[1])
					msg = true;
			}
			
			// aucune box est checker
			// on n'affiche que un message du mm groupe
			if(status && msg)
				err = obj_error(obj);
		}
		else if(!obj.checked)
		{
			err = obj_error(obj);
		}
		
	}
	
	return err;
}


// obj_error
function obj_error(obj, status, message)
{
	var err = "";

	if(!status)
	{
		if(obj)
			Element.addClassName(obj, 'error');


		msg = (message) ? message : obj.title; 
		err = "<span>" + msg + "</span>";

	}
	else
	{
		Element.removeClassName(obj, 'error');
		err = "";
	}
	
	return err;
}

// check_text
function check_text(area)
{
	if (area.value.length > 250)
		area.value = area.value.substr(0, 250);

	Element.update($('counter'), area.value.length + '/250')
}
