
function MM_findObj(n, d)
{
    var p,i,x;
    if (!d) d = document;
    if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p+1)].document;
        n = n.substring(0,p);
    }

    if (!(x = d[n]) && d.all)
        x = d.all[n];

    for (i = 0;!x && i < d.forms.length; i++)
        x = d.forms[i][n];

    for (i=0; !x && d.layers && i < d.layers.length;i++)
        x = MM_findObj(n,d.layers[i].document);

    if (!x && d.getElementById)
        x = d.getElementById(n);

    return x;
}

function YY_checkform()
{
    var args = YY_checkform.arguments, myDot=true, myV = '', myErr = '', addErr = false, myReq;
    for (var i = 1; i < args.length; i += 4) {
        if (args[i+1].charAt(0)=='#') {
            myReq = true; args[i+1]=args[i+1].substring(1);
        } else 
            myReq = false;

        var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig, ""));
        myV = myObj.value;
        if (myObj.type=='text' || myObj.type == 'password' || myObj.type=='hidden') {
            if (myReq&&myObj.value.length==0){addErr=true}
            if ((myV.length>0)&&(args[i+2]==1)){ //fromto
            var myMa=args[i+1].split('_');if(isNaN(myV)||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true}
            } else if ((myV.length>0)&&(args[i+2]==2)){
              var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true;
            } else if ((myV.length>0)&&(args[i+2]==3)){ // date
            var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);
            if(myAt){
              var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];
              var myDate=new Date(myY,myM,myD);
              if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};
            }else{addErr=true}
            } else if ((myV.length>0)&&(args[i+2]==4)){ // time
            var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}
            } else if (myV.length>0&&args[i+2]==5){ // check this 2
                var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
                if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];
                if(!myObj1.checked){addErr=true}
            } else if (myV.length>0&&args[i+2]==6){ // the same
                var myObj1 = MM_findObj(args[i+1]);
                if(myV!=myObj1.value){addErr=true}
            }
        } else
            if (!myObj.type && myObj.length > 0 && myObj[0].type == 'radio') {
                var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
                var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;
                if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
          if (args[i+2]==2){
            var myDot=false;
            for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
            if(!myDot){myErr+='* ' +args[i+3]+'\n'}
          }
        } else if (myObj.type=='checkbox'){
          if(args[i+2]==1&&myObj.checked==false){addErr=true}
          if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
        } else if (myObj.type=='select-one'||myObj.type=='select-multiple'){
          if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}
        }else if (myObj.type=='textarea'){
          if(myV.length<args[i+1]){addErr=true}
        }
        if (addErr){myErr+='- '+args[i+3]+'\n'; addErr=false}
    }

    return myErr;
}

