// Setup to unify global "onload" 

global_onload = Array();
function init() {
	for (var i in global_onload){
		global_onload[i]();
	}	
}
window.onload = init;
// To use do : global_onload.push("func_name");

function help_window(title, description, required) {
   //place in middle of screen...
   
    var x = 0;
    var y = 0;
    
    if (window.innerWidth != null) {
        x = window.innerWidth;
        y = window.innerHeight;
        x = x/2 - 200;
        y = y/2;

    }
    else { //better be IE
        //x = document.body.offsetWidth;
        //y = document.body.offsetHeight;
        
        x = 200;
        y = 200;
    }
    
    var win = window.open('', 'help_window', 'toolbar=no, width=400,height=300,location=no,menubar=no,left=' + x + ',top=' + y);
    win.document.write('<h2>' + title + '</h2>');
    win.document.write(description);
    
    if (required != '') {
        win.document.write('<br />Note: This field is required!');
    }
    win.document.write('<br />[ <a href="#" onClick="window.close();">close</a> ]');

    win.document.close();
    win.focus();
}

function getCascadedStyle(e, store) {
    if (store == undefined) {
        store = new Array();
    }   
    var value = '';
    
    if (e.tagName != 'BODY' && e.tagName != 'body') {
        store = getCascadedStyle(e.parentNode, store);
    }
    
    var rules;
    if (window.getComputedStyle) {
        rules = window.getComputedStyle(e,null);
    }
    else {
        rules = e.currentStyle;
    }
    for (var param in rules) {
        value = rules[param];
        if (typeof(value) != 'function' && value && value.length > 0) {
            store[param] = value;
        }
    }     
    return store;     
}




function newline(){
return "\n";
}
function quote(){
return '"';
}
function bracket(){
return "<";
}
function bslash(){
return "\\";
}








//global_onload.push(textAreasInit);

// Code to have max length textareas : http://cf-bill.blogspot.com/2005/05/unobtrusive-javascript-textarea.html
function textAreasInit(){
  var objs = document.getElementsByTagName("textarea");
  var oi = 0; //oi is object index
  var thisObj;

  for (oi=0;oi<objs.length;oi++) {
   thisObj = objs[oi];
   // note that maxlength is case sensitve
   if (thisObj.getAttribute('maxlength')){
    thisObj.onkeyup = forceMaxLength;
   }
   //thisObj.onchange = saveEntryValue;
  }
 }

 function forceMaxLength(){
  var maxlength = parseInt(this.getAttribute('maxlength'));
  if(this.value.length > maxlength){
   this.value = this.value.substring(0,maxlength);
  }
 }





// Date formatting functions for input name="date"
function date_sync_func(form_obj, changed_input, input_name) {
	var core_input = form_obj.elements[input_name];
	var month_input = form_obj.elements['month_' + input_name];
	var day_input = form_obj.elements['day_' + input_name];
	var year_input = form_obj.elements['year_' + input_name];
	
	//assume the values are already set...
	
	//get values....
	var month_value = '01'; //month_input.options[month_input.selectedIndex].value;
	var day_value = '01'; //day_input.options[day_input.selectedIndex].value;
	var year_value = '2005'; //year_input.options[year_input.selectedIndex].value;
	
	if (changed_input) {
		//this is coming from an on change therefore we need to re-sync everything.
		if (changed_input.name == 'month_' + input_name) {
			if (month_value == 1 || month_value == 3 || month_value == 5 || month_value == 7 || month_value 
== 8 || month_value == 10 || month_value == 12) {
				var day_op_len = day_input.options.length;
				if (day_op_len < 32) {
					var j;
					for (j = day_op_len; j < 32; j++) {
						day_input.options[j] = new Option(j,j);
					}
				}
			}
			else if (month_value == 2 ) {	
				if ((year_value % 4 == 0) && year_value != 0) {
					if (day_input.options.length < 30) {
						var day_op_len = day_input.options.length;
						var j;
						for (j = day_op_len; j < 30; j++) {
							day_input.options[j] = new Option(j,j);
						}
					}   
				}
				else {
					day_input.options.length = 29;
					day_input.options[1].selected = true;
				}
			}
			else {
				var day_op_len = day_input.options.length;
				if (day_op_len < 31) {
					var j;
					for (j = day_op_len; j < 31; j++) {
						day_input.options[j] = new Option(j,j);
					}
				}
			}
		}
		else if (changed_input.name == 'year_' + input_name) {
			// Adjust leap year for if February is Selected
			if (month_value == 2 ) {
				if ((year_value % 4 == 0) && year_value != 0) {
					if (day_input.options.length < 30) {
						var day_op_len = day_input.options.length;
						var j;
						for (j = day_op_len; j < 30; j++) {
							day_input.options[j] = new Option(j,j);
						}
					}   
				}
				else  { 
					day_input.options.length = 29;
					day_input.options[1].selected = true;
				}
			}
		}
	}
	
	//prepare the value for storeage
	/*if  (month_value = 0) {month_input.options[month_input.selectedIndex].value;
	var day_value = day_input.options[day_input.selectedIndex].value;
	*/
	
	/* Stuff for time...  { */
	var hour_value = form_obj.elements['hour_' + 
input_name].options[form_obj.elements['hour_' + input_name].selectedIndex].value;
	var minute_value = form_obj.elements['minute_' + input_name].options[form_obj.elements['minute_' + 
input_name].selectedIndex].value;
	
	//Include only if we are doing 12 hour date format...
	var ampm_value = form_obj.elements['ampm_' + input_name].options[form_obj.elements['ampm_' + 
input_name].selectedIndex].value;

	
    if (hour_value == 12 && ampm_value == 'am') {
		hour_value = '00';
	}
    else if (hour_value == 12 && ampm_value == 'pm') {
		hour_value = '12';
	}    
    else if (ampm_value == 'pm') {
		hour_value = (hour_value/1) + 12;
	}
	/*  } */
	
	form_obj.elements[input_name].value = year_value + '-' + month_value + '-' + day_value + ' ' + 
hour_value + ':' + minute_value + ':00';
}

