
/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Amit Wadhwa :: http://amitwadhwa.fcpages.com/javascript.com/formvalidator.html */

function checkText(formname, textboxname, displaytext) {
  var localerror = '';
  if(Trim(eval('document.'+formname+'.'+textboxname+'.value'))=='') {
    localerror =  '- '+displaytext+'.\n';
  } else localerror = '';
  return localerror;
}

function checkNum(formname, textboxname, displaytext) {
  var localerror = '';
  if(isNaN(eval('document.'+formname+'.'+textboxname+'.value'))) {
    localerror =  '- '+displaytext+' Should Be A Number With No Spaces.\n';
  } else localerror = '';
  return localerror;
}

function checkSpaces(formname, textboxname, displaytext) {
  var valid = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_'; // define valid characters
  var localerror = '';
  if(!isValid(Trim(eval('document.'+formname+'.'+textboxname+'.value')), valid)) {
    localerror =  '- '+displaytext+' Should Not Contain Spaces.\n';
  } else localerror = '';
  return localerror;
}

function checkSelect(formname, selectboxname, displaytext) {
  var localerror = '';
  var idx = eval('document.'+formname+'.'+selectboxname+'.selectedIndex');
  if (idx < 0) { return '- '+displaytext+'.\n'; }

  var txt = eval('document.'+formname+'.'+selectboxname+'.options['+idx+'].text');

//alert('idx = ' + idx);
//alert('txt = ' + txt);
  if(txt == "") {
     return '- '+displaytext+'.\n';
//alert ('Error =' + localerror);
  }
  return localerror;
}


function checkSelectOther(formname, selectboxname, displaytext, txtBox) {
  var localerror = '';
  var idx = eval('document.'+formname+'.'+selectboxname+'.selectedIndex');
  if (idx < 0) { return '- '+displaytext+'.\n';  }

  var txt = eval('document.'+formname+'.'+selectboxname+'.options['+idx+'].text');
  if(txt != "") {
    if (txt.indexOf("Other") < 0) {  return localerror; }
    //if (txtBox.value != "") {
    return  checkText(formname, txtBox.name, displaytext);
    // }
  }
  return '- '+displaytext+'.\n';
//alert ('Error =' + localerror);
  return localerror;
}

function getRadio(formname, radioname, displaytext) {
  for (var i=0; i < eval('document.'+formname+'.'+radioname+'.length'); i++) {
    if (eval('document.'+formname+'.'+radioname+'[i].checked')) {
      var rad_val = eval('document.'+formname+'.'+radioname+'[i].value');
      return rad_val;
    }
  }
}

function checkRadio(formname, radioname, displaytext) {
  var localerror = '';
  var rad_val    = '';
  for (var i=0; i < eval('document.'+formname+'.'+radioname+'.length'); i++) { //check every radio button by that name
    if (eval('document.'+formname+'.'+radioname+'[i].checked'))  { //if it is checked
      rad_val += '-';
      }	else rad_val += '';
      }
    if (rad_val=='') {
      localerror =  '- '+displaytext+'.\n';
    }
  return localerror;
}


function checkRadioGovtOrg(formname, radioname, displaytext) {
  var localerror = '';
  var localerror2 = '';
  var rad_val    = '';
  for (var i=0; i < eval('document.'+formname+'.'+radioname+'.length'); i++) { //check every radio button by that name
    rdoBtn = eval('document.'+formname+'.'+radioname+'[i]');
    if (rdoBtn.checked)  { //if it is checked
      rad_val += '-';
      rad_value = rdoBtn.value;

   if (rad_value == "Govt")
      { localerror2 += checkSelect(formname, 'f04govt', displaytext); }
   if (rad_value == "UN")
      { localerror2 += checkSelectOther(formname, 'f04org', displaytext, document.reg_form.f04org_other); }
   if (rad_value == "IGO" || rad_value == "NGO" ||
       rad_value == "Ind" || rad_value == "Oth" )
      { localerror2 += checkText(formname, 'f05org_name', displaytext); }

     }	else rad_val += '';
   }
   if (rad_val=='') {
      localerror =  '- '+displaytext+'.\n';
   }
  return localerror + localerror2;
}

function autoComplete (field, select, property) {
/*onKeyUp="autoComplete(this,this.form.selectboxname,'value',false)" - add this to textbox where you are typing*/
  var found = false;
  for (var i = 0; i < select.options.length; i++) {
    if (select.options[i][property].toUpperCase().indexOf(field.value.toUpperCase()) == 0) {
      found=true; break;
    }
  }
  if (found) {
    select.selectedIndex = i;
  } else {
    select.selectedIndex = -1;
  }
  if (field.createTextRange) {
    if (!found) {
      field.value=field.value.substring(0,field.value.length-1);
      return;
    }
    var cursorKeys ="8;46;37;38;39;40;33;34;35;36;45;";
    if (cursorKeys.indexOf(event.keyCode+";") == -1) {
      var r1 = field.createTextRange();
      var oldValue = r1.text;
      var newValue = found ? select.options[i][property] : oldValue;
      if (newValue != field.value) {
        field.value = newValue;
        var rNew = field.createTextRange();
        rNew.moveStart('character', oldValue.length) ;
        rNew.select();
      }
    }
  }
}

function Trim(s) {
  //while (s.length > 0) {
    while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')) {
      s = s.substring(1,s.length);
    }
  //}
  //while (s.length > 0) {
    while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')) {
      s = s.substring(0,s.length-1);
    }
  //}
  return s;
}

function isValid(string,allowed) {
//  var valid = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; // define valid characters
    for (var i=0; i< string.length; i++) {
      if (allowed.indexOf(string.charAt(i)) == -1) return false;
    }
    return true;
}

function check_reg_form(formname) {
  var errors = '';
  errors += checkSelectOther(formname, 'f01title', 'Title', document.reg_form.f01title_other);
  errors += checkText(formname, 'f03surname', 'Surname');
  errors += checkText(formname, 'f02firstname', 'First Name');
  errors += checkRadioGovtOrg(formname, 'f04delegation', 'Government or Organisation');
  errors += checkText(formname, 'f12address', 'Address');
  errors += checkText(formname, 'f13city', 'City');
  errors += checkSelect(formname, 'f14country', 'Country');
  if (errors != '') {
    alert('Missing information that is required:\n' + errors);
  }
  //checkThisForm(formname, errors);
  return (errors == '');
}

//f04delegation,f12address,f13city,f14country
//checkSelect(formname, selectboxname, displaytext)


