/***************************************************		fValidate	Copyright (c) 2000-2003	by Peter Bailey	www.peterbailey.net/fValidate/	fValidate.controls.js	Included Validators	-------------------	select	selectm	selecti	checkbox	radio	file	This file is only part of a larger validation	library	and will not function autonomously.	Created at a tab-spacing of four (4)****************************************************/fValidate.prototype.select = function(){	if ( this.typeMismatch( 's1' ) ) return;	if ( this.elem.selectedIndex == 0 )	{		this.throwError( [this.elem.fName] );	}}fValidate.prototype.selectm = function( minS, maxS ){	if ( this.typeMismatch( 'sm' ) ) return;	if ( typeof minS == 'undefined' )	{		this.paramError( 'minS' );	}	if ( maxS == 999 || maxS == '*' || typeof maxS == 'undefined' || maxS > this.elem.length ) maxS = this.elem.length;	var count = 0;		for ( var opt, i = 0; ( opt = this.elem.options[i] ); i++ )	{		if ( opt.selected ) count++;	}	if ( count < minS || count > maxS )	{		this.throwError( [minS, maxS, this.elem.fName, count] );	}}fValidate.prototype.selecti = function( indexes ){		if ( this.typeMismatch( 's1' ) ) return;	if ( typeof indexes == 'undefined' )	{		this.paramError( 'indexes' );		return;	}	indexes = indexes.split( "," );	var selectOK = true;	for ( var i = 0; i < indexes.length; i++ )	{		if ( this.elem.options[indexes[i]].selected )		{			selectOK = false;			break;		}	}	if ( !selectOK )	{		this.throwError( [this.elem.fName] );	}}fValidate.prototype.checkbox = function( minC, maxC ){	if ( this.typeMismatch( 'cb' ) ) return;	if ( typeof minC == 'undefined' )	{		this.paramError( 'minC' );		return;	}	if ( this.elem == this.form.elements[this.elem.name] && !this.elem.checked )	{		this.throwError( [this.elem.fName] );	}	else	{		this.elem = this.form.elements[this.elem.name];		var len   = this.elem.length;		var count = 0;				if ( maxC == 999 || maxC == '*' || typeof maxC == 'undefined' || maxC > this.elem.length )		{			maxC == len;		}		var i = len;		while( i-- > 0 )		{			if ( this.elem[i].checked )			{				count++;			}		}		if ( count < minC || count > maxC )		{			this.throwError( [minC, maxC, this.elem[0].fName, count] );		}				}}fValidate.prototype.radio = function(){	if ( this.typeMismatch( 'rg' ) ) return;	if ( this.elem == this.form.elements[this.elem.name] && !this.elem.checked )	{		this.throwError( [this.elem.fName] );	}	else	{		this.elem = this.form.elements[this.elem.name];				for ( var i = 0; i < this.elem.length; i++ )		{			if ( this.elem.item( i ).checked )			{				return;			}		}		this.throwError( [this.elem[0].fName] );	}}fValidate.prototype.file = function( extensions, cSens ){	if ( this.typeMismatch( 'file' ) ) return;	if ( typeof extensions == 'undefined' )	{		this.paramError( 'extensions' );		return;	}	cSens = Boolean( cSens ) ? "" : "i";	var regex = new RegExp( "^.+\\.(" + extensions.replace( /,/g, "|" ) + ")$", cSens );	if ( ! regex.test( this.elem.value ) )	{		this.throwError( [extensions.replace( /,/g, "\n" )] );	}}//	EOF