// creates new window
function createWindow(url, frameName, windowFeatures)
{
	msgWindow=window.open(url,frameName,windowFeatures)
}

// submits page
function submitPage (formName, targetTask, actionID, targetDepth)
{
  if (checkFields(formName,actionID)) {
    document.forms[formName].elements['actionID'].value = actionID;
    document.forms[formName].elements['targetTask'].value = targetTask;
    document.forms[formName].elements['targetDepth'].value = targetDepth;
    document.forms[formName].submit();
  }
}

// submits page phase 1 (for anchors)
function submitPage2 (formName, targetTask, actionID, targetDepth)
{
  if (checkFields(formName,actionID)) {
    document.forms[formName].elements['actionID'].value = actionID;
    document.forms[formName].elements['targetTask'].value = targetTask;
    document.forms[formName].elements['targetDepth'].value = targetDepth;
    return true;    
  } else {
    return false;
  }
}


// submits page to url
function submitToURL (formName, targetTask, actionID, targetDepth, targetURL)
{
  document.forms[formName].action = targetURL;
  submitPage(formName, targetTask, actionID, targetDepth);
}

// submits page to url phase 1 (for anchors)
function submitToURL2 (formName, targetTask, actionID, targetDepth, targetURL)
{
  document.forms[formName].action = targetURL;
  submitPage2(formName, targetTask, actionID, targetDepth);
}


// gets field value
function getFieldValue(formID, fieldID)
{
   var value = document.forms[formID].elements[fieldID].value;
   value = trim(value);
   document.forms[formID].elements[fieldID].value = value;
   return value;
}

// trims string value
function trim(value) {

   var re = /\s/;

   var retValue = value;
   var ch = retValue.substring(0, 1);
   while (ch.search(re) != -1) { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch.search(re) != -1) { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   return retValue;
}

// gets field by name
function getFieldByName(formID, fieldName)
{
  var elements = document.forms[formID].elements;
  for (i = 0; i < elements.length; i++) {
    if (elements[i].name && elements[i].name.indexOf(":"+fieldName) > -1) {
      if (elements[i].checked) {
        if (elements[i].checked == true) return elements[i]; 
      } else {
        return elements[i];
      }       
    }
  }
  return null;
}

// sets focus
function setFocus(formID, fieldID)
{
  document.forms[formID].elements[fieldID].focus();
}

function alertRequired () {
  alert('The required field (*) is not set!');
}

// is required checker
function check_required (formID, fieldID, required)
{
  var value = getFieldValue(formID, fieldID);
  if (isEmpty(value))
  {
    alertRequired();
    setFocus(formID, fieldID);
    return false;
  }
  return true;
}

// email checker
function check_email(formID, fieldID, required)
{
  var value = getFieldValue(formID, fieldID);
  if (required)
  {
    if (isEmpty(value)) {
      alertRequired();
      return false;
    }
  } else {
    // field is empty
    if (isEmpty(value)) {
      return true;
    }
  }
  if (value.indexOf("@") < 1 )
  {
    alert("Please check your email address to see if you have an @ symbol and at least 1 prefix character preceding it.");
    setFocus(formID, fieldID);
    return false;
  }
  return true;
}

// int checker
function check_int(formID, fieldID, required)
{
  var value = getFieldValue(formID, fieldID);

  if (required)
  {
    if (isEmpty(value)) {
      alertRequired();
      return false;
    }
  } else {
    // field is empty
    if (isEmpty(value)) {
      return true;
    }
  }
  if (checkInt(value)) return true;
  alert("Wrong number format.");
  setFocus(formID, fieldID);
  return false;
}

// long check
function check_long(formID, fieldID, required)
{
  var value = getFieldValue(formID, fieldID);

  if (required)
  {
    if (isEmpty(value)) {
      alertRequired();
      return false;
    }
  } else {
    // field is empty
    if (isEmpty(value)) {
      return true;
    }
  }
  if (checkLong(value)) return true;
  alert("Wrong number format.");
  setFocus(formID, fieldID);
  return false;

}




// checker helpers
function isEmpty( val )
{
    if ( val.length == 0 )
    {
        return true;
    }
    else
    {
        return !checkNonEmpty(val);
    }
}

function checkNonEmpty( txt )
{
    var i;
    var ch;

    for ( i=0; i < txt.length; i++ )
    {
        ch=txt.charAt(i);

        // return at first non-blank char
        if ( (ch!=' ') )
        {
            return true;
        }
    }

    return false;
}

function checkCharacterIsAlpha( character )
{
    var IsValid=false;

    if ( checkCharacterIsAlpha.arguments.length==1)
    {
        if (((character>='A')&&(character<='Z'))||((character>='a')&&(character<='z')))
            IsValid=true;
    }
    else
    {
        //  Not valid length for a single char
    }

    return IsValid;
}

function checkCharacterIsDigit(character)
{
    var IsValid=false;

    if ( checkCharacterIsDigit.arguments.length==1)
    {
        if ((character>='0')&&(character<='9'))
            IsValid=true;
    }
    else
    {
        //  Not valid length for a single char
    }

    return IsValid;
}

function checkMinimumLen( val, min )
{
    if ( val.length >= min )
    {
        return true;
    }
    else
    {
        return false;
    }
}

function checkMaximumLen( val, max )
{
    if ( val.length <= max )
    {
        return true;
    }
    else
    {
        return false;
    }
}

function checkMinMax( val, min, max )
{
    if ( checkMinimumLen( val, min) )
        if ( checkMaximumLen( val, max ) )
            return true;

    return false;
}

function checkAlphaNum( txt )
{
    var i;
    var ch;

    //alert("checkAlphaNum("+txt+")" );
    for ( i=0; i < txt.length; i++ )
    {
        ch=txt.charAt(i);

		if ( !checkCharacterIsAlpha(ch) && !checkCharacterIsDigit(ch) )
        {
			// Not numeric or alpha
            return false;
        }
    }

    return true;
}

function checkDigits( txt )
{
    var i;
    var ch;

    for ( i=0; i < txt.length; i++ )
    {
        ch=txt.charAt(i);

		if ( !checkCharacterIsDigit(ch) )
        {
            // Not numeric
            return false;
        }

    }

    return true;
}

function checkNumber( txt )
{
	if ( txt.charAt(0) == '-' ) {
		txt = txt.substring( 1, txt.length );
	}
	if ( !checkDigits(txt) ) {
		return false;
    }
	
    return true;
}

function checkInt( txt )
{
	if ( !checkNumber(txt) ) {
		return false;
    }
	if ( Number(txt) < -2147483648 || Number(txt) > 2147483647 ) {
		return false;
	}

    return true;
}

function checkLong( txt )
{
	if ( !checkNumber(txt) ) {
		return false;
    }

    return true;
}

function check_confirmAction(formID,fieldID, required)
{
	if ( typeof(fieldID) == "string")
	if ( window.confirm(fieldID) ) {
		return true;
	}
	return false;
}


