function CheckField(frm, fname, ftitle){
	var s = frm.elements[fname].value;
	var d = "";
	
	for(i=0; i < s.length; i++){
		if(s.charAt(i) != " "){
			d = d + s.charAt(i);
		}
	}
	if(d == ""){
		alert(msg_please_enter + ' ' + ftitle);
		frm.elements[fname].focus();
		return false;
	}
	else{
		return true;
	}
}

// Pinnacle's isURL() function ALWAYS RETURNS FALSE
// Rather than modifying their code, I wrote my own
function IsURL(url){
   var urlPattern = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/;
   return urlPattern.test(url.toLowerCase());
}


// http://www.webreference.com/programming/javascript/onloads/
function addLoadEvent(func) { 
  var oldonload = window.onload; 
  if (typeof window.onload != 'function') { 
    window.onload = func; 
  } else { 
    window.onload = function() { 
      if (oldonload) { 
        oldonload(); 
      } 
      func(); 
    } 
  } 
} 

function change_element_style_by_name(element_name, style_name, style_value) {
   elements = document.getElementsByName(element_name);
   for(var i = 0; i < elements.length; i++)   {
      elements[i].style[style_name] = style_value;
   }
}

// Given an object of type CSSStyleDeclaration, set style to value given, in browser-agnostic manner
function setStyleAgnostic(browser_ie, element, style_name, style_value, style_priority) {
    if (browser_ie) {
       style_object = element.runtimeStyle;
    } else  {
       style_object = element.style;
    }
	if(!style_object)  {  return false; }
	if (style_object.setProperty) {  // true in Firefox
		style_object.setProperty(style_name, style_value, style_priority);
    } else { 
        camel_style_name = camelize(style_name, false);
		style_object[camel_style_name] = style_value;
	}
}


// http://forums.aptana.com/viewtopic.php?f=33&t=8031
function camelize(str, capitalize){
        //begin edit
        str = str || " ";
        //end edit
        var parts = str.replace(/\_/g,'-').split('-'), len = parts.length;
        if (len == 1)
        {
            if(capitalize)
            {
                return parts[0].charAt(0).toUpperCase() + parts[0].substring(1);
            }
            else
            {
                return parts[0];
            }
        }
        if(str.charAt(0) == '-')
        {
            var camelized = parts[0].charAt(0).toUpperCase() + parts[0].substring(1);
        }
        else
        {
            var camelized = parts[0];
        }
        for (var i = 1; i < len; i++)
        {
            camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
        }
        if(capitalize)
        {
            return camelized.charAt(0).toUpperCase() + camelized.substring(1);
        }
        else
        {
            return camelized;
        }
}


// ------------------------------------------------------------------------
function getStyleObject(element_id) {
  // checkW3C DOM, then MSIE 4, then NN 4.
  if(document.getElementById && document.getElementById(element_id)) {
	return document.getElementById(element_id).style;
   }
   else if (document.all && document.all(element_id)) {  
	return document.all(element_id).style;
   } 
   else if (document.layers && document.layers[element_id]) { 
	return document.layers[element_id];
   } else {
	return false;
   }
}

function showDiv(div_id) {
   changeElementDisplay(div_id, 'block');
}
function hideDiv(div_id) {
   changeElementDisplay(div_id, 'none');
}

// ShowHideDiv. toggles the display value between '' and 'none' for the div with the id given.
// NOTE: We intentionally do not use "block" as a value for style.display, because Firefox doesn't support it
// when the element type is TR. 
function showHideDiv(div_id) {
    var style = getStyleObject(div_id);
    if (style) {
       curDisplayValue = style.display;
       if (curDisplayValue == '') {
		   nextDisplayValue = 'none';
	   } else {
		   nextDisplayValue = '';
       }
	   changeElementDisplay(div_id, nextDisplayValue);
	}
}


function changeElementDisplay(element_id, value) {
    var style = getStyleObject(element_id);
    if (style) {
       style.display = value;
	   return true;
    } else {
	// alert("Cannot find style for div with id = " + element_id);
	   return false;
    }
}

// ------------------------------------------------------------------------
// Cancel functions
// ------------------------------------------------------------------------
function CancelSubmitMode(frm){
   frm.mode.value = "cancel";
   return true;
}

// Same as above, but for pages which use "step" instead of "mode"
function CancelSubmitStep(frm){
   frm.step.value = "cancel";
   return true;
}

// Same as above, but for pages which use "action" instead of "mode"
function CancelSubmitAction(frm){
   frm.action.value = "cancel";
   return true;
}

// Same as above, but for pages which use "cancel" instead of "mode"
function CancelSubmitCancel(frm){
   frm.cancel.value = "cancel";
   return true;
}


// ------------------------------------------------------------------------
// All checkboxes whose names begin with starts_with get set or unset, depending on mode passed on
function checkBoxes(frm, mode, starts_with){
	for(i=0; i<frm.elements.length; i++){
		element = frm.elements[i];
     
		var rex = /^ + regexp + /;
		if (element.type == 'checkbox' && element.name.indexOf(starts_with) >=0)  {
		   switch(mode){
			   case "check" : element.checked = true; break;
			   case "uncheck" : element.checked = false; break;
			   case "reverse" : element.checked = !element.checked; break;
           }
		}
	}
}

 

// If you want to include more javascript from this file, do it like this:
// document.write('<script type="text/javascript" src="ccmod/javascript/foo.js"></script>');

