/**
 * Submits the form passed in, if a enter key press is detected
 */
function submitViaEnter(evt, formId) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var form = target.form;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13) 
    {
		$(formId).submit();
    }
    return true;
}

/**
 * Returns true is an enter key press is detected, false if not
 */
function isEnterPressed(evt) {
    evt = (evt) ? evt : event;
    var target = (evt.target) ? evt.target : evt.srcElement;
    var form = target.form;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13) 
    {
		return true;
    }
    return false;
}



/**
 * Shows the 'Flash requried info' in place of a Flash chart
 */
function showFlashRequiredInfo(div)
{
	$(div).innerHTML = "<div class=\"no_flash_warning\"><div><a target=\"_blank\" href=\"http://www.adobe.com/products/flashplayer/\"><img src=\"/img/noflash_chart.png\" alt=\"Flash Icon\"/></a></div>";
}


/**
 * Converts a string to title case
 */
function toTitleCase(str)
{
    return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}


/**
 * Function that should have been included in CakePHP
 * Submits a form via Ajax. The same code is output as an event listener by $ajax->form();
 */
 
function setSelectListToValue(value, selectId){
	var i, si, v, args=setSelectListToValue.arguments;
	if ((obj=document.getElementById(args[1])) != null){
		v = args[0];
		for(i=0; i<obj.length; i++){
			if(obj.options[i].value == v){
				si = i;
			}
		}
		obj.selectedIndex = si;
	}
} 
 
function ajaxSubmitForm(updateDiv, url, formId)
{
	//new Ajax.Updater('vehicle_list','/vehicle_emissions/addvehicle', {asynchronous:true, evalScripts:true, parameters:Form.serialize('AddVehicleForm'), requestHeaders:['X-Update', 'vehicle_list']
	
	new Ajax.Updater(updateDiv, url, 
		{asynchronous:true, evalScripts:true, parameters:Form.serialize(formId), requestHeaders:['X-Update', updateDiv]}
		)
}

var MAX_DUMP_DEPTH = 10;

function dumpObj(obj, name, indent, depth) {
       if (depth > MAX_DUMP_DEPTH) {
              return indent + name + ": <Maximum Depth Reached>\n";
       }
       if (typeof obj == "object") {
              var child = null;
              var output = indent + name + "\n";
              indent += "\t";
              for (var item in obj)
              {
                    try {
                           child = obj[item];
                    } catch (e) {
                           child = "<Unable to Evaluate>";
                    }
                    if (typeof child == "object") {
                           output += dumpObj(child, item, indent, depth + 1);
                    } else {
                           output += indent + item + ": " + child + "\n";
                    }
              }
              return output;
       } else {
              return obj;
       }
}