function addEvent(elm,evType,fn,useCapture) {
if(elm.addEventListener) {
elm.addEventListener(evType,fn,useCapture);
return true;
} else if(elm.attachEvent) {
var r = elm.attachEvent('on'+evType,fn);
return r;
} else {
elm['on'+evType] = fn;
return false;
}
}

function setstatus(message) {
window.status = message;
return true;
}

function resetstatus() {
window.status = 'Done';
}

function pop_up_window(href,target,width,height,params) {
if(typeof(width) == 'undefined') {
width = 750;
}
if(typeof(height) == 'undefined') {
height = 550;
}
var left = (screen.width - width) / 2;
var top = (screen.height - height) / 2;
if(typeof(params) == 'undefined') {
params = 'scrollbars=yes,status=yes,resizable=yes,menubar=yes';
}
params = 'width=' + width + ',height=' + height + ',' + 'left=' + left + ',top=' + top + ',' + params;
opened = window.open(href,target,params);
opened.focus();
if(typeof(openedWindows) == 'undefined') {
openedWindows = new Array(opened);
} else {
openedWindows.push(opened);
}
return false;
}

function toggle_display_by_id(text_id,target_id,text_when_displayed,text_when_hidden)
{
if(document.getElementById(target_id).style.display=="") {
document.getElementById(text_id).innerHTML = text_when_hidden;
document.getElementById(target_id).style.display="none";
} else {
document.getElementById(text_id).innerHTML = text_when_displayed;
document.getElementById(target_id).style.display="";
}
return false;
}

function toggle_clickopen(id,hide,displayVisible) {
if(!(clickdiv = document.getElementById('clickdiv_'+id)) || !(clickimg = document.getElementById('clickimg_'+id))) {
alert('ID '+id+' not found!');
return false;
}
if(typeof(hide) == 'undefined') {
hide = document.getElementById('clickdiv_'+id).style.display != 'none';
}
if(typeof(displayVisible) == 'undefined') {
displayVisible = '';
}
if(hide) {
clickdiv.style.display = 'none';
clickimg.src = imgpath_expand;
return false;
} else {
clickdiv.style.display = displayVisible;
clickimg.src = imgpath_collapse;
return false;
}
}

function textarea_replace_selection(myField,snippet,target_document) {
textarea_wrap_selection(myField,snippet,'',1,target_document);
}

function textarea_wrap_selection(myField,before,after,replace,target_document) {
target_document = target_document || document;

var hook_params = {
'element': myField,
'before': before,
'after': after,
'replace': replace,
'target_document': target_document
};
if(b2evo_Callbacks.trigger_callback("wrap_selection_for_"+myField.id,hook_params)) {
return;
}
if(window.opener && window.opener.b2evo_Callbacks && (typeof window.opener.b2evo_Callbacks != "undefined")) {
if(window.opener.b2evo_Callbacks.trigger_callback("wrap_selection_for_"+myField.id,hook_params)) {
return;
}
}
if(target_document.selection) {
myField.focus();
sel = target_document.selection.createRange();
if(replace)
{
sel.text = before + after;
} else {
sel.text = before + sel.text + after;
}
myField.focus();
} else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
var cursorPos;
var scrollTop,scrollLeft;
if(myField.type == 'textarea' && typeof myField.scrollTop != 'undefined')
{
scrollTop = myField.scrollTop;
scrollLeft = myField.scrollLeft;
}
if(replace) {
myField.value = myField.value.substring(0,startPos)
+ before
+ after
+ myField.value.substring(endPos,myField.value.length);
cursorPos = startPos + before.length + after.length;
} else {
myField.value = myField.value.substring(0,startPos)
+ before
+ myField.value.substring(startPos,endPos)
+ after
+ myField.value.substring(endPos,myField.value.length);
cursorPos = endPos + before.length + after.length;
}
if(typeof scrollTop != 'undefined') {
myField.scrollTop = scrollTop;
myField.scrollLeft = scrollLeft;
}
myField.focus();
myField.selectionStart = cursorPos;
myField.selectionEnd = cursorPos;
} else {
myField.value += before + after;
myField.focus();
}
}

function toggle_filter_area(filter_name) {
if(!(clickdiv = document.getElementById('clickdiv_'+filter_name)) || !(clickimg = document.getElementById('clickimg_'+filter_name))) {
alert('ID '+filter_name+' not found!');
return false;
}
hide = document.getElementById('clickdiv_'+filter_name).style.display != 'none';
if(hide) {
clickdiv.style.display = 'none';
clickimg.src = imgpath_expand;
asyncRequest(srvc_url+'async.php?collapse='+filter_name);
} else {
clickdiv.style.display = 'block';
clickimg.src = imgpath_collapse;
asyncRequest(srvc_url+'async.php?expand='+filter_name);
}
return false;
}

function asyncRequest(url) {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if(req) {
swapSection('...');
req.onreadystatechange = asyncResponseHandler;
req.open('GET',url,true);
req.setRequestHeader("content-type","application/x-www-form-urlencoded");
req.send('dummy');
} else {
swapSection('Your browser does not seem to support XMLHttpRequest.');
}
return false;
}

function asyncResponseHandler() {
if(req.readyState == 4) {
if(req.status == 200)
{
swapSection(req.responseText);
} else {
swapSection("There was a problem retrieving the XML data:\n" + req.statusText);
}
}
}

function swapSection(data) {
var swappableSection = document.getElementById('asyncResponse');
if(swappableSection) {
swappableSection.innerHTML = data;
}
}

function b2evo_Callbacks() {
this.eventHandlers = new Array();
};

b2evo_Callbacks.prototype = {
register_callback : function(event,f) {
if(typeof this.eventHandlers[event] == "undefined")
{
this.eventHandlers[event] = new Array();
}
this.eventHandlers[event][this.eventHandlers[event].length] = f;
},trigger_callback : function(event,args) {
if(typeof this.eventHandlers[event] == "undefined")
{
return null;
}
var r = false;
var cb_args = '';
var cb_arguments = arguments;
for(var i = 1; i < arguments.length; i++) {
cb_args += "cb_arguments[" + i + "],";
}
if(cb_args.length) {
cb_args = cb_args.substring(0,cb_args.length - 2);
}
for(var i = 0; i < this.eventHandlers[event].length; i++) {
var f = this.eventHandlers[event][i];
r = eval("f("+cb_args+");") || r;
}
return r;
}
};

var b2evo_Callbacks = new b2evo_Callbacks();

