function getcon(label){var exp = new RegExp(label);var els = document.getElementsByTagName('td');var i;for (i = 0; i < els.length; i++){if ((typeof els[i].innerHTML != 'undefined') && els[i].innerHTML.match(exp)){return els[i+1];}}return null;}function getfields(obj){var o = (typeof obj == 'string')? getcon(obj): obj;if (o){var ls = o.getElementsByTagName('label');var labels = new Object();var j;for (j = 0; j < ls.length; j++){labels[ls[j].innerHTML] = document.getElementById(ls[j].htmlFor);}return labels;}return null;}function hide_fields(fields){var r = {};for (var f in fields){r[f] = document.createElement('input');r[f].id = fields[f].id;r[f].name = fields[f].name;r[f].value = fields[f].value;r[f].style.display = 'none';fields[f].parentNode.removeChild(fields[f]);document.forms[0].appendChild(r[f]);}return r;}function date_str(str){var d = str.split('/');if (d.length == 3){var r = {'month':d[0],'day':d[1],'year':d[2]};if (r.month < 13 && r.month > 0 &&r.day < 31 && r.day > 0 &&r.year > 2000 && r.year < 2100){return r;}}return false;}function init_value(o){o.value = o.parts['Month'].value+'/'+o.parts['Day'].value+'/'+o.parts['Year'].value;}function change_values(){this.date = date_str(this.value);if (this.date){this.parts['Day'].value = this.date.day;this.parts['Month'].value = this.date.month;this.parts['Year'].value = this.date.year;return true;}new_error('\''+this.id+'\' contains an invalid date.');return false;}function add_onload(n,f){var fn;if (typeof f == 'string'){fn = new Function(f);}else{fn = f;}window.onloadfns[n] = fn;}function magic_onload(){for (var f in window.onloadfns){window.onloadfns[f]();}return true;}function date_magic(label){var con = getcon(label);if (con != null){con.getElementsByTagName('table')[0].style.display = 'none';var df = document.createElement('input');df.type = 'text';df.id = label;df.parts = hide_fields(getfields(con));init_value(df);df.change_values = change_values;var dformat = document.createElement('small');dformat.innerHTML = ' dd/mm/yyyy';add_onload(label+'_load',function() {con.appendChild(df);con.appendChild(dformat);df.calendar = new Epoch(df.id+'_cal','popup',df);});return df;}}function new_error(msg){document.forms[0].magic_errors.push(msg);}function show_errors(){var err = document.forms[0].magic_errors;var msg = '';var i;for (i = 0; i < err.length; i++){msg += err[i]+'\n';}document.forms[0].magic_errors = new Array();alert('The following errors occurred:\n\n'+msg);}function process_submit(){var form = document.forms[0];for (f in form.magic_fields){form.magic_fields[f].change_values();}if (form.magic_errors.length > 0){show_errors();return false;}}function date_init(ls){var fields = new Object();var larr = ls.split(',');window.onloadfns = new Object();var i;for (i = 0; i < larr.length; i++){fields[larr[i]] = date_magic(larr[i]);}var form = document.forms[0];form.magic_fields = fields;form.magic_errors = new Array();form.onsubmit = process_submit;window.onload = magic_onload;return fields;}

