function parseFloatNVL(flt) {
    if (flt == '') { 
        flt = 0; 
    }
    return parseFloat(flt);
}

function windowOpen(url, title, width, height, simple_p) {
    if (simple_p == 1) {
      options = 'width=' + width + ', height=' + height + ', toolbar=no, location=no, menubar=no, status=no, resizable=yes';
    } else {
      options = 'width=' + width + ', height=' + height + ', toolbar=yes, location=yes, menubar=yes, status=yes, resizable=yes';
    }

    window.open(url, title, options);
}

function SubmitSelected(el) {
    selected_value = el.options[el.selectedIndex].value;
    if ( selected_value != '' ) {
      document.location.href = selected_value;
    }
}

function maybeSubmitOnChange(el) {
    if (  el.options[el.selectedIndex].value != '' ) {
	el.form.submit();
    }
}

function redirectSelected(url,el) {
    value = el.options[el.selectedIndex].value;
    if (value != '') {
      window.location = url + value;
    }
}

function redirectFromText(url,el) {
    value = el.value;
    if (value != '') {
      window.location = url + value;
    }
}

function redirectURL(url) {
    window.location = url;
}

function confirmDelete(object,id,name,url) {
        if (name != '') {
	  confirm_string = 'Are you sure you want to delete ' + object + ': ' + name + '?';
	} else {
	  confirm_string = 'Are you sure you want to delete ' + object + ': ' + id + '?';
	}

	if (confirm(confirm_string)) {
	  document.location.href = url + id;
	}
}

function confirmProceed(msg, url) {
        confirm_string = msg;

	if (confirm(confirm_string)) {
	  document.location.href = url;
	}
}

function pageRedirect(url) {
   document.location.href = url;
   return true;
}

function delayedPageRedirect(url, del) {
  setTimeout("pageRedirect('" + url + "')", del);
  return true;
}

function closeWindow(win) {
	eval(win + '.close()');
}

function maybeSubmit(frm, sel, msg) {
	if (sel.options[sel.selectedIndex].value != '') {
	frm.submit();
        } else {
	alert(msg);
	}
};

function checkAll(el, check) {
  for (i = 0; i < el.length; i++) {
	if (check) {
	  el[i].checked = true;
	} else {
	  el[i].checked = false;
    	}
  }

  return true;
}

function dateDataValidate (element) {
if (element.value != '') {
	
	pattern0 = /[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;
	if (!element.value.match(pattern0)) {
	alert('Date must be of the form MM/DD/YYYY');
	element.focus();
	return false;
	}
	
	pattern = /(0{0,1})([0-9]{1,2})\/(0{0,1})([0-9]{1,2})\/([0-9]{4})/;
	results = element.value.match(pattern);
	//alert(results); return false;

	original_date = element.value;
	c_original_date = results[2] + '/' + results[4] + '/' + results[5];
	date = new Date(results[5], results[2] - 1, results[4]);
	//date.setFullYear(results[5]);

	new_date = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();

	if (c_original_date != new_date) {
	//alert(c_original_date + ' != ' + new_date); return false;

		alert ('Invalid Date:' + original_date);
	        element.focus();
		return false;
	}
}
	return true;
}

function moveSelected (from, to) {
  var movedOptions = new Array();

  while(from.selectedIndex != -1) {
	movedOptions[movedOptions.length] = from.options[from.selectedIndex].value;

	selOpt = from.options[from.selectedIndex];
	var newOpt = new Option(selOpt.text, selOpt.value);
	
        to.options[to.options.length] = newOpt;

	selOpt.selected = false;
  }

  for (j=0; j<movedOptions.length; j++) {
    removeOptionByValue(from, movedOptions[j]);
  }
}

function moveAll (from, to) {
  for(i=0; i<from.options.length; i++) {
	selOpt = from.options[i];
	var newOpt = new Option(selOpt.text, selOpt.value);
	
        to.options[to.options.length] = newOpt;
  }

  from.length = 0;
}

function removeOptionByValue (el, value) {
  for (i=0; i<el.options.length; i++) {
    if (el.options[i].value == value) {
      el.options[i] = null;
    }
  }
}

function selectAllOptions (el) {
  for (i=0; i<el.options.length; i++) {
	el.options[i].selected = true;
  }
  return true;
}

function emptyElementP (el) {
  if (el.value == '') {
	return true;
  }
  return false;
}

function reportNoValue(el, msg) {
  if (emptyElementP(el)) {
	alert(msg);
	return false;
  }
  return true;
}

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


// Array Functions
// ---------------

function arraySearchExact (arr, val) {
  for (var i=0; i < arr.length; i++) {
    if (arr[i] == val) {
	return true;
    }
  }

  return false;
}
