Added (very basic) spam filtering plugin support. Plugins can mark a message as spam by hooking into the spam check API, which is documented in functions.php. No spam checking functionality is built-in.
+ − /**
+ − * Images used for form field validation
+ − * @var string img_bad: Shown on field validation failure
+ − * @var string img_good: Shown on field validation success
+ − * @var string img_neu: Shown when a field's value matches known good regexp but still needs testing (e.g. DB info)
+ − */
+ −
+ − var img_bad = '../images/checkbad.png';
+ − var img_good = '../images/check.png';
+ − var img_neu = '../images/checkunk.png';
+ −
+ − /**
+ − * Highlights the background of the next-up <tr> tag.
+ − * @param object Form field
+ − */
+ −
+ − function set_focus(item)
+ − {
+ − var hint_id = ( item.type == 'radio' ) ? 'hint_' + item.name + '_' + item.value : 'hint_' + item.name;
+ − if ( document.getElementById(hint_id) )
+ − {
+ − var el = document.getElementById(hint_id);
+ − el.style.zIndex = String(getHighestZ() + 2);
+ − domObjChangeOpac(0, el);
+ − el.style.display = 'block';
+ − domOpacity(el, 0, 100, 400);
+ − }
+ − item = getParentTR(item);
+ − if ( item.tagName == 'TR' )
+ − {
+ − item.style.backgroundColor = '#FFFFE0';
+ − }
+ − }
+ −
+ − /**
+ − * Clears the background of the next-up <tr> tag.
+ − * @param object Form field
+ − */
+ −
+ − function clear_focus(item)
+ − {
+ − var hint_id = ( item.type == 'radio' ) ? 'hint_' + item.name + '_' + item.value : 'hint_' + item.name;
+ − if ( document.getElementById(hint_id) )
+ − {
+ − var el = document.getElementById(hint_id);
+ − // el.style.display = 'none';
+ − domOpacity(el, 100, 0, 200);
+ − setTimeout(function()
+ − {
+ − el.style.display = 'none';
+ − }, 250);
+ − }
+ − item = getParentTR(item);
+ − if ( item.tagName == 'TR' )
+ − {
+ − if ( IE )
+ − {
+ − item.style.backgroundColor = 'transparent';
+ − }
+ − else
+ − {
+ − item.style.backgroundColor = null;
+ − }
+ − }
+ − }
+ −
+ − function getParentTR(item)
+ − {
+ − var tagName = item.tagName;
+ − while ( tagName != 'TR' && tagName != null )
+ − {
+ − item = item.parentNode;
+ − tagName = item.tagName;
+ − }
+ − if ( tagName == 'TR' && item.className != 'nohighlight' )
+ − {
+ − return item;
+ − }
+ − return null;
+ − }
+ −
+ − function init_hint(input, hint)
+ − {
+ − hint.className = 'fieldtip_js';
+ − setTimeout(function()
+ − {
+ − if ( input.type == 'radio' )
+ − {
+ − var tr = getParentTR(input).parentNode.parentNode.parentNode;
+ − var span_width = $(tr).Width() - 24;
+ − }
+ − else
+ − {
+ − var span_width = $(input).Width() - 24;
+ − }
+ − var span_top = $(input).Top() + $(input).Height();
+ − var span_left = $(input).Left();
+ − hint.style.top = span_top + 'px';
+ − hint.style.left = span_left + 'px';
+ − hint.style.width = span_width + 'px';
+ − hint.style.display = 'none';
+ − }, 100);
+ − }
+ −
+ − var set_inputs_to_highlight = function()
+ − {
+ − var inputs = document.getElementsByTagName('input');
+ − for ( var i = 0; i < inputs.length; i++ )
+ − {
+ − // Highlighting
+ − var tr = getParentTR(inputs[i]);
+ − if ( tr )
+ − {
+ − inputs[i].onfocus = function()
+ − {
+ − set_focus(this);
+ − }
+ − inputs[i].onblur = function()
+ − {
+ − clear_focus(this);
+ − }
+ − }
+ − // Hints
+ − var hint_id = ( inputs[i].type == 'radio' ) ? 'hint_' + inputs[i].name + '_' + inputs[i].value : 'hint_' + inputs[i].name;
+ − if ( document.getElementById(hint_id) )
+ − {
+ − var el = document.getElementById(hint_id);
+ − if ( el.tagName == 'SPAN' )
+ − {
+ − init_hint(inputs[i], el);
+ − }
+ − }
+ − }
+ − }
+ −
+ − addOnloadHook(set_inputs_to_highlight);
+ −
+ − function install_set_ajax_loading()
+ − {
+ − var base = document.getElementById('enano-body');
+ − var hider = document.createElement('div');
+ − hider.style.position = 'absolute';
+ − hider.style.backgroundColor = '#FFFFFF';
+ − hider.style.top = $(base).Top() + 'px';
+ − hider.style.left = $(base).Left() + 'px';
+ − hider.style.width = $(base).Width() + 'px';
+ − hider.style.height = $(base).Height() + 'px';
+ − hider.style.backgroundPosition = 'center center';
+ − hider.style.backgroundImage = 'url(../images/loading-big.gif)';
+ − hider.style.backgroundRepeat = 'no-repeat';
+ − hider.id = 'ajax_loader';
+ − domObjChangeOpac(0, hider);
+ − var body = document.getElementsByTagName('body')[0];
+ − body.appendChild(hider);
+ − opacity('ajax_loader', 0, 70, 750);
+ − }
+ −
+ − function install_unset_ajax_loading()
+ − {
+ − if ( document.getElementById('ajax_loader') )
+ − {
+ − opacity('ajax_loader', 70, 0, 750);
+ − setTimeout(function()
+ − {
+ − var body = document.getElementsByTagName('body')[0];
+ − body.removeChild(document.getElementById('ajax_loader'));
+ − }, 1000);
+ − }
+ − }