if (!CKW) {
var CKW = function(){};
CKW.IE = false;
}

CKW.Util =
{
flash_timer: null,
trim: function(str)
{
if (str) {
return str.replace(/^\s+|\s+$/g, '');
}
return false;
},
mask: function(elm, mask, percentage)
{
var hidden_elm = CKW.DOM.id(elm);
var mask_elm = CKW.DOM.id(mask);
hidden_elm.style.zIndex = 0;
mask_elm.style.zIndex = 1;
CKW.setTransparency(mask, percentage);
},
unmask: function(elm, mask)
{
var hidden_elm = CKW.DOM.id(elm);
var mask_elm = CKW.DOM.id(mask);
hidden_elm.style.zIndex = 1;
mask_elm.style.zIndex = -1;
CKW.setTransparency(mask, 100);
},
hideSelects: function(id)
{
var elm = CKW.DOM.id(id);
elm.onmouseover = function()
{
var selects = CKW.tags("select");
for (var i = 0; i < selects.length; i++) {
selects[i].style.visibility = "hidden";
}
};
elm.onmouseout = function()
{
var selects = CKW.tags('select');
for (var i = 0; i < selects.length; i++) {
selects[i].style.visibility = "visible";
}
}
},
hideFlash: function(id)
{
var elm = CKW.DOM.id(id);
elm.onmouseover = function()
{
clearTimeout(CKW.flash_timer);
var flashes = CKW.tags('div');
for (var i = 0; i < flashes.length; i++) {
if (flashes[i].className == 'ckw-flash') {
flashes[i].style.visibility = "hidden";
}
}
};
elm.onmouseout = function()
{
CKW.flash_timer = window.setTimeout('CKW.showFlash()', 600);
};
},
showFlash: function()
{
var flashes = CKW.tags('div');
for (var j = 0; j < flashes.length; j++) {
if (flashes[j].className == 'ckw-flash') {
flashes[j].style.visibility = "visible";
}
}
clearTimeout(CKW.flash_timer);
},
includeFlash: function(id, swf_file, width, height, version, bg_color)
{
var elm = CKW.DOM.id(id);
if (elm) {
var swf = new SWFObject(swf_file, id + "_swf", width, height, version, bg_color);
swf.write(id);
}
},
toggleContent: function(show, hide, display_type)
{
if (!display_type) {
display_type = 'block';
}
var hide_elm = CKW.DOM.id(hide);
if (hide_elm) {
hide_elm.style.display = 'none';
}
if (show) {
var show_elm = CKW.DOM.id(show).style.display = display_type;
}
},
toggleTextfieldMessage: function(id, message)
{
var field = CKW.DOM.id(id);
field.onfocus = function()
{
if (this.value == message) {
this.value = '';
return;
}
};
field.onblur = function()
{
if (this.value == '') {
this.value = message;
return;
}
}
},
setTransparency: function(id, percentage)
{
var mask = CKW.DOM.id(id);
mask.style.KHTMLOpacity = percentage / 100;
mask.style.MozOpacity = percentage / 100;
mask.style.opacity = percentage / 100;
mask.style.filter = "alpha(opacity:" + percentage + ")";
},

selectRedirect: function(id, new_window)
{
var select = CKW.DOM.id(id);
select.onchange = function()
{
var url = this.options[this.selectedIndex].value;
if (url) {
if (new_window) {
window.open(url, '_blank');
} else {
window.location = url;
}
}
}
},
blurAnchors: function(id)
{
if (!id) {
id = document;
} else {
id = CKW.DOM.id(id);
}
var tags = CKW.tags("a");
if (tags.length > 0) {
for (var i = 0; i < tags.length; i++) {
tags[i].onfocus = function(){this.blur()};
}
}
},
blurInputs: function(id)
{
if (!id) {
id = document;
} else {
id = CKW.DOM.id(id);
}
var tags = CKW.tags("input");
if (tags.length > 0) {
for (var i = 0; i < tags.length; i++) {
tags[i].onclick = function(){this.style.outline = 0;};
}
}
},
setNewWindowLinks: function(class_name)
{
if (!class_name) {
class_name = 'ckw-new-win';
}
var tags = CKW.DOM.className(class_name);
if (tags.length > 0) {
for (var i = 0; i < tags.length; i++) {
tags[i].onclick = function()
{
window.open(this.href, '_blank');
return false;
}
}
}
},
setBackLinks: function(class_name)
{
if (!class_name) {
class_name = 'ckw_back';
}
var tags = CKW.DOM.tags('a');
var re = new RegExp(class_name);
if (tags.length > 0) {
for (var i = 0; i < tags.length; i++) {
if (tags[i].className.search(re) != -1) {
tags[i].onclick = function()
{
window.history.go(-1);
return false;
}
}
}
}
},
loadAudioPlayer: function(url, width, height, autostart, showcontrols, showstatusbar, elm)
{
if (navigator.userAgent.toLowerCase().indexOf("windows") != -1) {
	var type = "application/x-mplayer2";
} else {
var type = "audio/mpeg"
}
var player = "";
player += "<object width='" + width + "' height='" + height + "' id='os_player'>";
player += "<param name='type' value='" + type + "'>";
player += "<param name='src' value='" + url + "'>";
player += "<param name='showstatusbar' value='" + showstatusbar + "'>";
player += "<param name='autostart' value='" + autostart + "'>";
player += "<param name='showcontrols' value='" + showcontrols + "'>";
player += "<embed id='audio-player' src ='" + url + "' type='" + type + "' showcontrols='" + showcontrols + "' autoplay='true' autostart='" + autostart + "' width='" + width + "' height='" + height + "' controller='1' showstatusbar='" + showstatusbar + "'></embed>";
player += "</object>";
CKW.DOM.setContent(elm, player);
},
stylesheets: function()
{
return document.styleSheets[0]
}
}
var $U = CKW.Util;
CKW.DOM =
{
id: function(id)
{
return document.getElementById(id);
},
appendClass: function(elm, className)
{
elm = CKW.DOM.getElement(elm);
if (elm.className != undefined) {
elm.className = elm.className + " " + className;
}
},
removeClass: function(elm, className) 
{
elm = CKW.DOM.getElement(elm);
if (elm.className != undefined) {
elm.className = elm.className.replace(new RegExp("(^|\\s)" + className + "(\\s|$)"), "");
}
},
hasClass: function(elm, className)
{
elm = CKW.DOM.getElement(elm);
if (elm.className == className) {
return true;
} else {
var classes = elm.className.split(" ");
for (var i = 0, len = classes.length; i < len; i++) {
if (className == classes[i]) {
return true;
}
}
}
return false;
},
tags: function(tagName, elm)
{
if (!elm) {
elm = document;
} else {
elm = CKW.DOM.getElement(elm);
}
return elm.getElementsByTagName(tagName);
},
className: function(className, root)
{
if (!root) {
root = document;
}
var tags = [];
for(var elm = root.firstChild; elm != null; elm = elm.nextSibling) {
if (elm.nodeType == 1) {
if (CKW.DOM.hasClass(elm, className)) {
tags.push(elm);
} 
if (elm.hasChildNodes()) {
var childTags = CKW.DOM.className(className, elm);
if (childTags) {
for (var i = 0; i < childTags.length; i++) {
tags.push(childTags[i]);
}
}
}
}
}
return tags;
},
classTags: function(tagName, className, root)
{
if (!root) {
root = document;
}
var tagSet = CKW.DOM.tags(tagName, root);
var tags = [];
for (var i = 0; i < tagSet.length; i++) {
if (CKW.DOM.hasClass(tagSet[i], className)) {
tags.push(tagSet[i]);
}
}
return tags;
},
setContent: function(elm, content)
{
elm = CKW.DOM.getElement(elm);
if (elm) {
elm.innerHTML = content;
return true;
}
return false;
},
getContent: function(elm)
{
elm = CKW.DOM.getElement(elm);
var content = elm.innerHTML;
if (content != undefined) {
return content;
} else {
return "";
}
},
deleteContent: function(elm)
{
elm = CKW.DOM.getElement(elm);
if (elm) {
elm.innerHTML = "";
return true;
}
return false;
},
reOrderElements: function(id, new_order)
{
var parent = document.getElementById(id);
var children = [];
for(var child = parent.firstChild; child != null; child = child.nextSibling) {
if (child.nodeType == 1) {
children.push(child);
}
}
for (var i = 0; i < new_order.length; i++) {
parent.appendChild(children[new_order[i]]);
}
},
getElement: function(elm)
{
if (typeof(elm) == 'string') {
return CKW.DOM.id(elm);
} else if (elm) {
return elm;
}
return false;
},
remove: function(elm)
{
elm = CKW.DOM.getElement(elm);
if (elm) {
return elm.parentNode.removeChild(elm);
}
return false;
},
makeLastChild: function(elm)
{
elm = CKW.DOM.getElement(elm);
if (elm) {
return elm.parentNode.appendChild(elm);
}
return false;
},
insertBefore: function(before, elm)
{
before = CKW.DOM.getElement(before);
elm = CKW.DOM.getElement(elm);
if (before && elm) {
return before.parentNode.insertBefore(elm, before);
}
return false;
},
replace: function(oldNode, newNode)
{
newNode = CKW.DOM.getElement(newNode);
oldNode = CKW.DOM.getElement(oldNode);
if (newNode && oldNode) {
return oldNode.parentNode.replaceChild(newNode, oldNode);
}
return false;
},
create: function(tag, attributes)
{
var elm = document.createElement(tag);
if (attributes) {
for (att in attributes) {
if (att == 'content') {
CKW.DOM.setContent(elm, attributes[att]);
} else if (att == 'id') {
elm.id = attributes[att];
} else if (att == 'className') {
elm.className = attributes[att];
} else {
elm.style[att] = attributes[att];
}
}
}
return elm;
},
getChildren: function(parent) {
var children = [];
if (parent) {
for(var child = parent.firstChild; child != null; child = child.nextSibling) {
if (child.nodeType == 1) {
children.push(child);
}
}
}
return children;
}
}
CKW.DOM.htmlTag = CKW.DOM.tags('html')[0];
var $D = CKW.DOM;
CKW.Event = function(){};
CKW.Event.listen = function() {
if (window.addEventListener) {
return function(elm, type, func) {
elm = CKW.DOM.getElement(elm);
if (elm) {
elm.addEventListener(type, func, false);
}
};
} else if (window.attachEvent) {
return function(elm, type, func) {
elm = CKW.DOM.getElement(elm);
if (elm) {
elm.func = function() {
func.call(elm, window.event);
};
elm.attachEvent('on' + type, elm.func);
}
};
} 
return false;
}();
CKW.Event.ignore = function() {
if (window.removeEventListener) {
return function(elm, type, func) {
elm = CKW.DOM.getElement(elm);
if (elm) {
elm.removeEventListener(type, func, false);
}
};
} else if (window.detachEvent) {
return function(elm, type, func) {
elm = CKW.DOM.getElement(elm);
if (elm) {
elm.detachEvent('on' + type, elm.func);
elm.f = null;
}
};
}
return false;
}();

