
function validateString(name, el, min, max, required) {
  var str = el.value;
  var error = null;
  if (str == null || str.length == 0 && required) {
    error = name + " is required.";

  } else if (str.length > 0 && str.length < min) {
    error = name + " must contain at least "+min+" characters.";
    
  } else if (str.length > max) {
    error = name + " cannot exceed "+max+" characters.";
  }
  
  if (error != null) {
    alert(error);
    el.focus();
    return false;
  }
  return true;
}

function isValidHours(name, el, min, max, required) {
  var str = el.value;
  var error = null;
  if (str == null || str.length == 0) {
    if (required) {
      error = name + " is required.";
    } else {
      return true;
    }
  }
  var num = 0;
	var arry = str.split(":");
	if (arry != null && arry.length > 1) {
		num = parseInt(arry[0]);
		if (parseInt(arry[1]) > 0) {
			num += (parseInt(arry[1])/60);
		}
	} else {
	  num = parseFloat(str);
	}

  if (isNaN(num)) {
    error = name + " is not a valid hour.";    
	} else if (!isNaN(min) && min != null && num < min) {
    error = name + " must be larger than "+min+".";
    
  } else if (!isNaN(max) && max != null && num > max) {
    error = name + " cannot exceed "+max+".";
  }
  
  if (error != null) {
    return error;
  }
  return true;
}

function isValidNumber(name, el, min, max, required) {
  var str = el.value;
  var error = null;
  if (str == null || str.length == 0) {
    if (required) {
      error = name + " is required.";
    } else {
      return true;
    }
  } 
  var num = parseFloat(str);

  if (isNaN(num)) {
    error = name + " is not a valid number.";    

  } else if (!isNaN(min) && min != null && num < min) {
    error = name + " must be larger than "+min+".";
    
  } else if (!isNaN(max) && max != null && num > max) {
    error = name + " cannot exceed "+max+".";
  }
  
  if (error != null) {
    return error;
  }
  return true;
}

function validateHours(name, el, min, max, required) {
  var valid = isValidHours(name, el, min, max, required);
  if (valid != true) {
    alert(valid);
    el.focus();
    return false;
  }
  return true;
}

function validateNumber(name, el, min, max, required) {
  var valid = isValidNumber(name, el, min, max, required);
  if (valid != true) {
    alert(valid);
    el.focus();
    return false;
  }
  return true;
}

function isValidInteger(name, el, min, max, required) {
  var str = el.value;
  var error = null;
  if (str == null || str.length == 0) {
    if (required) {
      error = name + " is required.";
    } else {
      return true;
    }
  } 
  var num = parseInt(str);

  if (isNaN(num)) {
    error = name + " is not a valid integer.";    

  } else if (!isNaN(min) && min != null && num < min) {
    error = name + " must be larger than "+min+".";
    
  } else if (!isNaN(max) && max != null && num > max) {
    error = name + " cannot exceed "+max+".";
  }

  if (error != null) {
    return error;
  }
  return true;
}

function validateInteger(name, el, min, max, required) {
  var valid = isValidInteger(name, el, min, max, required);
  if (valid != true) {
    alert(valid);
    el.focus();
    return false;
  }
  return true;
}


function getFormString(el) {
  var str = null;
  if (el.options) {
    str = el.options[el.selectedIndex].value;
  } else {
    str = el.value;
  }
  
  if (str == null || str.length == 0) {
    return null;
  }
  return str; 
}

function getFormBoolean(el) {
  var str = null;
  if (el.options) {
    str = el.options[el.selectedIndex].value;
  } else if (el.selected != null) {
    str = el.selected+"";
  } else if (el.checked != null) {
    str = el.checked+"";
  } else {
    str = el.value;
  }
  
  if (str == null || str.length == 0) {
    return null;
  }

  if (str.toLowerCase() == "true" ||
      str == "1") {
    return 1;
  }
  return 0; 
}

function getFormInteger(el) {
  var str = null;
  if (el.options) {
    str = el.options[el.selectedIndex].value;
  } else if (el.length) {
    for (var i = 0; i < el.length; i++) {
      if (el[i].checked) {
        str = el[i].value;
        break;
      }
    }
    
  } else {
    str = el.value;
  }
  
  if (str == null || str.length == 0) {
    return null;
  }
  
  var i = parseInt(str);
  if (isNaN(i)) {
    return null;
  }
  return i;
}

function getFormNumber(el) {
  var str = null;
  if (el.options) {
    str = el.options[el.selectedIndex].value;
  } else {
    str = el.value;
  }
  
  if (str == null || str.length == 0) {
    return null;
  }
  
  var i = parseFloat(str);
  if (isNaN(i)) {
    return null;
  }
  return i;
}

function getFormHours(el) {
  var str = null;
  if (el.options) {
    str = el.options[el.selectedIndex].value;
  } else {
    str = el.value;
  }
  
  if (str == null || str.length == 0) {
    return null;
  }
  
  var i = 0;
	var arry = str.split(":");
	if (arry != null && arry.length > 1) {
		i = parseInt(arry[0]);
		if (parseInt(arry[1]) > 0) {
			i += (parseInt(arry[1])/60);
		}
	} else {
	  i = parseFloat(str);
	}
  if (isNaN(i)) {
    return null;
  }
  return i;
}

function setFormString(str, el) {
  if (str == null) {
    return;
  }
  
  if (el.options) {
    str = new String(str);
    setSelection(el, str);
  } else {
    el.value = str;
  }
}

function setFormNumber(str, el) {
  if (str == null) {
    return;
  }
  
  if (el.options) {
    str = new String(str);
    setSelection(el, str);

  } else if (el.length) {
    for (var i = 0; i < el.length; i++) {
      if (el[i].value == str) {
        el[i].checked = true;
      } else {
        el[i].checked = false;
      }
    }

  } else {
    el.value = str;
  }
}

function setFormBoolean(str, el) {
  if (str == null) {
    return;
  }
  
  if (el.options) {
    if (str.constructor != String) {
      if(str) {
        str = "1";
      } else {
        str = "0";
      }
    }
    setSelection(el, str);
  } else if (el.checked != null) {
    if (el.value == str) {
      el.checked = true;
    } else {
      el.checked = false;
    }
    
  } else {
    el.value = str;
  }
}

function setSelection(el, str) {
  for (var i = 0; i < el.options.length; i++) {
    if (el.options[i].value == str) {
      el.selectedIndex = i;
      break;
    }
  }
}
