function IsNotSelected(o){return(o.options.selectedIndex<0)}
function IsNotOr1stSelected(o){return(o.options.selectedIndex<1)}
function IsChecked(o){return(o.checked)}
function IsEmpty(s){return(s.length==0)}
function IsNum(n){return/^-?\d*\.?\d*$/.test(n)}
function IsDec(n){return/^-?\d{0,18}(\.\d{0,10})?$/.test(n)}
function IsInt(n){return/^-?\d+$/.test(n)}
function IsMilli(n){return/^\d+$/.test(n)&&n<1000}
function IsDate(d,m,y){return(IsInt(d)&&IsInt(m)&&IsInt(y))&&!((d<1||d>31||m<1||m>12)||(d==31&&(m==2||m==4||m==6||m==9||m==11))||(d==30&&m==2)||(d==29&&m==2&&(y%4!=0||(y%100==0&&y%400!=0))))}
function IsEmail(s){return/^[\w\.-]+\@[\w\.-]+\.\w+$/.test(s)}
function HasLength(s,m,M){return(s.length>=m&&s.length<=M)}
function FirstIsLetter(s){return/^[a-zA-Z]/.test(s)}
function IsAlphaNum(s){return/^\w+$/.test(s)}
function IsUID(s){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(s)}
function IsSafePwd(s){return s.length>=8&&/\d+.*\d+/.test(s)&&/[a-zA-Z]+.*[a-zA-Z]+/.test(s)}
function Warn(o,m){alert(m);o.focus();return false;}
function IsRadioSelected(o){var b=false,i=0;while(o[i]){b=b||o[i].checked;i++}return b}
function getValue(o){var i=0;if(o.value)return o.value;if(typeof o.selectedIndex!='undefined')return o[o.selectedIndex].value;while(o[i]){if(o[i].checked) return o[i].value;i++}}

var g_ok;
var g_msg;
var g_focus;
function StartControl(){g_ok=true;g_msg="";g_focus=null}
function SetError(o,m){g_ok=false;g_msg+=m+"\n";if(g_focus===null)g_focus=o}
function EndControl(){if(!g_ok){alert(g_msg);g_focus.focus();}return g_ok}