CKW.Event.cancel = function()
{
if (window.detachEvent) {
return function(e)
{
e = window.event;
e.cancelBubble = true;
};
} else {
return function(e)
{
e.stopPropagation();
};
}
}();
CKW.Event.kill = function()
{
if (window.detachEvent) {
return function(e)
{
e = window.event;
e.cancelBubble = true;
e.returnValue = false;
};
} else {
return function(e)
{
e.preventDefault();
e.stopPropagation();
};
}
}();
CKW.Event.onDomload = function()
{
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
return function(func)
{
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
func(); // call the onload handler
}
};
CKW.IE = true;
return;
};
/*@end @*/
/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
return function(func)
{
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
clearInterval(_timer);
func(); // call the onload handler
}
}, 10);
return;
};
}
/* for Mozilla/Opera9 */
if (document.addEventListener) {
return function(func)
{
document.addEventListener("DOMContentLoaded", func, false);
return;
};
} 
/* for other browsers */
return function(func)
{
CKW.Event.onload(func);
};
}();
CKW.Event.onload = function(func)
{
CKW.Event.listen(window, 'load', func);
};
CKW.Event.get = function(e)
{
var evt = (e) ? e : ((window.event) ? event : null);
var type = (evt.button) ? evt.button : null;
var target = e.target || e.srcElement;
return {e: evt, type: type, target: target};
};
CKW.Event.getTarget = function(e)
{
var target = e.target || e.srcElement;
if (target.nodeType == 3) {
target = target.parentNode;
}
return target;
};
CKW.Event.getCoordinates = function(e)
{
coords = {left:0, top:0};
if (e.pageX) {
coords.left = e.pageX;
coords.top = e.pageY;
} else if (e.clientX) {
coords.left = e.clientX + document.body.scrollLeft - document.body.clientLeft;
coords.top = e.clientY + document.body.scrollTop - document.body.clientTop;
// include html element space, if applicable
if (document.body.parentElement && document.body.parentElement.clientLeft) {
var bodParent = document.body.parentElement;
coords.left += bodParent.scrollLeft - bodParent.clientLeft;
coords.top += bodParent.scrollTop - bodParent.clientTop;
}
}
return coords;
};
var $E = CKW.Event;
CKW.Widgets = function(){};
CKW.Widgets.Tooltip = function(elm, text, params)
{
this.elm = CKW.DOM.getElement(elm);
this.fadeInTime = 100;
this.fadeOutTime = 100;
this.offsetTop = 20;
this.offsetLeft = 0;
this.params = params;
var self = this;
this.html = CKW.DOM.create('div');
this.html.className = "ckw-tooltip";
this.html.style.position = 'absolute';  
CKW.DOM.setContent(this.html, text);  
this.timer = null;
this.visible = false;
CKW.Event.listen(this.elm, 'mouseover', function(e){self.show(e)});
CKW.Event.listen(this.elm, 'mouseout', function(){self.remove()});
};
CKW.Widgets.Tooltip.prototype = 
{    
show: function(e)
{
clearTimeout(this.timer);
if (!this.visible) {
this.elm.position = CKW.Element.getPosition(this.elm);
this.html.style.display = 'none';
this.html.style.left = this.elm.position.left + this.offsetLeft + parseInt(this.params.left) + "px";
this.html.style.top = this.elm.position.top + this.offsetTop + parseInt(this.params.top) + "px";
this.elm.parentNode.appendChild(this.html);
this.timer = setTimeout(function(){CKW.FX.fadeIn(self.html)}, this.fadeInTime);
var self = this;
CKW.Event.listen(self.html, 'mouseover', function(){
clearTimeout(self.timer);
self.visible = true;
});
CKW.Event.listen(self.html, 'mouseout', function(){self.remove()});
}
},
remove: function()
{
var self = this;
clearTimeout(self.timer)
this.timer = setTimeout(function(){CKW.FX.fadeOut(self.html); self.visible = false;}, this.fadeOutTime);
}
};
CKW.Widgets.Tooltips = 
{
params: null,
setParams: function(params)
{
this.params = params;
},
set: function(elm, text)
{
if (typeof(elm) == 'object') {
for (tooltip in elm) {
new CKW.Tooltip(tooltip, elm[tooltip], this.params);
}
} else {
new CKW.Tooltip(elm, text, this.params);
}
}
};
CKW.Widgets.TabbedContentPanel = function(id, tabTag, selected)
{    
this.elm = CKW.DOM.getElement(id);
this.tabTag = tabTag;
this.selected = selected;
if (!this.elm) {
throw new Error("Trying to create a tabset on a non-existent id");
return null;
}
this.load();
}
CKW.Widgets.TabbedContentPanel.prototype = 
{
load: function()
{
this.elm.id = this.elm.id + '-tabs';
this.elm.style.position = 'relative';
CKW.DOM.appendClass(this.elm, 'tabSet');
this.tabs = [];
this.panes = [];
var div, tmpElm, i = -1, content = [];
for(var child = this.elm.firstChild; child != null; child = child.nextSibling) {
if (child.nodeType == 1) {
if (child.tagName.toLowerCase() == this.tabTag) {
CKW.DOM.appendClass(child, 'tab');
if (child.className) {
var title = child.className.replace(/-/, " ");
title = "<span><span>" + title.replace(/tab/, "") + "</span></span>";
var heading = document.createElement(this.tabTag);
heading.innerHTML = child.innerHTML;
child.innerHTML = title;
}
this.tabs.push(child);
if (i != -1) {
this.panes[i] = div;
}
div = document.createElement('div');
div.className = 'pane';
div.innerHTML = "<div class='container'></div>";
if (heading) {
div.appendChild(heading);
}
i++;
} else {
if (child.className.toString() != 'panel') {
tmpElm = child.cloneNode(true);
div.appendChild(tmpElm);
content.push(child);
}
}
}
}
this.panes[i] = div;
for (var i = 0; i < content.length; i++) {
this.elm.removeChild(content[i]);
}
CKW.DOM.appendClass(this.tabs[0], 'first-tab');
CKW.DOM.appendClass(this.tabs[this.tabs.length - 1], 'last-tab');
this.panel = document.createElement('div');
CKW.DOM.appendClass(this.panel, 'panel');
this.elm.appendChild(this.panel);
this.panel.style.clear = 'both';
this.curTab = null;
this.curPane = null;
var self = this;
CKW.Event.listen(this.elm, 'click', function(e){self.togglePanes(e);});
this.setPanel(this.selected - 1);
},
togglePanes: function(e)
{
var tab = e.target || e.srcElement;
if (tab.parentNode.parentNode.className.match(/tab/) && !tab.parentNode.parentNode.className.match(/tabSet/)) {
var index = -1;
for (var i = 0; i < this.tabs.length; i++) {
if (this.tabs[i] == tab.parentNode.parentNode) {
index = i;
break;
}
}
this.setPanel(index);
}
CKW.Event.kill(e);
},
setPanel: function(index)
{
if (index >= 0 && index <= this.tabs.length - 1) {
if (this.curTab) {
CKW.DOM.removeClass(this.curTab, 'selected');
}
this.curTab = this.tabs[index];
CKW.DOM.appendClass(this.curTab, 'selected');
this.curPane = this.panes[index];
var div = this.curPane.cloneNode(true);
}  else {
var div = document.createElement('div');
div.className = 'pane';
}
this.panel.innerHTML = "";
this.panel.appendChild(div);
}
}
CKW.Widgets.FloatingPanel = function(attributes)
{
for (att in attributes) {
this[att] = attributes[att];
}
this.build();
};
CKW.Widgets.FloatingPanel.prototype =
{
showLoading: function(imgSrc)
{
CKW.DOM.setContent(this.elm, "");
var img = CKW.DOM.create('img');
img.src = imgSrc;
img.style.position = 'absolute';
img.style.left = '48%';
img.style.top = '48%';
this.elm.appendChild(img);
},
show: function()
{
if (this.fadeIn) {
CKW.FX.fadeIn(this.elm);
} else {
this.elm.style.display = 'block';
}
},
hide: function(func)
{
if (this.fadeOut) {
CKW.FX.fadeOut(this.elm);
} else {
this.elm.style.display = 'none';
}
func();
},
build: function()
{
this.elm = CKW.DOM.create('div');
this.elm.id = this.id;
this.elm.style.position = 'absolute';
this.elm.style.display = 'none';
this.elm.style.width = this.width;
this.elm.style.height = this.height;
this.elm.style.top = this.top;
this.elm.style.zIndex = 100;
if (this.left) {
this.elm.style.left = this.left;
}
if (this.right) {
this.elm.style.right = this.right;
}
CKW.DOM.id(this.parentId).appendChild(this.elm);
}
};
CKW.Widgets.Menu = function(nav) {
nav = CKW.DOM.getElement(nav);
var links = CKW.DOM.className('ckw-remove', nav);
for (var i = 0; i < links.length; i++) {
var span = $D.create('span');
$D.setContent(span, $D.getContent(links[i]));
$D.replace(links[i], span);
}
var navItems = CKW.DOM.tags('ul', nav);
for (var i = 0; i < navItems.length; i++) {
$D.appendClass(navItems[i], 'hideNav');
if (CKW.IE) {
var ulWidth = navItems[i].clientWidth - 24 + 'px';
var as = $D.tags('a', navItems[i]);
for (var j = 0; j < as.length; j++) {
as[j].style.width = ulWidth;
}
}
$E.listen(navItems[i].parentNode, 'mouseover', function() {
CKW.DOM.removeClass(this, 'hideNav');
CKW.DOM.appendClass(this, 'showNav');
var ems = $D.tags('em', this);
this.em = ems[0];
$D.appendClass(this.em, 'selected'); 
});
$E.listen(navItems[i].parentNode, 'mouseout', function() {
CKW.DOM.removeClass(this, 'showNav');
CKW.DOM.appendClass(this, 'hideNav');
$D.removeClass(this.em, 'selected'); 
});
} 
var ems = $D.tags('em', nav);
for (var i = 0; i < ems.length; i++) {
ems[i].onmouseover = function() {
$D.appendClass(this, 'selected'); 
};
ems[i].onmouseout = function() {
$D.removeClass(this, 'selected'); 
};
}
};
CKW.Widgets.Menu.hideNav = function(elm) {
CKW.DOM.removeClass(elm, 'showNav');
CKW.DOM.appendClass(elm, 'hideNav');
window.clearTimeout(elm.timer);
}
var $W = CKW.Widgets;
CKW.AssocArray = function()
{
this.vals = {};
this.length = 0;
}
CKW.AssocArray.prototype =
{
set: function(name, value)
{
if (this.vals[name]) {
throw new Error("Trying to use an assoc array value thats already been allocated. Params: [" + name + "][" + value + "]");
}
this.vals[name] = value;
this.length++;
},
get: function(name)
{
if (this.vals[name]) {
return this.vals[name];
}
return false;
},
update: function(data)
{
for (name in data) {
if (this.vals[name]) {
this.vals[name] = data[name];
}
}
},
add: function(data)
{
for (name in data) {
this.vals[name] = data[name];
this.length++;
}
},
empty: function()
{
this.vals = {};
this.length = 0;
},
unset: function(name)
{
this.vals[name] = null;
this.length--;
},
remove: function(name)
{
if (this.vals[name]) {
delete this.vals[name];
this.length--;
}
}
}
CKW.registry =  new CKW.AssocArray;
var $AA = CKW.AssocArray;
var $R = CKW.registry;

