function trim(str) {
  return str.replace(/^\s*|\s*$/g, "");
}

function openDetailWin(param) {
  window.open ('viewdetail.php?'+param, 'detailWindow', 'scrollbars=yes,status=no,menubar=no,resizable=no,toolbar=no,width=400,height=300');
}

function notInOptions(id, text) {
  var i;
  var obj = document.all[id];
  
  for (i=0; i<obj.options.length; i++) {
    if (obj.options[i].text == text) {
      return false;
    }
  }
  return true;
}

function addOption(idFrom, idTo) {
  var i;
  var fromObj = document.all[idFrom];
  var toObj = document.all[idTo];

  for (i=0; i<fromObj.options.length; i++) {
    if (fromObj.options[i].selected) {
      if (notInOptions(idTo, fromObj.options[i].text)) {
        toObj.options[toObj.options.length] = new Option(fromObj.options[i].text, fromObj.options[i].value);
      }
    }
  }
  sortOptions(idTo);
}

function removeOption(id) {
  var i;
  var obj = document.all[id];
  
  for (i=(obj.options.length-1); i>=0; i--) {
    if (obj.options[i].selected) {
      obj.options[i] = null;
    }
  }
}

function sortOptions(id) {
  var i;
  var obj = document.all[id];
  var tmpArr = new Array();
  
  for(i=0; i<obj.length; i++)  {
    tmpArr[i] = obj.options[i].text;
  }
  tmpArr.sort();
  for(i=0; i<obj.length; i++)  {
    obj.options[i].text = tmpArr[i];
    obj.options[i].value = tmpArr[i];
  }
}

function selectAllOptions(id) {
  var i;
  var obj = document.all[id];
  
  for (i=0; i<obj.options.length; i++) {
    obj.options[i].selected = true;
  }
}

function validateRegistration(form) {
  selectAllOptions('preferred_subject');
  selectAllOptions('preferred_slot');

  if (!validateRequired(form)) {
    alert('Please fill in the required data.');
    return false;
  }
  if (!validatePassword('password', 'retype_password')) {
    alert('Passwords do not matched.');
    return false;
  }
  if (!validateEmail('email')) {
    alert('Please enter an valid email address.');
    return false;
  }
  return true;
}

function validateProfile(form) {
  selectAllOptions('preferred_subject');
  selectAllOptions('preferred_slot');

  if (!validateRequired(form)) {
    alert('Please fill in the required data.');
    return false;
  }
  if (!validateEmail('email')) {
    alert('Please enter an valid email address.');
    return false;
  }
  return true;
}

function validateContact(form) {
  if (!validateRequired(form)) {
    alert('Please fill in the required data.');
    return false;
  }
  if (!validateEmail('email')) {
    alert('Please enter an valid email address.');
    return false;
  }
  return true;
}

function validateChangePassword(form) {
  if (!validateRequired(form)) {
    alert('Please fill in the required data.');
    return false;
  }
  if (!validatePassword('password', 'retype_password')) {
    alert('Passwords do not matched.');
    return false;
  }
  return true;
}

function validateRequired(form) {
  var ele, required;

  for (i=0; i<form.elements.length; i++) {
    ele = form.elements[i];
    required = false;
    
    if (document.all['hint_'+ele.name]) {
      if (document.all['hint_'+ele.name].innerHTML.substr(0, 1) == '*') {
        required = true;
      }
    }

    if (required) {
      switch(ele.type) {
        case 'text':
        case 'password':
        case 'textarea':
        case 'select-one':
        case 'select-multiple':
          if (trim(ele.value) == "") {
            ele.focus();
            return false;
          }
          break;
        default:
      }
    }
  }
  return true;
}

function validatePassword(p1, p2) {
  if (!document.all[p1] || !document.all[p2]) {
    return true;
  }
  var p1Obj = document.all[p1];
  var p2Obj = document.all[p2];

  if (p1Obj.value != p2Obj.value) {
    p1Obj.focus();
    return false;
  }
  return true;
}

function validateEmail(em) {
  if (!document.all[em]) {
    return true;
  }
  else if (trim(document.all[em].value) == "") {
    return true;
  }
  var emailFilter = /^.+@.+\..{2,3}$/;
  var emObj = document.all[em];
  
  if (!emailFilter.test(emObj.value)) {
    emObj.focus();
    return false;
  }
  return true;
}


