function SH_IRUI_Survey_CheckSurvey(frm, tag) {
  try {
    var arr=eval(tag+'_js');
    if(arr && arr.length){
      for(var i=0;i<arr.length;i++) {
        var obj=frm[tag+'_'+arr[i].qid];
        if(obj && obj.type) {
          if(obj.type=='text'){
            if(arr[i].req == 1 && obj.value.length == ''){ // text box
              alert('The field "' + arr[i].label + '" is required.');
              return false;
            }
            if(arr[i].minsize > 0 && 
              (obj.value.length < arr[i].minsize)){
              alert('The field "' + arr[i].label + '" has a requirement of at least ' + arr[i].minsize + ' characters long.');
              return false;
            }
            if(arr[i].maxsize > 0 && 
              (obj.value.length > arr[i].maxsize)){
              alert('The field "' + arr[i].label + '" has a requirement of less than ' + arr[i].maxsize + ' characters long.');
              return false;
            }
          }else if(obj.type=='select-one' || obj.type=='select-multiple') { // select
            var selectedAmount = 0;
            for(var j=0;j<obj.options.length;j++){
              if(obj.options[j].checked==true || obj.options[j].selected==true)
                selectedAmount++;
            }
            if(arr[i].req == 1 && selectedAmount == 0){
              alert('The field "' + arr[i].label + '" is required.');
              return false;
            }
            if(arr[i].minselect > 0 && selectedAmount < arr[i].minselect ){
              alert('The field "' + arr[i].label + '" has a requirement of at least  ' + arr[i].minselect + ' option(s).');
              return false;
            }
            if(arr[i].maxselect > 0 && selectedAmount > arr[i].maxselect ){
              alert('The field "' + arr[i].label + '" has a requirement of no more than  ' + arr[i].maxselect + ' option(s).');
              return false;
            }
          }
        } else if (obj && !obj.type && obj.length) { // radio/checkbox
          var selectedAmount = 0;
          for(var j=0;j<obj.length;j++){
            if(obj[j].checked==true || obj[j].selected==true)
              selectedAmount++;
          }
          if(arr[i].req == 1 && selectedAmount == 0){
            alert('The field "' + arr[i].label + '" is required.');
            return false;
          }
          if(arr[i].minselect > 0 && selectedAmount < arr[i].minselect ){
            alert('The field "' + arr[i].label + '" has a requirement of at least  ' + arr[i].minselect + ' option(s).');
            return false;
          }
          if(arr[i].maxselect > 0 && selectedAmount > arr[i].maxselect ){
            alert('The field "' + arr[i].label + '" has a requirement of no more than  ' + arr[i].maxselect + ' option(s).');
            return false;
          }
        }
      } 
    } else // no required questions
      ;//frm.submit();
  } catch(ex) {// assume no required questions
    ;//frm.submit();
    alert(ex.message);
	dbg("Error: "+ex.message);
  }

  // if you get here, then submit
  frm.submit();
}