CKW.XHRObject = function()
{
var xhr, xhrType, xhrArg;
try {
xhr = new XMLHttpRequest();
xhrType = XMLHttpRequest;
} catch(e) {
var msXhrs = [
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"
];
for (var i = 0; i < msXhrs.length; i++) {
try {
xhr = new ActiveXObject(msXhrs[i]);
xhrType = ActiveXObject;
xhrArg = msXhrs[i];
break;
} catch (e) {
alert("ERROR!\n\nAction Performed - trying to create an HTTP Request Object\n\nProblem - Your browser doesn't support HTTP Requests in Javascript\n\nSolution - contact the administrator of the site with the details of this problem and the browser type and version that you are using\n\nYour Browser Details - " + navigator.userAgent);
return false;
}
}
}
return function()
{
return new xhrType(xhrArg);
}
}();

CKW.HTTP = function()
{
this.xhr = CKW.XHRObject();
this.text = null;
this.cancelled = null;
this.cancellable = null;
this.async = true;
this.callback = null;
this.callbackVars = null;
var self = this;
this.setAsync = function(val)
{
self.async = val;
};
this.get = function(url, vars, callback, callbackVars) {
self.callback = callback;
self.callbackVars = callbackVars;
self.cancellable = true;
if (vars) {
url = url + '?' + vars;
}
self.xhr.open('GET', url, self.async);
self.xhr.onreadystatechange = self.executeCallback;
self.xhr.setRequestHeader('CKW_XHR', 'TRUE');
self.xhr.send(null);
};
this.executeCallback = function()
{
if (self.cancellable && self.cancelled) {
return;
}
if (self.ok()) {
self.callback(self.callbackVars);
}
};
this.post = function(url, vars, callback, callbackVars) {
self.callback = callback;
self.callbackVars = callbackVars;
self.cancellable = false;
self.xhr.abort();
self.xhr.open('POST', url, this.async);
self.xhr.onreadystatechange = self.executeCallback;
self.xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xhr.setRequestHeader('CKW_XHR', 'TRUE');
	self.xhr.send(vars);
};
this.cancel = function() {
self.cancelled = true;
};
this.ok = function()
{   
if (self.xhr.readyState == 4) {
if(self.xhr.status == 200) {
if (self.cancellable && self.cancelled) {
return false;
}
self.text = self.xhr.responseText;
return true;
}
}
return false;
};
this.postUpdate = function(elm, url, vars, callback)
{
var http = self;
var update = function()
{
if (http.ok()) {
CKW.DOM.setContent(elm, http.text);
if (callback) {
callback();
}
}
};
self.post(url, vars, update);
};
this.getUpdate = function(elm, url, vars, callback)
{
var http = self;
var update = function()
{
if (http.ok()) {
CKW.DOM.setContent(elm, http.text);
callback();
}
};
self.get(url, vars, update);
};
};
CKW.HTTP.udGetInstance = function()
{
this.instance = null;
if (this.instance == null) {
this.instance = new CKW.HTTP.Updater(Math.PI);
}
return this.instance;
}
CKW.HTTP.Updater = function(check)
{
if (check != Math.PI) {
throw Error("Trying to instantiate new CKW.HTTP.Updater - this is not an allowable public action");
}
this.updates = new CKW.AssocArray;
var self = this;
this.post = function(elm, url, vars, callback)
{
var remove = this.remove(elm);
var http = new CKW.HTTP;
http.postUpdate(elm, url, vars, remove);
this.updates.set(elm, http);
};
this.get = function(elm, url, vars, callback)
{
var remove = this.remove(elm);
var http = new CKW.HTTP;
http.getUpdate(elm, url, vars, remove);
this.updates.set(elm, http);
};
this.remove = function(id)
{
var self  = this;
return function()
{
self.updates.remove(id);
};
};
this.cancel = function(id)
{
this.updates.vals[id].cancel();
};
};
CKW.HTTP.updater = CKW.HTTP.udGetInstance();
var $H = CKW.HTTP;
var $UD = CKW.HTTP.updater;
CKW.Cookie = function(cookieName)
{
this.name = cookieName;
this.data = "";
this.expiry = "";
this.values = {};
this.load();
}
CKW.Cookie.prototype = 
{
load: function(section_separator, value_separator)
{
if (document.cookie) {
var allcookies = document.cookie;
var start = allcookies.indexOf(this.name);
if (start != -1) {
start += this.name.length + 1;
var end = allcookies.indexOf(";", start);
if (end == -1) {
end = allcookies.length;
}
var data = allcookies.substring(start, end);
this.data = unescape(data);
this.getValuePairs(section_separator, value_separator);
}
}
return false;
},
setValue: function(name, val)
{
this.values[name] = val;
},
packValues: function()
{
var data = "";
var str;
for (value in this.values) {
str = value + ":" + this.values[value] + "|";
data += str;
}
data = data.substring(0, data.length-1);
this.setData(data);
},
getValuePairs: function(section_separator, value_separator)
{
if (!section_separator) {
section_separator = "|";
}
if (!value_separator) {
value_separator = ":";
}
var parts = this.data.split(section_separator);
if (!parts[1] && parts[0].length > 0) {
parts[0] = CKW.Util.trim(parts[0]);
var bits = parts[0].split(value_separator);
bits[0] = CKW.Util.trim(bits[0]);
bits[1] = CKW.Util.trim(bits[1]);
this.values[bits[0]] = bits[1];
return true;
}
if (parts[1]) {
for (var i=0; i<parts.length; i++) {
parts[i] = CKW.Util.trim(parts[i]);
var bits = parts[i].split(value_separator);
bits[0] = CKW.Util.trim(bits[0]);
bits[1] = CKW.Util.trim(bits[1]);
this.values[bits[0]] = bits[1];
}
return true;
}
return false;
},
set: function()
{
this.packValues();
var cookie = this.name + "=" + this.data;
if (this.expiry) {
cookie += "; expires=" + this.expiry;
}
if (this.path) {
cookie += "; path=" + this.path;
}
document.cookie = cookie;
},
destroy: function()
{
this.setExpiry(-1, 0, 0, 0);
var cookie = this.name + "=\"\";expires=" + this.expiry + ";path=" + this.path;
document.cookie = cookie;
},
setData: function(data)
{
this.data = data;
},
setExpiry: function(years, days, hours, minutes)
{
if (!years) years = 0;
if (!days) days = 0;
if (!hours) hours = 0;
if (!minutes) minutes = 0;
var date = new Date();
var exp = date.getTime() + (years * 31536000000) + (days *86400000) + (hours * 3600000) + (minutes * 60000);
date= new Date(exp);
this.expiry = date.toGMTString();
},
setPath: function(path)
{
this.path = path;
}
}
var $CK = CKW.Cookie;
CKW.FX =
{
fadeIn: function(elm, params)
{
CKW.FX.setTransparency(elm, 0);
elm = CKW.DOM.getElement(elm);
if (!params) {
params = {time: 1, opacity: 10};
} else {
if (!params.time) {
params.time = 1;
}
if (!params.opacity) {
params.opacity = 10;
}
}
var opacity = 0;
elm.style.display = 'block';
var ticker = setInterval(
function()
{
if(opacity < 100) {
opacity += params.opacity;
CKW.FX.setTransparency(elm, opacity);
} else {
CKW.FX.cancelTicker(ticker);
}
},
params.time
);
},
fadeOut: function(elm, params)
{
elm = CKW.DOM.getElement(elm);
if (!params) {
params = {time: 1, opacity: 20};
} else {
if (!params.time) {
params.time = 1;
}
if (!params.opacity) {
params.opacity = 10;
}
}
var opacity = 100;
var ticker = setInterval(
function()
{
if(opacity > 0) {
opacity -= params.opacity;
CKW.FX.setTransparency(elm, opacity);
} else {
CKW.FX.cancelTicker(ticker, elm);
}
},
params.time
);
},
cancelTicker: function(ticker, elm)
{
clearInterval(ticker);
if (elm) {
elm.style.display = 'none';
}
},
/**
* Sets the transparency of an element
*
* @var string id      - id of the element to make semi-transparent
* @var int percentage - the percentage transparency
*/
setTransparency: function(id, percentage)
{
id = CKW.DOM.getElement(id);
id.style.KHTMLOpacity = percentage / 100;
id.style.MozOpacity = percentage / 100;
id.style.opacity = percentage / 100;
id.style.filter = "alpha(opacity:" + percentage + ")";
},
toggleWidth: function(elm, params)
{
elm = $D.getElement(elm);
if (!elm.ckwFxOpen) {
CKW.FX.widen(elm, {add: params.show});
} else {
CKW.FX.narrow(elm, {subtract: params.show});
}
},
widen: function(elm, params)
{
elm = CKW.DOM.getElement(elm);
if (!params.step) {
params.step = 10;
}
var start = elm.offsetWidth;
var finish = elm.offsetWidth + params.add;
var tmp = start;
var ticker = setInterval(
function()
{
if(tmp < finish) {
tmp += params.step;
elm.style.width = parseInt(tmp) + "px";
} else {
if (params.ease) {
CKW.FX.widen(elm, {add: 10, step: 2});
CKW.FX.narrow(elm, {subtract: 10, step: 2});
}
CKW.FX.cancelTick(ticker);
elm.ckwFxOpen = true;
}
},
1
);
},
cancelTick: function(ticker)
{
clearInterval(ticker);
},
narrow: function(elm, params)
{
elm = CKW.DOM.getElement(elm);
if (!params.step) {
params.step = 10;
}
var start = elm.offsetWidth;
var finish = elm.offsetWidth - params.subtract;
var tmp = start;
var ticker = setInterval(
function()
{
if(tmp > finish) {
tmp -= params.step;
elm.style.width = parseInt(tmp) + "px";
} else {
if (params.ease) {
CKW.FX.narrow(elm, {subtract: 10, step: 2});
CKW.FX.widen(elm, {add: 10, step: 2});
}
CKW.FX.cancelTick(ticker);
elm.ckwFxOpen = false;
}
},
1
);
},
toggleHeight: function(elm, params)
{
elm = $D.getElement(elm);
if (!elm.ckwFxOpen) {
CKW.FX.lengthen(elm, {add: params.show});
} else {
CKW.FX.shorten(elm, {subtract: params.show});
}
},
lengthen: function(elm, params)
{
elm = CKW.DOM.getElement(elm);
if (!params.step) {
params.step = 10;
}
var start = elm.offsetHeight;
var finish = elm.offsetHeight + params.add;
var tmp = start;
var ticker = setInterval(
function()
{
if(tmp < finish) {
tmp += params.step;
elm.style.height = parseInt(tmp) + "px";
} else {
if (params.ease) {
CKW.FX.lengthen(elm, {add: 10, step: 2});
CKW.FX.shorten(elm, {subtract: 10, step: 2});
}
CKW.FX.cancelTick(ticker);
elm.ckwFxOpen = true;
}
},
1
);
},
shorten: function(elm, params)
{
elm = CKW.DOM.getElement(elm);
if (!params.step) {
params.step = 10;
}
var start = elm.offsetHeight;
var finish = elm.offsetHeight - params.subtract;
var tmp = start;
var ticker = setInterval(
function()
{
if(tmp > finish) {
tmp -= params.step;
elm.style.height = parseInt(tmp) + "px";
} else {
if (params.ease) {
CKW.FX.shorten(elm, {subtract: 10, step: 2});
CKW.FX.lengthen(elm, {add: 10, step: 2});
}
CKW.FX.cancelTick(ticker);
elm.ckwFxOpen = false;
}
},
1
);
},
grow: function(elm, params)
{
// get width and height
},
shrink: function(elm, params)
{
// get width and height
}
}
var $F = CKW.FX;

var $F = CKW.FX;