function y_form_ds_drop( name, v )
{
	obj = document.getElementById( name + '__options' );

	if( v == 1 ) { obj.style.display = 'block'; obj.focus(); }
	else if( v == -1 ) { obj.style.display = 'none'; }
	else if( obj.style.display == 'block' ) { obj.style.display = 'none'; }
	else { obj.style.display = 'block'; obj.focus();  }
}

function y_form_ds_hover( obj, v )
{
	if( v ) { obj.classNameOrig = obj.className; obj.className += ' y_form_ds_hover'; }
	else { obj.className = obj.classNameOrig; }
}

function y_form_ds_set( obj, name, value )
{
	document.getElementById( name ).value = value;
	document.getElementById( name + '__value' ).innerHTML = obj.innerHTML;
//	obj.classNameOrig += ' y_form_ds_selected';
	y_form_ds_hover( obj, 0 );
	y_form_ds_drop( name, -1 );
}

function y_form_help( name, v )
{
	if( obj = document.getElementById( name + '__help' ) )
	{
		if( v == 1 ) { obj.style.display = 'block';  }
		else { obj.style.display = 'none'; }
	}
}

function y_form_send_nosubmit( f )
{
	f.elements['__y_form_id'].value = '';
	f.submit();
}
function y_form_reset_change( f ) {
	f.reset();
	for( var i = 0; i < f.elements.length; i++ ) {
		if( f.elements[i].onchange ) f.elements[i].onchange();
	}
}

function y_form_able( mode, form_name, element_name )
{
	var e = document.forms[form_name].elements[element_name];
	if( mode )
	{
		e.disabled = false;
		if( e.r_value != null ) e.checked = e.r_value;
	}
	else
	{
		e.disabled = true;
		e.r_value = e.checked;
		e.checked = false;
	}
}


function y_form_validate_set( id, y_label, y_required, y_min, y_max, y_min_len, y_max_len )
{
	if( obj = document.getElementById( id ) )
	{
		obj.y_validate = true;
		obj.y_label = y_label;
		obj.y_required = y_required;
		obj.y_min = y_min;
		obj.y_max = y_max;
		obj.y_min_len = y_min_len;
		obj.y_max_len = y_max_len;
	}
}

function y_form_validate_el( form, element )
{
	var r = true;

	if( element.value == null || element.value == '' )
	{
		if( element.y_required )
		{
			form.validate_msg += '- ' + element.y_label + ' obligatoire\n';
			r = false;
		}
	}
	else
	{
		if( element.y_min != null || element.y_max != null )
		{
			var v = parseFloat( element.value );
			if( element.y_min != null && v < element.y_min )
			{
				form.validate_msg += '- ' + element.y_label + ' < ' + element.y_min + '\n';
				r = false;
			}
			if( element.y_max != null && v > element.y_max )
			{
				form.validate_msg += '- ' + element.y_label + ' > ' + element.y_max + '\n';
				r = false;
			}
		}

		if( element.y_min_len != null && element.value.length < element.y_min_len )
		{
			form.validate_msg += '- ' + element.y_label + ' < ' + element.y_min_len + ' caractères\n';
			r = false;
		}
		if( element.y_max_len != null && element.value.length > element.y_max_len )
		{
			form.validate_msg += '- ' + element.y_label + ' > ' + element.y_max_len + ' caractères\n';
			r = false;
		}
	}

	if( !r && element.type != 'checkbox' && element.type != 'radio' )
	{
		element.className += ' error';
	}
	return r;
}

function y_form_validate( form )
{
	var r = true;
	form.validate_msg = '';
	form.validate_einput = null;
	for( var i = 0; i < form.elements.length; i++ )
	{
		var element = form.elements[i];
		if( element.y_validate && !y_form_validate_el( form, element ) )
		{
			if( !form.validate_einput ) form.validate_einput = element;
			r = false;
		}
	}
	if( !r )
	{
		alert(
			'Les champs suivants sont invalides :\n\n' +
			form.validate_msg +
			'\nVeuillez les corriger pour continuer.'
		);
		form.validate_einput.focus();
		return false;
	}
	return true;
}

function y_form_select_set_value( o,v )
{
	for( var i=0;i<o.options.length;i++ ) {
		if( o.options[i].value == v ) {
			o.options[i].selected = true;
		}
	}
}

function y_form_date_onchange( name )
{
	objY = document.getElementById( name + '_Y' );
	objn = document.getElementById( name + '_n' );
	objj = document.getElementById( name + '_j' );

	timeA = new Date( objY.options[objY.selectedIndex].value, objn.options[objn.selectedIndex].value, 1 );
	timeDifference = timeA - 86400000;
	timeB = new Date(timeDifference);
	var daysInMonth = timeB.getDate();
	var sj = objj.options[objj.selectedIndex].value;
	if( sj >= daysInMonth ) sj = daysInMonth;
	allow_0 = ( objj.options[0].value == 0 );
	for (var i = 0; i < objj.length; i++) {
		objj.options[0] = null;
	}
	var dc;
	if( allow_0 ) {
		objj.options[0] = new Option;
		objj.options[0].value = 0;
		dc = 1;
	} else {
		dc = 0;
	}
	for( var i=0; i < daysInMonth; i++) {
		objj.options[i+dc] = new Option(i+1);
		objj.options[i+dc].value = i+1;
	}
	y_form_select_set_value(objj,sj);
}

function add_days(adate,days) {
    return new Date(adate.getTime() + (days * 86400000));
}

function y_form_date_now( name )
{
	d = new Date();
	y_form_date_set( name, d );
}

function y_form_date_tomorrow( name )
{
	d = new Date();
	y_form_date_set( name, add_days(d,1) );
}

function y_form_date_set( name, d )
{
	objY = document.getElementById( name + '_Y' );
	if( objY ) y_form_select_set_value(objY,d.getFullYear());
	objn = document.getElementById( name + '_n' );
	if( objn ) y_form_select_set_value(objn,d.getMonth()+1);

	y_form_date_onchange( name );

	objj = document.getElementById( name + '_j' );
	if( objj ) y_form_select_set_value(objj,d.getDate());
	objH = document.getElementById( name + '_H' );
	if( objH ) y_form_select_set_value(objH,d.getHours());
	obji = document.getElementById( name + '_i' );
	if( obji ) y_form_select_set_value(obji,d.getMinutes());
	objs = document.getElementById( name + '_s' );
	if( objs ) y_form_select_set_value(objs,d.getSeconds());

	y_form_date_onchange( name );
}
function y_form_date_set_ymd( name, y,m,d )
{
	var dt = new Date(); dt.setFullYear(y,m-1,d);
	y_form_date_set(name,dt);
}

function y_form_check_all(nm,b)
{
	var e = document.getElementsByName(nm);
	for( var i=0; i < e.length; i++ ) e[i].checked = b;
}

