var bu_fixed = []; function bu_fixing(name) { bu_fixed[bu_fixed.length] = name; }
if (!Function.prototype.apply) { bu_fixing('Function.apply'); Function.prototype.apply = function bu_fix_apply(o,a) { var r; if(!o){ o = {}; } 
o.___apply=this; switch((a && a.length) || 0) { case 0: r = o.___apply(); break; case 1: r = o.___apply(a[0]); break; case 2: r = o.___apply(a[0],a[1]); break; case 3: r = o.___apply(a[0],a[1],a[2]); break; case 4: r = o.___apply(a[0],a[1],a[2],a[3]); break; case 5: r = o.___apply(a[0],a[1],a[2],a[3],a[4]); break; case 6: r = o.___apply(a[0],a[1],a[2],a[3],a[4],a[5]); break; default:
for(var i=0, s=""; i<a.length;i++){ if(i!=0){ s += ","; }
s += "a[" + i +"]"; }
r = eval("o.___apply(" + s + ")"); }
o.__apply = null; return r; } }
if (!Function.prototype.call) { bu_fixing('Function.call'); Function.prototype.call = function bu_fix_call(o) { var args = new Array(arguments.length - 1); for(var i=1;i<arguments.length;i++){ args[i - 1] = arguments[i]; }
return this.apply(o, args); } }
if (!Array.prototype.push) { bu_fixing('Array.push'); Array.prototype.push = function bu_fix_push() { for (var i = 0; i < arguments.length; i++){ this[this.length] = arguments[i]; }
return this.length; }; }
if (!Array.prototype.pop) { bu_fixing('Array.pop'); Array.prototype.pop = function bu_fix_pop() { if(this.length == 0){ try{ return undefined; }catch(e){ return null; } }
return this[this.length--]; } }
if (!Array.prototype.shift) { bu_fixing('Array.shift'); Array.prototype.shift = function bu_fix_shift() { this.reverse(); var lastv = this.pop(); this.reverse(); return lastv; } }
if (!Array.prototype.splice) { bu_fixing('Array.splice'); Array.prototype.splice = function bu_fix_splice(start, deleteCount) { var len = parseInt(this.length); start = start ? parseInt(start) : 0; start = (start < 0) ? Math.max(start+len,0) : Math.min(len,start); deleteCount = deleteCount ? parseInt(deleteCount) : 0; deleteCount = Math.min(Math.max(parseInt(deleteCount),0), len); var deleted = this.slice(start, start+deleteCount); var insertCount = Math.max(arguments.length - 2,0); var new_len = this.length + insertCount - deleteCount; var start_slide = start + insertCount; var nslide = len - start_slide; for(var i=new_len - 1;i>=start_slide;--i){ this[i] = this[i - nslide]; }
for(i=start;i<start+insertCount;++i){ this[i] = arguments[i-start+2]; }
return deleted; } }
if (!Array.prototype.unshift) { bu_fixing('Array.unshift'); Array.prototype.unshift = function bu_fix_unshift() { var a = [0,0]; for(var i=0;i<arguments.length;i++){ a.push(arguments[i]); }
var ret = this.splice.apply(a); return this.length; } }
var bu_jscript_version = null; if (typeof ScriptEngineMajorVersion == 'function') { bu_jscript_version = parseFloat(ScriptEngineMajorVersion() + '.' + ScriptEngineMinorVersion()); }
if((typeof Error == 'undefined')||(bu_jscript_version&&(bu_jscript_version < 5.5))){ bu_fixing('Error'); Error = function(msg) { if(!(this instanceof Error)){ return new Error(msg); }
this.message = msg || ''; return this; }; Error.prototype = new Object(); Error.prototype.name = 'Error'; Error.prototype.toString = function(){ return this.name + ': ' + this.message; }; }
if(typeof bu_loaded != 'undefined'){ bu_loaded('fix_ecma.js'); }
try{ if(window["__scripts__"]){ __scripts__.provide(__config__.corePath+"sigslot_core.js"); __scripts__.require(__config__.corePath+"fix_ecma.js"); } }catch(e){ window = this; }
__sig__ = new function(){ var sestr = "please pass the name of the function, not a pointer"; this.lock = false; this.squelchSlotExceptions = true; this.timeCalls = ((window["__config__"])&&(__config__.profileSigslot)) ? __config__.profileSigslot : false; this.timingData = []; var anonFuncId = 0; this.setAnonFunc = function(funcObj, funcCaller){ if(!funcCaller){ funcCaller = window; }
var fn = "NWanonFunc"+anonFuncId++; if(!funcCaller[fn]){ funcCaller[fn] = funcObj; return fn; }else{ return this.setAnonFunc(funcObj, funcCaller); } }
this.connectByName  = function(obj, funcName, trigObj, trigFuncName, onceOnly, defaultArgs, overRideArgs, mutators, finalMutator){ if(!obj){ obj = window; }
if(!trigObj){ trigObj = window; }
this.addBareSignalByName(trigObj, trigFuncName); var subs = this.addBareSignalByName(obj, funcName); if(onceOnly){ for(var i=subs.length-1; i>=0; i=i-1){ if((subs[i][0] === trigObj)&&(subs[i][1] == trigFuncName)){ return false; } } }
subs.push([trigObj, trigFuncName, defaultArgs, overRideArgs, mutators, finalMutator]); return true; }
this.connectOnceByName = function(o,f,to,tf) { return this.connectByName(o,f,to,tf,true); }
this.disconnectOnceByName = function(o,f,to,tf) { return this.disconnectAllByName(o,f,to,tf,true); }
this.disconnectAllByName = function(obj, funcName, trigObj, trigFuncName, onceOnly) { if(!obj){ obj = window; } 
var subs = obj[funcName + '__subscribers__']; if(!subs){ return 0; } 
if(!trigObj){ trigObj = window; } 
var count = 0; for(var i=subs.length-1;i>=0;i=i-1) { if ((subs[i][0] === trigObj)&&(subs[i][1] == trigFuncName)) { subs.splice(i, 1); count++; if(onceOnly){ break; } } }
return count; }
this.addBareSignalByName = function(obj, funcName) { if(!obj){ obj = window; }
var subname = funcName + '__subscribers__'; var subs = typeof obj[subname] == 'undefined' ? null : obj[subname]; if(subs){ return subs; }
var origname = funcName + '__orig__'; obj[origname] = obj[funcName] || function(){ return true; }; subs = obj[subname] = []; obj[funcName] = function(){ try{ if(typeof(__sig__) != 'undefined' && __sig__ != 'undefined' && __sig__.timeCalls){ if(!__sig__.timingData[funcName]){ __sig__.timingData[funcName] = []; }
var sl = __sig__.timingData[funcName].length; __sig__.timingData[funcName].push([new Date()]); }
if((!obj)||(!obj[origname])){ return; }
var ret = obj[origname].apply(obj, arguments); if(__sig__.timeCalls){ __sig__.timingData[funcName][sl].push(new Date()); }
if(__sig__.lock){ return ret; }
for(var i=0;i<subs.length;++i){ var na = []; var trigObj = subs[i][0]; var das = subs[i][2]; var oas = subs[i][3]; var mas = subs[i][4]; var fmas = subs[i][5]; if(das||oas||mas){ if(!das) das = new Array(); if(!oas) oas = new Array(); if(!mas) mas = new Array(); if(!arguments) arguments = new Array(); var tl = Math.max(das.length, oas.length, mas.length, arguments.length); for(var j=0; j<tl; j++){ if(((typeof na[j] == "undefined")&&(das[j]))||(oas[j])){ na[j]=oas[j]||das[j]; }else{ na[j]=arguments[j]; }
if(mas[j]){ na[j] = mas[j](na[j], na); } }
if(das.length>na.length){ na.length = das.length; } }else if(fmas){ for(var x=0; x<arguments.length; x++){ na.push(arguments[x]); } }else{ na = arguments; }
if(fmas){ na = fmas(na); }
try{ trigObj[subs[i][1]].apply(trigObj, na); }catch(e){ if(!__sig__.squelchSlotExceptions){ throw e; }
if(window["__log__"]){ __log__.exception(subs[i][1], e, true); } } }
if(__sig__.timeCalls){ __sig__.timingData[funcName][sl].push(new Date()); }
return ret; } catch(e) { } }; if(funcName.toLowerCase)
var lcfn = funcName.toLowerCase(); if((window["__env__"])&&(lcfn.slice(0, 2)=="on")&&(lcfn.slice(0,8)!="onunload")){ NW_attachEvent_list.push([obj, funcName, obj[funcName]]); NW_expando_list.push([obj, origname, obj[origname]]); NW_expando_props_obj.add(origname); NW_expando_props_obj.add(funcName); }
return subs; }
this.addBareSigByName = this.addBareSignalByName; this.disconnectByName = this.disconnectAllByName; this.disconnect = function(obj, funcName, trigObj, trigFuncName) { if((typeof funcName != "string")||(typeof trigFuncName != "string")){ throw new Error(sestr); }
return this.disconnectByName(obj, funcName, trigObj, trigFuncName, false); }
this.disconnectAll = this.disconnect; this.connect = function(obj, funcName, trigObj, trigFuncName, defaultArgs, overRideArgs, mutators, finalMutator){ if(arguments.length<4){ if(arguments.length == 2){ if(typeof funcName == "function"){ trigObj = window; trigFuncName = this.setAnonFunc(funcName); }else if(typeof funcName == "string"){ trigObj = window; trigFuncName = funcName; }else{ throw new Error("invalid arguments"); }
if(typeof obj == "function"){ funcName = this.setAnonFunc(obj); obj = window; }else if(typeof obj == "string"){ funcName = obj; obj = window; }else{ throw new Error("invalid arguments"); } }else if(arguments.length == 3){ if(typeof arguments[1] == "string"){ if(typeof trigObj == "function"){ trigFuncName = this.setAnonFunc(trigObj); }else{ trigFuncName = String(trigObj); }
trigObj = window; }else{ trigFuncName = String(trigObj); trigObj = funcName; if(typeof obj == "function"){ funcName = this.setAnonFunc(obj); }else{ funcName = String(obj); }
obj = window; } }else if(arguments.length == 1){ return this.kwConnect(arguments[0]); } }else if((typeof funcName != "string")||(typeof trigFuncName != "string")){ throw new Error(sestr); }
return this.connectByName(obj, funcName, trigObj, trigFuncName, false, defaultArgs, overRideArgs, mutators, finalMutator); }
this.kwConnect = function(ka){ return this.connectByName(	(ka["signalObj"]||ka["signalObject"]||window), ka.signalName,
(ka["slotObj"]||ka["slotObject"]||window), ka.slotName,
ka["once"], ka["defaults"], ka["overRides"],
ka["mutators"], (ka["finalMutator"]||ka["mutator"])); } }
try{ if(window["__scripts__"]){ __scripts__.finalize(__config__.corePath+"sigslot_core.js"); } }catch(e){ }function AjaxRequest (url, target_obj, target_func, data, method){ var url; var target_obj; var target_func; var method; var data; var form; var passback; this.url = url; this.target_obj = target_obj; this.target_func = target_func; this.method = (method ? method : "GET"); this.data = data; this.form = null; this.passback = null; }
function AjaxQueue(){ var _httpreq; var _queue; var _current_request; var _init; var _makeRequest; var _processRequest; var _nextRequest; var parseFormData; var addRequest; var debug_mode; this.debug_mode = false; __sig__.connectByName(document.body, 'onunload', this, 'pageUnload'); this._init = function(){ this._queue = new Array(); }; this._nextRequest = function(){ if(!this._current_request && this._queue.length){ var next_req = this._queue.shift(); this._makeRequest(next_req); } }; this._makeRequest = function(request){ this._current_request = request; if(!request.data) request.data = null; if(!request.method) request.method = "GET"; if(request.form){ var form_data = this.parseFormData(request.form); if(request.data){ request.data = request.data + '&' + form_data; }
else{ request.data = form_data; } }
if(request.method == "GET"){ if(request.data)
request.url = request.url + "?" + request.data; request.data = null; }
if(window.XMLHttpRequest){ this._httpreq = new XMLHttpRequest(); }
else{ this._httpreq = new ActiveXObject("Msxml2.XMLHTTP"); if(!this._httpreq)
this._httpreq = new ActiveXObject("Microsoft.XMLHTTP"); }
if(!this._httpreq){ return false; }
var obj = this; this._httpreq.onreadystatechange = function(){ obj._processRequest(); }; this._httpreq.open(request.method, request.url, true); if(request.method == "POST")
this._httpreq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;'); this._httpreq.send(request.data); if($('working_status_box')){ $('working_status_box').style.display = ''; }
if(this.debug_mode && $('DEBUG_BOX')){ var debug = document.getElementById('DEBUG_BOX'); debug.innerHTML = debug.innerHTML + 'Ajax Requesting: ' + request.url + '<br>'; if(request.data)
debug.innerHTML = debug.innerHTML + ' with POST DATA: ' + request.data + '<br>'; } }; this.parseFormData = function(form_elem){ var data = ""; for(i = 0; i < form_elem.elements.length; i++){ var elem = form_elem.elements[i]; if(elem.name && elem.value){ data = data + escape(elem.name) + "=" + escape(elem.value); if(i < (form_elem.elements.length - 1)){ data = data + "&"; } } }
return data; }; this._processRequest = function(){ try{ if (this._httpreq.readyState == 4){ if (this._httpreq.status == 200){ var req = this._current_request; if(this._current_request.target_obj || this._current_request.target_func){ if(this._current_request.target_obj && this._current_request.target_func){ if(this._current_request.passback)
this._current_request.target_func.apply(this._current_request.target_obj, [this._httpreq, this._current_request.passback]); else
this._current_request.target_func.apply(this._current_request.target_obj, [this._httpreq]); }
else if(this._current_request.target_obj){ if(this._current_request.passback){ this._current_request.target_obj.handleXMLResponse(this._httpreq, this._current_request.passback); }
else { this._current_request.target_obj.handleXMLResponse(this._httpreq); } }
else if(this._current_request.target_func){ if(this._current_request.passback)
this._current_request.target_func(this._httpreq, this._current_request.passback); else
this._current_request.target_func(this._httpreq); }
if(this.debug_mode && $('DEBUG_BOX')){ var debug = document.getElementById('DEBUG_BOX'); debug.innerHTML = debug.innerHTML + 'Ajax Request Complete: ' + this._current_request.url + '<br>'; } }
else{ if(this.debug_mode && $('DEBUG_BOX')){ var debug = document.getElementById('DEBUG_BOX'); debug.innerHTML = debug.innerHTML + 'Ajax Request Complete: ' + this._current_request.url + ' with NULL target<br>'; } } }
else{ }
if($('working_status_box')){ $('working_status_box').style.display = 'none'; }
this._current_request = null; this._nextRequest(); } }
catch(e){ } }; this.addRequest = function(req_obj){ this._queue.push(req_obj); this._nextRequest(); }; this.pageUnload = function(){ if(this._httpreq && (this._httpreq.readyState != 4 && this._httpreq.readyState != 0)){ this._httpreq.abort(); } }; this._init(); }
function AjaxController() { var queues; var max_queues; var debug_mode; this.queues = new Array(); this.debug_mode = false; this.setMaxQueues = function(max_qs){ this.max_queues = max_qs; while(this.max_queues > this.queues.length){ var a = new AjaxQueue(); a.debug_mode = true; this.queues.push(a); } }; this.addRequest = function(req_obj){ var shortest_q = 0; var found_unbusy = false; if(this.queues.length > this.max_queues){ var q_count = this.max_queues; }
else{ var q_count = this.queues.length; }
for(var i = 0; i < this.queues.length; ++i){ if(!this.queues[i]._current_request){ found_unbusy = true; shortest_q = i; break; } }
if(!found_unbusy){ for(var i = 0; i < this.queues.length; ++i){ if((this.queues[i]._queue.length) < this.queues[shortest_q]._queue.length){ shortest_q = i; } } }
if($('DEBUG_BOX')){ $('DEBUG_BOX').innerHTML = $('DEBUG_BOX').innerHTML + 'Adding to queue ' + (shortest_q + 1) + ' of ' + this.queues.length + '<br>'; }
this.queues[shortest_q].addRequest(req_obj); }
this.setMaxQueues(1); }; var ajax = new AjaxController(); function getRootNode(xml_tree){ if(xml_tree && xml_tree.childNodes){ if(xml_tree.childNodes.length == 2){ return xml_tree.childNodes[1]; }
else{ return xml_tree.childNodes[0]; } } }if(Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }; }; if (Array.prototype.shift == null) { Array.prototype.shift = function() { var response = this[0]; for (var i=0; i < this.length-1; i++) { this[i] = this[i + 1]; }; this.length--; return response; }; }; if (!Function.prototype.apply) { Function.prototype.apply = function(oScope, args) { var sarg = []; var rtrn, call; if (!oScope) oScope = window; if (!args) args = []; for (var i = 0; i < args.length; i++) { sarg[i] = "args["+i+"]";}; call = "oScope.__applyTemp__(" + sarg.join(",") + ");"; oScope.__applyTemp__ = this; rtrn = eval(call); oScope.__applyTemp__ = null; return rtrn;};}; function inArray(needle) { for (var i=0; i < this.length; i++) { if (this[i] === needle) { return i; } } return false; } Array.prototype.inArray = inArray; function isArray() { return (typeof(this.length)=="undefined") ? false : true; }; Array.prototype.isArray = isArray; function ksort() { var sArr = []; var tArr = []; var n = 0; for (i in this) tArr[n++] = i+"|"+this[i]; tArr = tArr.sort(); for (var i=0; i<tArr.length; i++) { var x = tArr[i].split("|"); sArr[x[0]] = x[1]; } return sArr; } Array.prototype.ksort = ksort; function lastChildContainingText() { var testChild = this.lastChild; var contentCntnr = ['p','li','dd']; while (testChild.nodeType != 1) { testChild = testChild.previousSibling; }  var tag = testChild.tagName.toLowerCase(); var tagInArr = inArray.apply(contentCntnr, [tag]); if (!tagInArr && tagInArr!==0) { testChild = lastChildContainingText.apply(testChild); } return testChild; } Object.prototype.lastChildContainingText = lastChildContainingText; function trim(str){return str.replace(/^\s*|\s*$/g,"");}
function findPosX(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft
obj = obj.offsetParent; } }
else if (obj.x)
curleft += obj.x; return curleft; }
function findPosY(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop
obj = obj.offsetParent; } }
else if (obj.y)
curtop += obj.y; return curtop; }
function insertAfter(new_element, curr_element){ if(curr_element.nextSibling){ return curr_element.parentNode.insertBefore(new_element, curr_element.nextSibling); }
else{ return curr_element.parentNode.appendChild(new_element); } }
function emptyElement(element){ if(element && element.childNodes){ while(element.childNodes.length){ element.removeChild(element.childNodes[0]); } } }
function hasClass(element, class_name){ if(element && element.className && element.className.length){ var parts = element.className.split(' '); var found = false; for(var i = 0; i < parts.length; ++i){ if(parts[i] == class_name){ found = true; break; } }
return found; }
else{ return false; } }
function addClass(element, class_name){ var debug = document.getElementById('DEBUG_BOX'); if(element && element.className && element.className.length){ var parts = element.className.split(' '); if(!hasClass(element, class_name)){ parts[parts.length] = class_name; }
element.className = parts.join(' '); }
else if(element){ element.className = class_name; } }
function removeClass(element, class_name){ if(element && element.className && element.className.length){ var parts = element.className.split(' '); var new_parts = new Array(); for(var i = 0; i < parts.length; ++i){ if(parts[i] != class_name)
new_parts[new_parts.length] = parts[i]; }
element.className = new_parts.join(' '); } }
function $(key){ return document.getElementById(key); }
if(window.attachEvent){ try{ function correctPNG()  { for(var i=0; i<document.images.length; i++) { var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == "PNG") { var imgID = (img.id) ? "id='" + img.id + "' " : ""
var imgClass = (img.className) ? "class='" + img.className + "' " : ""
var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
var imgStyle = "display:inline-block;" + img.style.cssText
if (img.align == "left") imgStyle = "float:left;" + imgStyle
if (img.align == "right") imgStyle = "float:right;" + imgStyle
if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
img.outerHTML = strNewHTML
i = i-1 } } }
window.attachEvent("onload", correctPNG); } catch (e) { } }
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY; var mouseX = 0
var mouseY = 0
function getMouseXY(e) { var tempX = 0; var tempY = 0; if (IE) { tempX = event.clientX + document.body.scrollLeft
tempY = event.clientY + document.body.scrollTop } else { tempX = e.pageX
tempY = e.pageY }
if (tempX < 0){tempX = 0}
if (tempY < 0){tempY = 0}
mouseX = tempX; mouseY = tempY; return true }
function getFormElementByName(form, name){ if(form && form.elements){ for(var i = 0; i < form.elements.length; ++i){ if(form.elements[i].name && (form.elements[i].name.toUpperCase() == name.toUpperCase())){ return form.elements[i]; } } }
return false; }var AUTOCOMPLETE_URL = undefined; function AutoComplete(element){ var element; var complete_key; var queue; var results; var results_div; var current_key; var hilited_result; var start_text; var ac_url; var hover_element; var multiword_mode; this.element = element; this.complete_key = element.getAttribute('autocomplete_key'); this.element.setAttribute('autocomplete', 'off'); this.queue = new AjaxQueue(); this.queue.debug_mode = true; this.results = new Array(); this.current_key = false; this.hilited_result = null; this.start_text = null; this.hover_element = null; this.multiword_mode = false; if(this.element.getAttribute('autocomplete_url')){ this.ac_url = this.element.getAttribute('autocomplete_url'); }
else if(typeof ( AUTOCOMPLETE_URL ) != "undefined" ){ this.ac_url = AUTOCOMPLETE_URL; }
else{ this.ac_url = '/autocomplete.php'; }
addClass(this.element, 'autocomplete_field'); this.results_div = document.createElement('div'); addClass(this.results_div, 'autocomplete_results')
this.results_div.style.position = 'absolute'; this.results_div.style.top = findPosY(this.element) + this.element.offsetHeight; this.results_div.style.left = findPosX(this.element); this.results_div.style.width = this.element.offsetWidth - 2; this.hilited_result = null; this.hideResults(); document.body.appendChild(this.results_div); __sig__.connectOnceByName(this.element, 'onblur', this, 'onblur'); __sig__.connectOnceByName(this.element, 'onkeyup', this, 'keypress'); }
AutoComplete.prototype.onblur = function(e){ try{ if( this.hover_element ){ }
else{ this.hideResults(); } } catch (error) { alert(error); } }; AutoComplete.prototype.hideResults = function(){ this.results_div.style.display = 'none'; this.hilited_result = null; }; AutoComplete.prototype.showResults = function(){ var s = this.getSearchString(); if(this.results[s] && (s != this.current_key) ){ this.results_div.innerHTML = ''; this.current_key = s; var r_list = this.results[s]; for(var i = 0; i < r_list.length; ++i){ var div = document.createElement('div'); div.appendChild(document.createTextNode(r_list[i][1])); div.setAttribute('record_id', r_list[i][0]); this.results_div.appendChild(div); __sig__.connectByName(div, 'onclick', this, 'clickOption', true, [div, r_list[i][2]]); __sig__.connectByName(div, 'onmouseover', this, 'optionMouseOver', true, [div]); __sig__.connectByName(div, 'onmouseout', this, 'optionMouseOut', true, [div]); }
if(r_list.length){ this.results_div.style.display = ''; }
else{ this.hideResults(); } } }; AutoComplete.prototype.keypress = function(e){ if(!e){e = window.event;}
if(e.keyCode == 38 || e.keyCode == 40){ if(this.results_div.childNodes.length){ if(e.keyCode == 38){ if(this.hilited_result > 0){ this.hilited_result--; }
else if(this.hilited_result == 0){ this.hilited_result = null; this.element.value = this.start_text; } }
else{ if(this.hilited_result == null){ this.hilited_result = 0; this.start_text = this.element.value; }
else{ if(this.hilited_result < this.results_div.childNodes.length -1)
this.hilited_result++; } }
for(var i = 0; i < this.results_div.childNodes.length; ++i){ removeClass(this.results_div.childNodes[i], 'hilited'); }
if(this.hilited_result != null){ addClass(this.results_div.childNodes[this.hilited_result], 'hilited'); this.acceptOption(this.results_div.childNodes[this.hilited_result]); } }
else{ this.hilited_result = null; } }
else if(e.keyCode == 13){ if(this.hilited_result != null){ this.hideResults(); e.cancelBubble = true; e.stopPropagation(); } }
else if(this.element.value){ var s = this.getSearchString(); if(this.results[s]){ this.showResults(); }
else{ this.queue._queue = new Array(); var req = new AjaxRequest(this.ac_url + '?key=' + escape(this.complete_key) + '&s=' + s, this, this.parseList); req.passback = s; this.queue.addRequest(req); }
this.hilited_result = null; }
else{ this.current_key = ''; this.hideResults(); } }; AutoComplete.prototype.getSearchString = function(){ if(this.multiword_mode){ if(this.element.value.indexOf(' ') >= 0 && this.element.value.length > this.element.value.lastIndexOf(' ')+1){ var s = this.element.value.substr(this.element.value.lastIndexOf(' ')+1); }
else{ var s = trim(this.element.value); } }
else{ var s = this.element.value; }
s = escape(s); if(this.element.getAttribute('autocomplete_extra_fields')){ var xtra_fields = this.element.getAttribute('autocomplete_extra_fields').split(' '); var xtra_data = ''; for(var i = 0; i < xtra_fields.length; ++i){ xtra_data = xtra_data + '&' + escape(xtra_fields[i]) + '='; var form_field = getFormElementByName(this.element.form, xtra_fields[i]); if(form_field)
xtra_data = xtra_data + escape(form_field.value); } }
else{ var xtra_data = ''; }
return s + xtra_data; }; AutoComplete.prototype.parseList = function(xml, search_string){ try{ xml = getRootNode(xml.responseXML); var key = xml.getAttribute('search'); var list = new Array(); for(var i = 0; i < xml.childNodes.length; ++i){ if(xml.childNodes[i].nodeName == 'result'){ var populate = new Array(); if(xml.childNodes[i].childNodes.length){ for(var c = 0; c < xml.childNodes[i].childNodes.length; ++c){ var pop_item = xml.childNodes[i].childNodes[c]; if(pop_item.nodeName == 'populate'){ populate.push([pop_item.getAttribute('key'), pop_item.getAttribute('value')]); } } }
list.push([xml.childNodes[i].getAttribute('id'), xml.childNodes[i].getAttribute('text'), populate]); } }
this.results[search_string] = list; if(this.getSearchString() == search_string){ this.showResults(); } } catch(e){ alert(e); } }; AutoComplete.prototype.acceptOption = function(element){ if(this.multiword_mode){ var p = this.element.value.split(' '); p[p.length-1] = element.firstChild.data; this.element.value = p.join(' '); }
else{ this.element.value = element.firstChild.data; } }; AutoComplete.prototype.populateOption = function(populate_array){ try{ if(populate_array){ for(var i = 0; i < populate_array.length; ++i){ var element = getFormElementByName(this.element.form, populate_array[i][0]); if(element){ element.value = populate_array[i][1]; } } } }catch(e){alert(e);} }; AutoComplete.prototype.clickOption = function(element, populate){ this.acceptOption(element); this.populateOption(populate); this.hideResults(); this.element.focus(); }; AutoComplete.prototype.optionMouseOver = function(element){ this.hover_element = element; addClass(element, 'hover') }; AutoComplete.prototype.optionMouseOut = function(element){ this.hover_element = null; removeClass(element, 'hover'); };function SAction_CollapsableSection(element){ var element; var header_div; var button; var open; this.element = element; this.header_div = null; this.open = null; this.button = null; this.applyAction(); }
SAction_CollapsableSection.prototype.applyAction = function(){ for(var i = 0; i < this.element.childNodes.length; ++i){ if(hasClass(this.element.childNodes[i], 'header')){ this.header_div = this.element.childNodes[i]; break; } }
if(!this.header_div){ this.header_div = docment.createElement('div'); this.element(insertBefore(this.header_div, this.element.firstChild)); addClass(this.header_div, 'header'); }
if(hasClass(this.element, 'open')){ this.open = true; }
else if(hasClass(this.element, 'closed')){ this.open = false; }
else{ this.open = true; addClass(this.element, 'open'); }
var button = document.createElement('button'); button.setAttribute('type', 'button'); this.header_div.insertBefore(button, this.header_div.firstChild); addClass(button, 'collapser'); button.appendChild(document.createTextNode(' ')); __sig__.connectOnceByName(button, 'onclick', this, 'buttonClick'); this.button = button; }; SAction_CollapsableSection.prototype.buttonClick = function(){ if(this.open){ this.open = false; removeClass(this.element, 'open'); addClass(this.element, 'closed'); }
else{ this.open = true; removeClass(this.element, 'closed'); addClass(this.element, 'open'); }
this.button.blur(); };function SAction_DateInput(element, date_mode, time_mode, pulldowns){ var element; var popup_button; var cal_div; var display_span; var pulldown_span; var cal_obj; var date_mode; var time_mode
var current_date; var year_select; var month_select; var day_select; var hour_select; var minute_select; var am_pm_select; var int_mode; var sql_mode; var use_pulldowns; var month_names; this.month_names = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July' ,'August', 'September', 'October', 'November', 'December']; var month_lengths; this.month_lengths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if(date_mode || time_mode){ this.date_mode = date_mode ? true : false; this.time_mode = time_mode ? true : false; }
else{ this.date_mode = true; this.date_mode = false; }
this.use_pulldowns = pulldowns; this.element = element; if(this.element.getAttribute('mode') == 'int')
this.int_mode = true; else
this.int_mode = false; if(this.element.getAttribute('mode') == 'sql')
this.sql_mode = true; else
this.sql_mode = false; var v = this.element.getAttribute('value'); if(v && v.match(/^[\d]{4}\-[\d]{2}\-[\d]{2} [\d]{2}\:[\d]{2}\:[\d]{2}$/)){ this.sql_mode = true; this.current_date = new Date(parseInt(v.substring(0,4), 10), parseInt(v.substring(5, 7), 10)-1, parseInt(v.substring(8, 10), 10), parseInt(v.substring(11,13), 10), parseInt(v.substring(14,16), 10), 0); }
else if(v && v.match(/^[\d]{4}\-[\d]{2}\-[\d]{2}$/)){ this.sql_mode = true; this.current_date = new Date(parseInt(v.substring(0,4), 10), parseInt(v.substring(5, 7), 10)-1, parseInt(v.substring(8, 10), 10), 0, 0, 0); }
else if(parseInt(v)){ this.current_date = new Date(parseInt(v) * 1000); this.int_mode = true; }
else if(this.element.getAttribute('value')){ this.current_date = new Date(v); }
else{ this.current_date = new Date(); this.int_mode = false; }
this.wrapper_span = document.createElement('span'); this.wrapper_span.style.position = 'relative'; this.wrapper_span.style.width = '205px'; element.parentNode.insertBefore(this.wrapper_span, this.element); addClass(this.wrapper_span, 'dateinput'); this.display_span = document.createElement('span'); this.wrapper_span.appendChild(this.display_span); addClass(this.display_span, 'dateinput_display')
this.display_span.appendChild(document.createTextNode(' ')); this.pulldown_span = document.createElement('span'); this.wrapper_span.appendChild(this.pulldown_span); addClass(this.pulldown_span, 'screen_only'); if(this.use_pulldowns){ this.setupCalendarPulldowns(this.pulldown_span); addClass(this.display_span, 'print_only'); }
addClass(this.element, 'hidden'); this.popup_button = document.createElement('button'); this.popup_button.setAttribute('type', 'button'); this.popup_button.setAttribute('title', 'Click here to open the date chooser'); addClass(this.popup_button, 'screen_only'); addClass(this.popup_button, 'calendar_button'); if(element.getAttribute('icon')){ var img = this.popup_button.appendChild(document.createElement('img')); img.src= element.getAttribute('icon'); }
else if(element.getAttribute('button_text'))
this.popup_button.appendChild(document.createTextNode(element.getAttribute('button_text'))); else
this.popup_button.appendChild(document.createTextNode('...')); this.wrapper_span.appendChild(this.popup_button); __sig__.connectOnceByName(this.popup_button, 'onclick', this, 'popup'); __sig__.connectOnceByName(this.popup_button, 'onblur', this, 'popupBlur'); this.cal_div = document.createElement('div'); this.cal_div.style.position = 'absolute'; this.cal_div.style.top = findPosY(this.popup_button) + this.popup_button.offsetHeight; this.cal_div.style.left = findPosX(this.popup_button); this.cal_div.style.width = '100px'; addClass(this.cal_div, 'hidden'); document.body.appendChild(this.cal_div); this.cal_obj = new PopupCalendar(this.cal_div, this.current_date); this.updateInputElement(); __sig__.connectOnceByName(this.cal_div, 'onmouseover', this, 'popupHover'); __sig__.connectOnceByName(this.cal_div, 'onmouseout', this, 'popupOut'); __sig__.connectOnceByName(this.cal_obj, 'set', this, 'popupClick'); }
SAction_DateInput.prototype.resetCalendarPulldowns = function(element){ emptyElement(element); this.setupCalendarPulldowns(element); }; SAction_DateInput.prototype.setupCalendarPulldowns = function(element){ var curdate = this.current_date; if(this.date_mode){ this.month_select = element.appendChild(document.createElement('select')); for(var i = 1; i <= 12; ++i){ var op = this.month_select.appendChild(document.createElement('option')); op.value=i; op.appendChild(document.createTextNode(this.month_names[i])); }
this.month_select.selectedIndex = curdate.getMonth(); __sig__.connectOnceByName(this.month_select, 'onchange', this, 'updateDaySelect'); this.day_select = element.appendChild(document.createElement('select')); this.year_select = element.appendChild(document.createElement('select')); for(var i = curdate.getFullYear(); i < curdate.getFullYear() + 5; ++i){ var op = this.year_select.appendChild(document.createElement('option')); op.value= i; op.appendChild(document.createTextNode(i)); }
__sig__.connectOnceByName(this.year_select, 'onchange', this, 'updateDaySelect'); this.updateDaySelect(); this.day_select.selectedIndex = curdate.getDate() - 1; __sig__.connectOnceByName(this.year_select, 'onchange', this, 'pulldownChange'); __sig__.connectOnceByName(this.month_select, 'onchange', this, 'pulldownChange'); __sig__.connectOnceByName(this.day_select, 'onchange', this, 'pulldownChange'); }
if(this.time_mode){ element.appendChild(document.createTextNode(' Time: ')); this.hour_select = element.appendChild(document.createElement('select')); for(var i = 1; i <= 12; ++i){ var op = this.hour_select.appendChild(document.createElement('option')); op.value=i; op.appendChild(document.createTextNode(i > 9 ? i : '0' + i)); }
this.hour_select.selectedIndex = ((curdate.getHours() % 12) -1) >= 0 ? ((curdate.getHours() % 12) -1) : 11; element.appendChild(document.createTextNode(':')); this.minute_select = element.appendChild(document.createElement('select')); for(var i = 0; i <= 59; ++i){ var op = this.minute_select.appendChild(document.createElement('option')); op.value=i; op.appendChild(document.createTextNode(i > 9 ? i : '0' + i)); }
this.minute_select.selectedIndex = curdate.getMinutes(); this.am_pm_select = element.appendChild(document.createElement('select')); var op = this.am_pm_select.appendChild(document.createElement('option')); op.value='0'; op.appendChild(document.createTextNode('am')); var op = this.am_pm_select.appendChild(document.createElement('option')); op.value='1'; op.appendChild(document.createTextNode('pm')); this.am_pm_select.selectedIndex = curdate.getHours() > 11 ? 1 : 0; __sig__.connectOnceByName(this.hour_select, 'onchange', this, 'pulldownChange'); __sig__.connectOnceByName(this.minute_select, 'onchange', this, 'pulldownChange'); __sig__.connectOnceByName(this.am_pm_select, 'onchange', this, 'pulldownChange'); }
this.updateInputElement(); }; SAction_DateInput.prototype.updateDaySelect = function(){ var year = parseInt(this.year_select.value); if ( (this.month_select.value == 2) && ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) { var month_length = 29; }
else{ var month_length = this.month_lengths[this.month_select.value]; }
if(this.day_select.options.length > month_length){ for(var i = this.day_select.options.length-1; i >= 0; --i){ if(parseInt(this.day_select.options[i].value) > month_length){ this.day_select.remove(i); }
else{ break; } } }
if(this.day_select.options.length < month_length){ for(var i = this.day_select.options.length + 1; i <= month_length; ++i){ var op = this.day_select.appendChild(document.createElement('option')); op.value=i; op.appendChild(document.createTextNode(i)); } } }; SAction_DateInput.prototype.pulldownChange = function(){ try{ if(this.date_mode){ var year = parseInt(this.year_select.value) + 1900; var month = parseInt(this.month_select.value - 1); var month_string = this.month_names[month]; var day = parseInt(this.day_select.value); }
else{ var year = 0; var month = 0; var month_string = ''; var day = 0; }
if(this.time_mode){ var hour = parseInt(this.hour_select.value) + (parseInt(this.am_pm_select.value) * 12); var minute = parseInt(this.minute_select.value); var minute_string = minute > 9 ? minute : '0' + minute; }
else{ var hour = 0; var minute = 0; var minute_string = '00'; }
if(hour == 12){ hour = 0; }
if(hour == 24){ hour = 12; }
this.current_date = new Date(year, month, day, hour, minute, 00); this.updateInputElement(); } catch(e) { alert(e); } }; SAction_DateInput.prototype.updateInputElement = function(){ try{ if(this.date_mode){ var year = this.current_date.getFullYear(); var month = this.current_date.getMonth() + 1; var month_string = this.month_names[month]; var day = this.current_date.getDate(); }
else{ var year = 0; var month = 0; var month_string = ''; var day = 0; }
if(this.time_mode){ var hour = this.current_date.getHours(); var minute = this.current_date.getMinutes(); var minute_string = minute > 9 ? minute : '0' + minute; }
else{ var hour = 0; var minute = 0; var minute_string = '00'; }
var s = ''; if(this.date_mode) s = s + month_string + ' ' + day + ', ' + year; if(this.date_mode && this.time_mode) s = s + ' '; if(this.time_mode) s = s + + hour + ':' + minute_string + ':00'; if(this.int_mode){ var date = new Date(year, month, day, hour, minute, 00); this.element.value = date.getTime() / 1000; }
else if(this.sql_mode){ this.element.value =  (year > 999 ? year : '000' + year) + '-' + (month > 9 ? month : '0' + month) + '-' + (day > 9 ? day : '0' + day) + ' ' + (hour > 9 ? hour : '0' + hour) + ':' + minute_string + ':00'; }
else{ this.element.value =  s; }
if(!this.display_span.childNodes.length){ this.display_span.appendChild(document.createTextNode(s)); }
else{ this.display_span.firstChild.data = s; } } catch(e) { alert(e); } }; SAction_DateInput.prototype.popup = function(){ if(hasClass(this.cal_div, 'hidden')){ this.cal_obj.drawCalendar(this.current_date); removeClass(this.cal_div, 'hidden'); }
else
addClass(this.cal_div, 'hidden'); }; SAction_DateInput.prototype.popupBlur = function(){ if(!this.popup_hover)
addClass(this.cal_div, 'hidden'); }; SAction_DateInput.prototype.popupHover = function(){ this.popup_hover = true; }; SAction_DateInput.prototype.popupOut = function(){ this.popup_hover = false; }; SAction_DateInput.prototype.popupClick = function(){ var d = this.cal_obj.date; this.current_date.setYear(d.getFullYear()); this.current_date.setMonth(d.getMonth()); this.current_date.setDate(d.getDate()); this.updateInputElement(); if(this.use_pulldowns)
this.resetCalendarPulldowns(this.pulldown_span); addClass(this.cal_div, 'hidden') }; function daysInMonth (date_obj){ var month_lengths = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; var year = date_obj.getFullYear(); var month = date_obj.getMonth() + 1; if ( month == 2 && (( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0)) ) { var month_length = 29; }
else{ var month_length = month_lengths[month]; }
return month_length; }
function PopupCalendar(element, date_obj){ var element; var date; var cal_table; var month_names; this.month_names = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July' ,'August', 'September', 'October', 'November', 'December']; this.element = element; if(date_obj){ this.date = date_obj; }
else{ this.date = new Date(); } }
PopupCalendar.prototype.drawCalendar = function(date_obj){ try{ var table = document.createElement('table'); var date = new Date(date_obj.getTime()); date.setDate(1); var month_start_dow = date.getDay(); var month_length = daysInMonth(date); var last_month = new Date(date.getTime()); last_month.setMonth(date.getMonth() > 0 ? date.getMonth()-1 : 11); last_month.setYear(date.getMonth() > 0 ? date.getFullYear() : date.getFullYear() - 1); last_month_length = daysInMonth(last_month); var next_month = new Date(date.getTime()); next_month.setMonth(date.getMonth() < 12 ? date.getMonth() + 1: 0); next_month.setYear(date.getMonth() < 11 ? date.getFullYear() : date.getFullYear() + 1); next_month_length = daysInMonth(next_month); var last_year = new Date(date.getTime()); last_year.setYear(date.getFullYear()-1); var next_year = new Date(date.getTime()); next_year.setYear(date.getFullYear()+1); var year_row = table.insertRow(0); var back_cell = year_row.insertCell(0); back_cell.appendChild(document.createTextNode('<')); var txt_cell = year_row.insertCell(1); txt_cell.colSpan = 5; txt_cell.appendChild(document.createTextNode(date.getFullYear())); var fwd_cell = year_row.insertCell(2); fwd_cell.appendChild(document.createTextNode('>')); addClass(txt_cell, 'header'); addClass(back_cell, 'clickable'); addClass(fwd_cell, 'clickable'); __sig__.connectByName(back_cell, 'onclick', this, 'drawCalendar', true, [last_year]); __sig__.connectByName( fwd_cell, 'onclick', this, 'drawCalendar', true, [next_year]); var month_row = table.insertRow(1); var back_cell = month_row.insertCell(0); back_cell.appendChild(document.createTextNode('<')); var txt_cell = month_row.insertCell(1); txt_cell.colSpan = 5; txt_cell.appendChild(document.createTextNode(this.month_names[date.getMonth()+1])); var fwd_cell = month_row.insertCell(2); fwd_cell.appendChild(document.createTextNode('>')); addClass(back_cell, 'clickable'); addClass(fwd_cell, 'clickable'); addClass(txt_cell, 'header'); __sig__.connectByName(back_cell, 'onclick', this, 'drawCalendar', true, [last_month]); __sig__.connectByName( fwd_cell, 'onclick', this, 'drawCalendar', true, [next_month]); var col_num = 0; for(var i = 1; i <= month_length; ++i){ if(col_num == 0){ var row = table.insertRow(table.rows.length); }
if(i == 1 && month_start_dow != 0){ for(j = (last_month_length - (month_start_dow - 1)); j <= last_month_length; ++j){ var d = new Date(last_month.getTime()); d.setDate(j); var cell = this.appendToRow(row, d); addClass(cell, 'other_month'); ++col_num; } }
var d = new Date(date.getTime()); d.setDate(i); var cell = this.appendToRow(row, d); for(j = 1; i == month_length && col_num < 6; ++j){ col_num++; var d = new Date(next_month.getTime()); d.setDate(j)
var cell = this.appendToRow(row, d); addClass(cell, 'other_month'); }
if(++col_num > 6){ col_num = 0; } }
if(this.cal_table)
this.element.replaceChild(table, this.cal_table); else
this.element.appendChild(table); this.cal_table = table; addClass(table, 'calendar'); } catch (e) { alert(e + ' ' + e.message); } }; PopupCalendar.prototype.appendToRow = function(row, date){ var cell = row.insertCell(row.cells.length); cell.appendChild(document.createTextNode(date.getDate())); __sig__.connectByName(cell, 'onclick', this, 'dateClick', true, [date]); addClass(cell, 'day'); if(date.getDay() == 0 || date.getDay() == 6){ addClass(cell, 'weekend'); }
if(date.getDay() != 0 && date.getDay() != 6){ addClass(cell, 'weekday'); }
var today = new Date(); if(today.getDate() == date.getDate() && today.getMonth() == date.getMonth() && today.getFullYear() == date.getFullYear()){ addClass(cell, 'today'); }
return cell; }; PopupCalendar.prototype.dateClick = function(date_obj){ this.date = date_obj; this.set(); }; PopupCalendar.prototype.set = function(){ };__sig__.connectOnceByName(document.body, 'onload', null, 'printable_selects_setup'); function printable_selects_setup(){ var selects = document.getElementsByTagName('select'); for(var i = 0; i < selects.length; ++i){ var span = document.createElement('span'); addClass(span, 'print_only'); addClass(selects[i], 'screen_only'); insertAfter(span, selects[i]); span.appendChild(document.createTextNode(selects[i].options[selects[i].selectedIndex].firstChild.data)); __sig__.connectByName(selects[i], 'onchange', null, 'printable_selects_onchange', true, [selects[i], span]); }
var inputs = document.getElementsByTagName('input'); for(var i = 0; i < inputs.length; ++i){ if(inputs[i].getAttribute('type') == 'checkbox'){ var span = document.createElement('span'); addClass(span, 'print_only'); addClass(inputs[i], 'screen_only'); insertAfter(span, inputs[i]); span.appendChild(document.createTextNode(inputs[i].checked ? 'Yes' : 'No')); __sig__.connectByName(inputs[i], 'onchange', null, 'printable_checkboxes_onchange', true, [inputs[i], span]); } } }
function printable_selects_onchange(select, span){ span.firstChild.data = select.options[select.selectedIndex].firstChild.data; }
function printable_checkboxes_onchange(input, span){ span.firstChild.data = (input.checked ? 'Yes' : 'No'); }function SelectTable(headers){ var table_element; var header_row; var body_rows; var select_all_chk; var shift_select_anchor; var shift_select_in_prog; this.shift_select_anchor = null; this.shift_select_in_prog = false; try{ this.table_element = document.createElement('table'); this.table_element.className = 'select list'; this.body_rows = new Array(); if(headers){ this.header_row = this.setHeaders(headers); } } catch (e) { alert(e); } }
SelectTable.prototype.setHeaders = function (headers){ header_row = this.table_element.insertRow(0); addClass(header_row, 'header'); var chk_cell = header_row.insertCell(0); var chk = document.createElement('input'); chk.type = 'checkbox'; chk_cell.appendChild(chk); this.select_all_chk = chk; __sig__.connectByName(chk, 'onclick', this, 'selectAllChkOnClick', true, [chk]); for(var i = 0; i < headers.length; ++i){ var cell = header_row.insertCell(i+1); cell.appendChild(document.createTextNode(headers[i])); }
return header_row; }; SelectTable.prototype.appendRow = function (data){ var row = this.table_element.insertRow(this.table_element.rows.length); var chk_cell = row.insertCell(0); var chk = document.createElement('input'); chk.type = 'checkbox'; chk.value = data[0]; chk_cell.appendChild(chk); __sig__.connectByName(chk, 'onclick', this, 'checkboxOnClick', true, [null, chk]); for(var i = 1; i < data.length; ++i){ var cell = row.insertCell(i); cell.appendChild(document.createTextNode(data[i])); }
for(var i = 0; i < row.cells.length; ++i){ __sig__.connectByName(row.cells[i], 'onmouseover', this, 'cellOnHover', true, [cell, true]); __sig__.connectByName(row.cells[i], 'onmouseout', this, 'cellOnHover', true, [cell, false]); }
this.body_rows[this.body_rows.length] = row; }; SelectTable.prototype.cellOnHover = function (element, over){ if(over){ addClass(element.parentNode, 'hover'); }
else{ removeClass(element.parentNode, 'hover'); } }; SelectTable.prototype.checkboxOnClick = function (event, element){ if(event == null){ event = window.event; }
if(event.shiftKey && this.shift_select_anchor && element.parentNode.parentNode.rowIndex != this.shift_select_anchor.parentNode.parentNode.rowIndex){ var anchor_index = this.shift_select_anchor.parentNode.parentNode.rowIndex; var clicked_index = element.parentNode.parentNode.rowIndex; this.shift_select_in_prog = true; if(anchor_index > clicked_index){ var start = clicked_index; var end = anchor_index; }
else{ var start = anchor_index; var end = clicked_index; }
if(element.checked){ var sel = true; }
else{ var sel = false; }
for(var i = 0; i < this.table_element.rows.length; ++i){ if(i >= start && i <= end){ if(sel){ addClass(this.table_element.rows[i], 'selected'); if(i != clicked_index)
this.table_element.rows[i].cells[0].firstChild.checked = true; }
else{ removeClass(this.table_element.rows[i], 'selected'); if(i != clicked_index)
this.table_element.rows[i].cells[0].firstChild.checked = false; } } }
this.shift_select_anchor = element; this.shift_select_in_prog = false; }
else{ this.shift_select_anchor = element; if(element.checked){ addClass(element.parentNode.parentNode, 'selected'); }
else{ this.select_all_chk.checked = false; removeClass(element.parentNode.parentNode, 'selected'); } } }; SelectTable.prototype.selectAllChkOnClick = function (element){ if(element.checked){ this.selectAll(); }
else{ this.deselectAll(); } }; SelectTable.prototype.getSelected = function (){ var rows = this.body_rows; var selected = new Array(); for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; if(box.checked){ selected[selected.length] = box.value; } }
return selected; }; SelectTable.prototype.getUnselected = function (){ var rows = this.body_rows; var selected = new Array(); for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; if(!box.checked){ selected[selected.length] = box.value; } }
return selected; }; SelectTable.prototype.getAllIds = function (){ var rows = this.body_rows; var selected = new Array(); for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; selected[selected.length] = box.value; }
return selected; }; SelectTable.prototype.selectAll = function (){ var rows = this.body_rows; for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; if(!box.checked){ box.checked = true; this.checkboxOnClick(false, box); } }
this.shift_select_anchor = null; }; SelectTable.prototype.deselectAll = function (){ var rows = this.body_rows; for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; if(box.checked){ box.checked = false; this.checkboxOnClick(false, box); } }
this.shift_select_anchor = null; }; SelectTable.prototype.disable = function (){ var rows = this.body_rows; addClass(this.table_element, 'disabled'); for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; box.disabled = true; }
this.header_row.cells[0].firstChild.disabled = true; }; SelectTable.prototype.enable = function (){ var rows = this.body_rows; addClass(this.table_element, 'disabled'); for(var i = 0; i < rows.length; ++i){ var box = rows[i].cells[0].firstChild; box.disabled = false; }
this.header_row.cells[0].firstChild.disabled = false; };function SmartForm(element){ var form_element; var errored_data; this.errored_data = new Array(); if(element){ this.form_element = element; this.replaceSubmitButtons(); } }
SmartForm.prototype.replaceSubmitButtons = function(){ var inputs = this.form_element.elements; for(var i = 0; i < inputs.length; ++i){ if(inputs[i].type == 'submit'){ var button = document.createElement('button'); button.setAttribute('type', 'button'); button.appendChild(document.createTextNode(inputs[i].value)); __sig__.connectOnceByName(button, 'onclick', this, 'validateAndSubmit'); inputs[i].parentNode.replaceChild(button, inputs[i]); } } }; SmartForm.prototype.validateAndSubmit = function(){ var inputs = this.form_element.elements; var error = false; var scrolled = false; for(var i = 0; i < inputs.length; ++i){ if(!this.validateField(inputs[i])){ error = true; if(!scrolled){ window.scrollTo(0, inputs[i].offsetTop); scrolled = true; } } }
if(!error){ this.form_element.submit(); }
else { alert('There were errors submitting your form.  Please correct them and resubmit.'); } }; SmartForm.prototype.validateField = function(element, revalidate){ var error = false; if(element.getAttribute('required')){ if(!element.value){ error = true; var found = false; for(var i = 0; i < this.errored_data.length; ++i){ if(this.errored_data[i].input == element){ found = true; } }
if(!found && !revalidate){ this.errored_data.push(new SmartForm_EInput(this, element, 'This field is required.', 'required')); } }
else if(revalidate && revalidate.error == 'required'){ revalidate.removeInfo(); for(var i = 0; i < this.errored_data.length; ++i){ if(this.errored_data[i].input == element){ this.errored_data.splice(i, 1); } } } }
if(element.getAttribute('format')){ switch(element.getAttribute('format').toUpperCase()){ case 'NUMERIC':
var regex = new RegExp(/^(\-?[\d]+\.?[\d]*|\-?[\d]*\.?[\d]+)$/); if(!regex.test(element.value) && element.value != ''){ error = true; var found = false; for(var i = 0; i < this.errored_data.length; ++i){ if(this.errored_data[i].input == element){ found = true; } }
if(!found && !revalidate){ this.errored_data.push(new SmartForm_EInput(this, element, 'This value must be a number.', 'format')); } }
else if(revalidate && revalidate.error == 'format'){ revalidate.removeInfo(); for(var i = 0; i < this.errored_data.length; ++i){ if(this.errored_data[i].input == element){ this.errored_data.splice(i, 1); } } }
break; default:
break; } }
if(element.getAttribute('regex')){ var regex = new RegExp(element.getAttribute('regex')); if(!regex.test(element.value)){ error = true; var found = false; for(var i = 0; i < this.errored_data.length; ++i){ if(this.errored_data[i].input == element){ found = true; } }
if(!found && !revalidate){ this.errored_data.push(new SmartForm_EInput(this, element, 'This data is not valid.' + (element.getAttribute('use_format') ? '  Please use format: ' + element.getAttribute('use_format') : '') , 'regex')); } }
else if(revalidate && revalidate.error == 'regex'){ revalidate.removeInfo(); for(var i = 0; i < this.errored_data.length; ++i){ if(this.errored_data[i].input == element){ this.errored_data.splice(i, 1); } } } }
if(!error)
return true; else
return false; }; function SmartForm_EInput(form, input, error_message, error){ var form; var input; var error; var error_message; var span; this.form = form; this.input = input; this.error = error; this.error_message = error_message; this.addInfo(); }
SmartForm_EInput.prototype.addInfo = function(){ try{ addClass(this.input, 'error'); this.span = document.createElement('span'); document.body.appendChild(this.span); this.span.style.position = 'absolute'; this.span.style.top = findPosY(this.input) + this.input.offsetHeight; this.span.style.left = findPosX(this.input); addClass(this.span, 'hidden'); addClass(this.span, 'error'); addClass(this.span, 'popup'); this.span.appendChild(document.createTextNode(this.error_message)); __sig__.connectByName(this.input, 'onchange', this.form, 'validateField', true, [this.input, this]); __sig__.connectByName(this.input, 'onmouseover', this, 'hoverover', true); __sig__.connectByName(this.input, 'onfocus', this, 'focus', true); __sig__.connectByName(this.input, 'onmouseout', this, 'hoverout', true); __sig__.connectByName(this.input, 'onblur', this, 'blur', true); } catch (e) { alert(e); } }; SmartForm_EInput.prototype.removeInfo = function(){ this.span.parentNode.removeChild(this.span); removeClass(this.input, 'error'); __sig__.disconnectByName(this.input, 'onchange', this.form, 'validateField'); }; SmartForm_EInput.prototype.hoverover = function(){ this.hovering = true; removeClass(this.span, 'hidden'); }
SmartForm_EInput.prototype.hoverout = function(){ this.hovering = false; if(!this.focused)
addClass(this.span, 'hidden'); }; SmartForm_EInput.prototype.focus = function(){ this.focused = true; removeClass(this.span, 'hidden'); }; SmartForm_EInput.prototype.blur = function(){ this.focused = false; if(!this.hovering)
addClass(this.span, 'hidden'); };function SAction_SortableTable(element){ var element; var invert_sort; var sort_column; this.element = element; this.invert_sort = false; this.sort_column = null; this.connectHeaders(); }
SAction_SortableTable.prototype.connectHeaders = function(){ for(var i = 0; i < this.element.rows[0].cells.length; ++i){ var cell = this.element.rows[0].cells[i]; __sig__.connectByName(cell, 'onclick', this, 'sortByColumn', true, [i+1]); addClass(cell, 'clickable'); } }; SAction_SortableTable.prototype.sortByColumn = function(col_num){ var col_num = col_num -1; if(col_num == this.sort_column){ if(this.invert_sort) this.invert_sort = false; else this.invert_sort = true; }
else { this.invert_sort = false; }
this.sort_column = col_num; try { var rows = new Array(); for(var i = 1; i < this.element.rows.length; ++i){ if(this.element.rows[i].cells[col_num].getAttribute('sort_data'))
rows.push([this.element.rows[i], this.element.rows[i].cells[col_num].getAttribute('sort_data')]); else if(this.element.rows[i].cells[col_num].firstChild)
rows.push([this.element.rows[i], this.element.rows[i].cells[col_num].firstChild.data]); else
rows.push([this.element.rows[i], '']); }
if(rows[0][1].match(/^[\d\.]+$/))
var sort_numeric = true; else
var sort_numeric = false; rows = this.sort(rows, (sort_numeric ? this.compareNumeric : this.compareString)); if(this.invert_sort){ rows = rows.reverse(); }
for(var i = 0; i < rows.length; ++i){ if(rows[i][0])
this.element.tBodies[0].appendChild(rows[i][0]); } } catch (error) { alert(error); } }; SAction_SortableTable.prototype.compareNumeric = function(a,b) { aa = parseFloat(a); if (!aa) aa = 0; bb = parseFloat(b); if (!aa) bb = 0; return aa-bb; }; SAction_SortableTable.prototype.compareString = function(a,b) { aa = a.toLowerCase(); bb = b.toLowerCase(); if (aa==bb) return 0; if (aa<bb) return -1; return 1; }; SAction_SortableTable.prototype.sort = function(rows, sort_function) { var found = true; while(found){ found = false; for(var i = 0; i < (rows.length -1); ++i){ if(!found){ if(sort_function(rows[i][1], rows[i+1][1]) > 0){ var tmp = rows[i]; rows[i] = rows[i+1]; rows[i+1] = tmp; found = true; } } } }
return rows; };var sactions = new Array(); function parseSActions(){ try{ var divs = document.getElementsByTagName('div'); for(var i = 0; i < divs.length; ++i){ if(divs[i].getAttribute('saction')){ switch(divs[i].getAttribute('saction')){ case 'collapsable_section':
sactions.push(new SAction_CollapsableSection(divs[i])); break; default:
break; } } }
var forms = document.getElementsByTagName('form'); for(var i = 0; i < forms.length; ++i){ if(forms[i].getAttribute('saction') == 'smart_form'){ sactions.push(new SmartForm(forms[i])); } }
var inputs = document.getElementsByTagName('input'); for(var i = 0; i < inputs.length; ++i){ if(inputs[i].type == 'text' && inputs[i].getAttribute('autocomplete_key')){ sactions.push(new AutoComplete(inputs[i])); }
if(inputs[i].type == 'text' && inputs[i].getAttribute('saction') == 'date_input'){ var di = new SAction_DateInput(inputs[i], true, false, true); sactions.push(di); }
if(inputs[i].type == 'text' && inputs[i].getAttribute('saction') == 'time_input'){ var di = new SAction_DateInput(inputs[i], false, true, true); sactions.push(di); }
if(inputs[i].type == 'text' && inputs[i].getAttribute('saction') == 'datetime_input'){ var di = new SAction_DateInput(inputs[i], true, true, true); sactions.push(di); }
if(inputs[i].type == 'text' && inputs[i].getAttribute('saction') == 'date_popup'){ var di = new SAction_DateInput(inputs[i], true, false, false); sactions.push(di); }
if(inputs[i].type == 'text' && inputs[i].getAttribute('saction') == 'time_popup'){ var di = new SAction_DateInput(inputs[i], false, true, false); sactions.push(di); }
if(inputs[i].type == 'text' && inputs[i].getAttribute('saction') == 'datetime_popup'){ var di = new SAction_DateInput(inputs[i], true, true, false); sactions.push(di); } }
var tables = document.getElementsByTagName('table'); for(var i = 0; i < tables.length; ++i){ if(tables[i].getAttribute('saction')){ switch(tables[i].getAttribute('saction')){ case 'sortable':
sactions.push(new SAction_SortableTable(tables[i])); break; default:
break; } } } } catch(e) { alert(e.name + ':' + e.message); } }
__sig__.connectOnceByName(document.body, 'onload', null, 'parseSActions');