/*

global.js

*/
with (window.navigator) {
var isIE6=userAgent.match(/MSIE 6\.[0-9]+/),
isIE7=userAgent.match(/MSIE 7\.[0-9]+/),
isIE8=userAgent.match(/MSIE 8\.[0-9]+/),
isMoz=userAgent.match(/Netscape/),
isFF=userAgent.match(/Firefox/),
isOpera=userAgent.match(/Opera/),
isIE=(isIE6||isIE7||isIE8);
}
function $(id)
{
return document.getElementById(id);
}
function go(u)
{
document.location.href=u;
}
function byTag(tag,obj)
{
if(obj==null) {
obj=document;
}
var col=[];
tag=tag.split(",");
for(var g=0,l=tag.length;g<l;g++) {
var w=obj.getElementsByTagName(tag[g].toUpperCase());
for(var q=0,l2=w.length;q<l2;q++) {
col.push(w[q]);
}
}
return col;
}
function byClassName(className,obj)
{
var re=new RegExp(className);
var r=[];
var els=(obj||document).getElementsByTagName("*");
for(var c=0,l=els.length;c<l;c++) {
if(els[c].className.match(re)) {
r.push(els[c]);
}
}
return r;
}
function byAttribute(att,value,obj)
{
var re=new RegExp(value);
var r=[];
var els=(obj||document).getElementsByTagName("*");
for(var c=0,l=els.length;c<l;c++) {
var a=els[c].getAttribute(att);
if(a&&a.match(re)) {
r.push(els[c]);
}
}
return r;
}
function create(el)
{
return document.createElement(el);
}
function findParent(obj,tag)
{
tag=tag.toUpperCase();
while(obj&&obj.tagName!=tag) {
obj=obj.parentNode;
}
return obj;
}
function previous(obj,s) {
s=s.toUpperCase();
var x=obj;
do {
x=x.previousSibling;
if(x&&x.tagName&&x.tagName==s) {
return x;
}
} while(1&&x);
return false;
}
function next(obj,s) {
s=s.toUpperCase();
var x=obj;
do {
x=x.nextSibling;
if(x&&x.tagName&&x.tagName==s) {
return x;
}
} while(1&&x);
return false;
}
function addClass(obj,c)
{
var s=obj.className.split(/ /);
for(var q=0,l=s.length;q<l;q++) {
if(s[q]==c) {
return true;
}
}
s.push(c);
obj.className=s.join(' ');
}
function removeClass(obj,c)
{
var r=[];
var s=obj.className.split(/ /);
for(var q=0,l=s.length;q<l;q++) {
if(s[q]!=c) {
r.push(s[q]);
}
}
obj.className=r.join(' ');
}
function injectJS(str)
{
var myID=0;
for(var i=0,l=str.length;i<l;i++) {
myID+=str.charCodeAt(i);
}
myID="injektd"+myID;
if(! $(myID)) {
var s=create("SCRIPT");
s.type="text/javascript";
s.id=myID;
try {
s.text=str;
}
catch(e) {
s.textContent=str;
}
byTag("HEAD")[0].appendChild(s);
}
else {
eval(str);
}
}
function extend(obj,props,force)
{
for(var x in props) {
if(typeof(obj[x])=="undefined"||force) {
obj[x]=props[x];
}
}
}
function position(obj,type)
{
type=type.toLowerCase().ucFirst();
var orig=obj;
var retval=0;
if(type=="Left"&&obj.x) {
return obj.x;
}
else if(type=="Top"&&obj.y) {
return obj.y;
}
else {
var useType=(type=="Left"||type=="Right"||type=="Center") ? "Left" : "Top";
while(obj.offsetParent) {
retval+=eval("obj.offset"+useType);
obj=obj.offsetParent;
}
switch (type) {
case "Center" : return retval+(orig.offsetWidth / 2);break;
case "Right" : return retval+(orig.offsetWidth);break;
default: return retval;
}
}
return false;
}
function getStyle(obj,s)
{
if(document.defaultView&&document.defaultView.getComputedStyle) {
try {
return document.defaultView.getComputedStyle(obj,null).getPropertyValue(s);
}
catch(e) {
return false;
}
}
else if(obj.currentStyle) {
return eval("obj.currentStyle."+s.camelize());
}
return false;
}
function getStyleAsInt(obj,s) {
var cs=getStyle(obj,s);
if(cs=="auto") {
return 0;
}
return (cs) ? parseInt(String(cs).replace(/px$/,"")) : false;
}
function screenHeight()
{
return screenDimension("Height");
}
function screenWidth()
{
return screenDimension("Width");
}
function scrollAmount()
{
if(document.documentElement&&document.documentElement.scrollTop) {
return document.documentElement.scrollTop;
}
return (document.body.scrollTop) ? document.body.scrollTop : ((window.pageYOffset) ? window.pageYOffset : 0);
}
function screenDimension(type)
{
return eval("(self.inner"+type+") ? self.inner"+type+" : (document.documentElement&&document.documentElement.client"+type+") ? document.documentElement.client"+type+" : document.body.client"+type);
}
function findCellPosition(t,h)
{
for(var q=0,c=t.rows[0].cells,l=c.length;q<l;q++) {
if(c[q].innerHTML==h) {
return q;
}
}
return-1;
}
String.prototype.camelize=function(str) {
var temp=this.split(/-|_/g);
str="";
for(var a=0,l=temp.length;a<l;a++) {
str+=((a!=0) ? temp[a].substring(0,1).toUpperCase() : temp[a].substring(0,1).toLowerCase())+temp[a].substring(1).toLowerCase();
}
return str;
};
String.prototype.trim=function(){
return this.replace(/^\s+|\s+$/g,'');
};
if(! window.Event) {
var Event={};
}
var ev={
events:[],
get:function(e)
{
return (! e) ? window.event : e;
},
target:function(e)
{
e=this.get(e);
return (e.target) ? e.target : (e.srcElement) ? e.srcElement : false;
},
add:function(elm,evType,fn,useCapture)
{
if(elm.addEventListener) {
elm.addEventListener(evType,fn,useCapture);
return this.store(elm,evType,fn,useCapture);
}
else if(elm.attachEvent) {
var r=elm.attachEvent('on'+evType,fn);
return this.store(elm,evType,fn,useCapture);
}
else {
elm['on'+evType]=fn;
return this.store(elm,evType,fn,useCapture);
}
},
tryAdd:function(elm,evType,fn,useCapture)
{
return (elm) ? Event.add(elm,evType,fn,useCapture) : false;
},
key:function(e)
{
e=this.get(e);
return (e.keyCode) ? e.keyCode : (e.which) ? e.which : e.charCode;
},
stop:function(e)
{
e=this.get(e);
if(document.all) {
e.returnValue=false;
e.cancelBubble=true;
}
else {
e.preventDefault();
e.stopPropagation();
}
},
store:function(elm,evType,fn,useCapture)
{
this.events.push({'elm':elm,'type':evType,'fn':fn,'useCapture':useCapture});
return elm;
},
cleanup:function()
{
var e=Event.events;
for(var i=0,l=e.length;i<l;i++) {
with (e[i]) {
if(elm.removeEventListener) {
elm.removeEventListener(type,fn,useCapture);
}
else if(elm.detachEvent) {
elm.detachEvent("on"+type,fn);
}
}
}
Event.events=[];
}
};
extend(Event,ev);
Event.add(window,"unload",Event.cleanup,false);
String.prototype.ucFirst=function() {
return this.substring(0,1).toUpperCase()+this.substring(1);
};
Array.prototype.search=function(value,offset) {
if(typeof(offset)=="undefined") {
offset=0;
}
for(var q=offset,l=this.length;q<l;q++) {
if(this[q]==value||String(this[q]).match(value)) {
return q;
}
}
return-1;
};
Array.prototype.has=function(value) {
return (this.search(value)!=-1);
};
Array.prototype.walk=function(func) {
for(var x=0,l=this.length;x<l;x++) {
func(this[x]);
}
};
window.isDomReady=false;
window.readyEvents=[];
if(isIE) {
document.onreadystatechange=function() {
if(this.readyState=="complete") {
window.isDomReady=true;
onReady();
}
}
}
else {
Event.add(window,'DOMContentLoaded',function() { window.isDomReady=true;onReady();},false);
}
function onReady(ev)
{
if(ev) {
window.readyEvents.push(ev);
}
if(window.isDomReady) {
for(var q=0,l=window.readyEvents.length;q<l;q++) {
try {
window.readyEvents[q].call();
}
catch(e) {
eval(window.readyEvents[q]);
}
}
window.readyEvents=[];
}
}
function conf(x)
{
switch (x) {
case 'user': x='Are you sure you want to remove this user?';break;
case 'default-card': x="This action will make all client payments be processed with this card\n\nAre you sure you want to set this card as your default card?";break;
case "remove-card": x="Are you sure you want to remove this card?";break;
default: x='Are you sure you want to remove this item?';
}
return confirm(x);
}

var prShow;
function showPricing(type)
{
prShow=type;
popup.get('pricing-popup','pricing',1);
if(popup.current=='pricing-popup') {
priceDisplayPane(prShow);
}
}
function getPricing(c)
{
xml.queue_add('index.php?page=pricing-get-rates&currency='+c,updatePricing)
}
function updatePlans(r)
{
eval("var d="+r.responseText+";");
var t=byTag("TABLE",$("pPlans"))[0];
while(t.rows.length>1) {
t.deleteRow(1);
}
for(var q=0,l=d.length;q<l;q++) {
var tr=t.insertRow(t.rows.length);
for(var x=0;x<7;x++) {
var td=tr.insertCell(x);
switch (x) {
case 0 : td.innerHTML=d[q].name;break;
case 1 :
if(d[q].cost!=0) {
td.className="cost";td.innerHTML=d[q].symbol_html+d[q].cost;
}
else {
td.className="cost";td.innerHTML="Free";
}
break;
case 2 :  td.innerHTML=d[q].symbol_html+d[q].fee;break;
case 3 :  td.innerHTML=d[q].symbol_html+d[q].credit_sms;break;
case 4 : td.className="ac";td.innerHTML=d[q].support;if(d[q].support=='yes') td.className+=" green"; break;
case 5 : td.className="ac";td.innerHTML=d[q].numbers;if(d[q].numbers=='yes') td.className+=" green"; break;
case 6 : td.className="ac";td.innerHTML=d[q].customisation;break;
}
}
}
popup.setPos();
var cx=byTag("SELECT",$("pPlans"))[0].value;
byTag("SELECT",$("pRates"))[0].value=cx;
getPricing(cx);
}
function updatePricing(r)
{
eval("var d="+r.responseText+";");
for(var code in d) {
if($("pc_"+code)) {
$("pc_"+code).innerHTML=d[code];
}
}
}
/*

form.js

*/
/*
Auto form handling etc
*/
var form={
autohideTimer: 0,
singleError: false,
okText: "&nbsp;",
/*
init:function()
{
var s=byTag("SELECT");
for(var i=0,l=s.length;i<l;i++) {
if(s[i].disabled) {
form.fixDisabled(s[i]);
}
}
},
*/
setup:function(rules,f)
{
f=$(f);
for(var id in rules) {
if($(id)||f.elements[id+"[]"]) {
var objs=($(id)) ? [$(id)] : f.elements[id+"[]"];
for(var q=0,l2=objs.length;q<l2;q++) {
objs[q].ruleSet=rules[id].rules;
objs[q].errorObj=(rules[id].errorObj) ? rules[id].errorObj : id+"_err";
objs[q].onError=(rules[id].onError) ? rules[id].onError : form.error;
objs[q].validateRules=function() {
this.errorString="";
for(var x=0,l=this.ruleSet.length;x<l;x++) {
if(! form.validateRule(this,this.ruleSet[x])) {
return false;
}
}
return true;
}
if(rules[id].validationEvents) {
for(var p=0,k=rules[id].validationEvents.length;p<k;p++) {
Event.add(objs[q],rules[id].validationEvents[p],function(e) {
var obj=Event.target(e);
var r=obj.validateRules();
if(!r&&typeof(obj.form.submitted)!="undefined") {
obj.onError();
if(form.singleError) {
return false;
}
}
else if(r) {
obj.onError();
}
},false);
}
}
}
}
}
},
/*
enableForm:function(f,obj)
{
obj.innerHTML="SAVE";
for(var q=0,l=f.elements.length;q<l;q++) {
if(f.elements[q].disabled) {
this.enableElement(f.elements[q]);
}
}
var d=["img","iframe"];
for(var x=0,y=d.length;x<y;x++) {
var i=byTag(d[x]);
for(var q=0,l=i.length;q<l;q++) {
if(i[q].className=="fixy") {
i[q].style.display="none";
}
}
}
},
enableElement:function(el)
{
el.disabledState=1;
el.disabled=false;
el.className=el.className.replace(/ ?disabled/,"");
},
fixDisabled:function(el)
{
var eTop=position(el,"Top"),eLeft=position(el,"Left"),eWidth=el.offsetWidth,IE=(document.all) ? 1 : 0,y=0,p=(IE) ? 0 : 2;
var y=0;
do {
for(var x=0;x<2;x++) {
if(x||IE) {
var i=create(x ? "img" : "iframe");
i.src=(x) ? "images/clear.gif" : "about:blank";
i.className="fixy"
i.style.left=eLeft+"px";
i.style.top=(eTop+p)+"px";
switch (y) {
case 0 :
i.style.left=(position(el,"Right")-20)+"px";
break;
case 1 :
i.style.width="3px";
break;
case 2 :
i.style.height="2px";
i.style.width=eWidth+"px";
break;
case 3 :
i.style.top=(eTop-3+el.offsetHeight)+"px";
i.style.height="2px";
i.style.width=eWidth+"px";
break;
}
document.body.appendChild(i);
}
}
y++;
if(y>3||!IE) {
break;
}
} while(1);
if(IE) el.style.visibility="visible";
},
*/
checkCondition:function(con,obj)
{
var oStr=(con.obj=='this') ? "obj" : "$('"+con.obj+"')";
switch (con.type) {
case "length" : eval("var conditionPassed=("+oStr+".value.length "+con.rule+");");break;
case "if_object_exists" :
eval("var conditionPassed=(oStr&&("+oStr+".value "+con.rule+" '"+con.value+"'));");
break;
default:
eval("var conditionPassed=("+oStr+".value "+con.rule+" '"+con.value+"');");
}
if(! conditionPassed) {
var i=$(obj.id+"_err");
if(i) {
i.style.display="none";
}
return true;
}
return false;
},
validateRule:function(obj,rule)
{
if(rule.condition&&form.checkCondition(rule.condition,obj)) {
return true;
}
switch (rule.type) {
case "length" :
eval("var result=(obj.value.length "+rule.rule+");");
if(! result) {
obj.errorString=form.getErrorStr(rule,"character");
}
return result;
break;
case "email" :
var result=(obj.value.match(/[a-z0-9-]+@[a-z0-9]{2,}\.[a-z]{2,3}/gi));
if(! result) {
if(rule.error) {
obj.errorString=rule.error;
}
else {
obj.errorString="please provide a valid email";
}
}
return result;
break;
case "url" :
var result=(obj.value.match(/(https?:\/\/)?([a-z0-9-]{2,}\.)?[a-z0-9-]{2,}\.([a-z]{2,})/i));
if(! result) {
if(rule.error) {
obj.errorString=rule.error;
}
else {
obj.errorString="please provide a valid url";
}
}
return result;
break;
case "regexp" :
var re=new RegExp(rule.rule,"i");
var result=obj.value.match(re);
if(! result) {
if(rule.error) {
obj.errorString=rule.error;
}
else {
obj.errorString="invalid format";
}
}
return result;
break;
case "checkbox" :
var c=0;
if(typeof(obj.form[obj.name].length)!="undefined") {
for(var x=0,l=obj.form[obj.name].length;x<l;x++) {
alert(x);
if(obj.form[obj.name][x].checked) {
c++;
}
}
eval("var result=(c "+rule.rule+");");
}
else {
var result=obj.form[obj.name].checked;
}
if(! result) {
obj.errorString=form.getErrorStr(rule,"selection");
}
return result;
break;
case "value" :
eval("var result=(obj.value "+rule.rule+" "+rule.value+");");
if(! result) {
if(rule.error) {
obj.errorString=rule.error;
}
else {
obj.errorString="required";
}
}
return result;
break;
default:
alert("check type "+rule.type+" is not defined");
return false;
}
return true;
},
getErrorStr:function(rule,type)
{
if(rule.error) {
return rule.error;
}
else {
var m=rule.rule.match(/>=? ?([0-9]+)/);
if(m) {
if(!parseInt(m[1])) {
return "required";
}
else {
return "at least "+m[1]+" "+type+((m[1]==1) ? "" : "s");
}
}
else {
var m=rule.rule.match(/([0-9]+)$/);
return "less than "+m[1]+" "+type+((m[1]==1) ? "" : "s");
}
}
},
error:function()
{
var id=(this.id) ? this.id : this.name.replace(/\[\]/,"");
var i=$(this.errorObj);
if(this.errorString.replace(/\s/,"").length) {
if(! i) {
i=create("span");
i.id=this.errorObj;
this.parentNode.insertBefore(i,this.nextSibling);
}
i.className="formError";
i.style.display="";
i.innerHTML=this.errorString;
}
else if(i) {
i.innerHTML=form.okText;
i.className="formOk";
if(form.autohideTimer) {
setTimeout("$('"+id+"_err').style.display='none';",form.autohideTimer);
}
}
},
/*
populate form data-very simple will need to expand on to
improve support for checkboxes,date selects etc
*/
populate:function(f,data,prefix)
{
if(typeof(f)=="string") {
f=$(f);
}
if(f) {
prefix=(prefix==null) ? "" : prefix;
for(var x in data) {
if(f.elements[prefix+x]) {
f.elements[prefix+x].value=data[x];
}
}
}
},
runChecks:function(f)
{
var pass=true;
var multi=[];
for(var q=0,l=f.elements.length;q<l;q++) {
if(f.elements[q].validateRules) {
if(f.elements[q].name.match(/\[\]$/)) {
if(multi.has(f.elements[q].name)) {
continue;
}
multi.push(f.elements[q].name);
}
if(! f.elements[q].validateRules()) {
f.elements[q].onError();
pass=false;
if(form.singleError) {
break;
}
}
}
}
return pass;
},
autoHandle:function(e,ret)
{
var obj=Event.target(e);
obj.blur();
var f=obj.form;
f.submitted=1;
Event.stop(e);
if(form.runChecks(f)) {
if(ret!=null&&ret) {
return true;
}
var oType="";
if(obj.type=="submit"||obj.type=="hidden") {
oType=obj.type;
if(document.all) {
var s=create(obj.outerHTML.replace(/type=\"?(submit|image)\"?/,"type=\"hidden\""));
obj.parentNode.replaceChild(s,obj);
}
else {
obj.type="hidden";
}
}
f.submit();
if(oType.length) {
if(document.all) {
obj=create(s.outerHTML.replace(/type=\"?hidden\"?/,"type=\""+oType+"\""));
s.parentNode.replaceChild(obj,s);
}
else {
obj.type=oType;
}
}
}
else if(ret!=null&&ret) {
return false;
}
}
};
Event.add(window,"load",ajaxAutoSetup,false);
function ajaxAutoSetup()
{
var x=["form","a"];
for(var g=0,l2=x.length;g<l2;g++) {
var els=byTag(x[g]);
for(var q=0,l=els.length;q<l;q++) {
var r=els[q].getAttribute("rel");
if(r) {
var m=r.match(/(ajax):(.+)$/);
if(m&&m[1]=="ajax") {
switch (x[g]) {
case "form" :
els[q].submitCallback=m[2];
els[q].onsubmit=document.forms[q].submit=function() {
if(this.submitCallback&&String(this.submitCallback).length) {
try {
eval(this.submitCallback+"();");
}
catch(e) {
if(! String(e).match(/TypeError:.*is not a function/)) {
eval(this.submitCallback+";");
}
}
}
return false;
}
break;
case "a" :
els[q].clickCallback=m[2];
els[q].onclick=function(e) {
try{
var f=eval(this.clickCallback);
}
catch(e) {
var f=this.clickCallback;
}
Ajax.Request(this.href+(this.href.match(/\?/) ? "&ajax=1" : "?ajax=1"),{form:$("caption"),callback:f});
return false;
}
break;
}
}
}
}
}
}
/*

popup.js

*/
var popup={
state:"closed",
parent:null,
obj:null,
current:null,
posSet:0,
morph:0,
sizeTimer:0,
xState:{},
content:{},
openTimer:0,
closeTimer:0,
allowMorph:false,
modal:false,
fixed:(! window.navigator.appVersion.match(/MSIE ?[0-6]/)),
evalAction:"",
scripts:[],
cmds:[],
add:function(id,settings)
{
popup.content[id]=(typeof(settings)=='string') ? {html:settings} : settings;
},
get:function(id,cfile,open)
{
popup.state="opening";
if(! popup.content[id]) {
var u=location.protocol+"//"+location.host+"/index.php?page=popup-get&content-file="+encodeURIComponent(cfile),q=location.search.substring(1);
if(q.length) {
u+="&"+q;
}
xml.queue_add(u,function(r) {
popup.add(id,r.responseText.replace(/\\"/g,'"').replace(/\\'/g,"'"));
if(open) {
popup.open(id);
}
}
);
}
else if(open&&popup.current!=id) {
popup.open(id);
}
return false;
},
getNew:function(id,cfile,open)
{
popup.unload(id);
return popup.get(id,cfile,open);
},
unload:function(id)
{
if(popup.content[id]) {
var ps=popup.scripts;
for(var q=0,l=ps.length;q<l;q++) {
if($(ps[q])) {
$(ps[q]).parentNode.removeChild($(ps[q]));
}
}
if(id==popup.current) {
popup.current=null;
popup.close();
}
delete(popup.content[id]);
}
},
info:function(str,heading,keep)
{
if(keep) {
if(! popup.content['notice-popup']) {
popup.get('notice-popup','notice-popup',1);
popup.onload("popup.info('"+str+"','"+heading+"',1)");
return true;
}
else {
popup.open('notice-popup');
}
}
else {
popup.open('info-popup');
}
$("infoHeading").innerHTML=(heading!=null&&heading.length) ? heading : "Info";
$("infoHeading").style.display=(heading!=null&&heading.length) ? "" : "none";
$("infoText").innerHTML=str;
popup.setPos();
/*
if(heading==null||! heading.length) {
heading="Info";
}
popup.get('info-popup','info-popup',1);
popup.onload('$("infoHeading").innerHTML="'+heading+'";$("infoText").innerHTML="'+str+'";popup.setPos();');
*/
},
prompt:function(str,heading,action)
{
popup.evalAction=action;
heading=(heading!=null&&heading.length) ? heading : "Info"
try {
popup.open('prompt-popup');
$("promptHeading").innerHTML=heading;
$("promptText").innerHTML=str;
popup.setPos();
}
catch(e) {
popup.get('prompt-popup','prompt-popup',1);
popup.onload('$("promptHeading").innerHTML="'+heading+'";$("promptText").innerHTML="'+str+'";');
}
},
onload:function(cmd)
{
popup.cmds.push(cmd);
/*if(popup.state=="open") {
eval(cmd);
popup.setPos();
}
else {
setTimeout(function() { popup.onload(cmd);},25);
}*/
},
execute:function(cmds)
{
for(var i=0,l=cmds.length;i<l;i++) {
eval(cmds[i]);
}
},
open:function(id)
{
if(isIE&&document.readyState!="complete") {
popup.openTimer=setTimeout('popup.open("'+id+'")',25);
}
else {
popup.morph=(popup.allowMorph&&popup.state=="open");
clearTimeout(popup.openTimer);
popup.state="opening";
if(!$("popup")) {
var db=document.body;
var i=create("IFRAME");
i.src=location.protocol+"//"+location.host+"/about:blank";
db.appendChild(i);
var po=db.appendChild(create("DIV"));
po.id="popupoverlay";
po.style.position="absolute";
po.innerHTML="&nbsp;";
Event.add(document,"keypress",function(e) { popup.isEscape(e);},true);
Event.add(window,"resize",function(e) { if(popup.state=="open") popup.setPos();},true);
i.id="popupparentframe";
i.style.visibility="hidden";
i.frameBorder=0;
var d=db.appendChild(create("DIV"));
d.id="popupparent";
d.innerHTML="<a href=\"#\" onclick=\"return popup.close()\">Press&nbsp;<u>ESC</u>&nbsp;to close or click</a>";
/*d.moveCallback=popup.onmove;
drag.add(d);*/
var d2=db.appendChild(create("DIV"));
d2.id="popup";
popup.obj=d2;
}
clearTimeout(popup.closeTimer);
popup.setContent(id);
if(typeof(edit)!="undefined") {
edit.hide();
}
addClass(document.body,"noSelect");
}
return false;
},
close:function()
{
var save=(popup.current!=null&&popup.content[popup.current].saveState)||false;
if(save) {
popup.content[popup.current].html=$("popup").innerHTML;
popup.saveState(1);
}
popup.state="closed";
removeClass(document.body,"noSelect");
$("popupoverlay").style.display=$("popupparentframe").style.display=$("popup").style.display=$("popupparent").style.display="none";
popup.current=null;
},
isEscape:function(e)
{
if(Event.key(e)==27) {
clearTimeout(popup.sizeTimer);
popup.close();
}
},
setContent:function(id)
{
popup.current=id;
popup.scripts=[];
var c= popup.content[id].html;
var sc=[],m=c.match(/(\{js_inject\})(.*)(\{\/js_inject\})/g);
if(m) {
for(var q=0,l=m.length;q<l;q++) {
c=c.replace(m[q],"");
sc.push(m[q].substring(11,m[q].length-12));
}
}
if(popup.morph) {
popup.xState={'width':$("popup").offsetWidth,'height':$("popup").offsetHeight};
}
$("popup").innerHTML=c;
for(var i=0,l=sc.length;i<l;i++) {
popup.scripts.push(injectJS(sc[i]));
}
$("popupparent").className=popup.modal ? "modal" : "";
popup.saveState(0);
popup.setPos();
if(ajaxAutoSetup) ajaxAutoSetup();
},
saveState:function(save)
{
if(popup.current!=null) {
if(save) {
popup.content[popup.current].stateData=[];
}
var obj=popup.content[popup.current];
var state=(obj.stateData) ? obj.stateData : {};
var f=byTag("form",$("popup"));
if(f) {
for(var q=0,l=f.length;q<l;q++) {
for(var x=0,k=f[q].elements.length;x<k;x++) {
var c=f[q].elements[x];
if(c.name) {
if(! state[q]) {
state[q]={};
}
if(save) {
}
else {
/*eval("var set=state[q]."+c.name+";");
if(set) {
f[q].elements[x].value=set;
}*/
}
}
}
}
}
}
},
setPos:function(noSize)
{
var d1=$("popupparent"),d2=$("popup"),d3=$("popupparentframe");
if(d2.innerHTML.length) {
if(! noSize) {
d1.style.position=d2.style.position=d3.style.position="absolute";
d2.firstChild.style.display=d2.style.display="block";
d2.style.overflow="visible";
d2.style.width="auto";
var w=(d2.offsetWidth||getStyleAsInt(d2,"width")||400);
d2.style.display="none";
var h=d2.offsetHeight;
if(! h) {

d2.firstChild.style.display=d2.style.display="block";
d2.style.height="auto";
h=d2.offsetHeight;
}
d2.firstChild.style.display=d2.style.display="none";
d2.style.overflow="hidden";
if(popup.morph) {
/*d2.realHTML=d2.innerHTML;
d2.innerHTML="";
/*d2.style.display="";
d2.style.display="none";*/
}
}
else {
with (popup.xState) {
var w=width,h=height;
}
}
var d1p=getStyleAsInt(d1,"padding-left"),d1t=getStyleAsInt(d1,"padding-top");
if(! popup.posSet) {
var l=Math.floor((screenWidth() / 2)-(w / 2));
d3.style.left=d1.style.left=(l-d1p)+"px";
d2.style.left=l+"px";
var t=(screenHeight() / 2)-(h / 2)+((popup.fixed) ? 0 : popup.getScroll());
if(t<0) {
t=d1t;
}
t=Math.floor(t);
d3.style.top=d1.style.top=(t-d1t)+"px";
d2.style.top=t+"px";
}
d1.style.position=d2.style.position=d3.style.position=(popup.fixed&&h<screenHeight()) ? "fixed" : "absolute";
if(! noSize) {
popup.size(w,h,1);
}
}
},
getScroll:function()
{
if(document.documentElement&&document.documentElement.scrollTop) {
return document.documentElement.scrollTop;
}
return (document.body.scrollTop) ? document.body.scrollTop : ((window.pageYOffset) ? window.pageYOffset : 0);
},
size :function(w,h,fp)
{
clearTimeout(popup.sizeTimer);
var d1=$("popupparent"),d2=$("popup"),d3=$("popupparentframe");
clearTimeout(popup.sizeTimer);
if(popup.morph&&popup.allowMorph) {
with (popup.xState) {
d2.style.overflow="hidden";
var myW=width,
myH=height,
aY=(h-myH),
aX=(w-myW),
d1p=getStyleAsInt(d1,"padding-left"),
d1t=getStyleAsInt(d1,"padding-top");
if(! fp) {
if(aX) {
aX /=(aX<5&&aX>-5) ? 1 : (aX<100&&aX>-100) ? 2 : 5;
width+=Math.floor(aX);
}
if(aY) {
aY /=(aY<5&&aY>-5) ? 1 : (aY<100&&aY>-100) ? 2 : 5;
height+=Math.floor(aY);
}
}
d1.style.width=width+"px";
d1.style.height=height+"px";
d2.style.width=(width-(d1p * 2))+"px";
d2.style.height=(height-(d1t / 2))+"px";
popup.setPos(1);
if(width!=w||height!=h) {
popup.sizeTimer=setTimeout('popup.size('+w+','+h+')',500);
}
else {
popup.morph=false;
d2.firstChild.style.display="";
}
}
}
else {
d1.style.width=w+"px";
d1.style.height=h+"px";
d2.firstChild.style.display="";
}

d2.style.display=d1.style.display=d3.style.display="block";
d3.style.height=d1.offsetHeight+"px";
d3.style.width=d1.offsetWidth+"px";
with ($("popupoverlay").style) {
display=(popup.modal) ? "block" : "";
height=document.body.offsetHeight+"px";
width=document.body.offsetWidth+"px";
}
if(! popup.morph) {
popup.state="open";
var cmds=popup.cmds;
popup.cmds=[];
popup.execute(cmds);
}
},
onmove:function()
{
var d1=$("popupparent"),d2=$("popup"),d3=$("popupparentframe");
d3.style.top=d1.offsetTop+"px";
d3.style.left=d1.offsetLeft+"px";
d2.style.top=d1.offsetTop+getStyleAsInt(d1,"padding-top")+"px";
d2.style.left=d1.offsetLeft+getStyleAsInt(d1,"padding-left")+"px";
d2.style.zIndex=getStyleAsInt(d1,"z-index")+1;
}
};
/*

drag.js

*/
var drag={
init:0,
zindex: 0,
obj:null,
add:function(inst)
{
inst.setAttribute("dragActive",false);
inst.onmousedown=function(e) {
drag.start(this,e);
}
inst.onmouseup=function(e) {
drag.end(this,e);
}
if(! drag.init) {
Event.add(document.body,"mousemove",function(e) { drag.move(e);},false);
drag.init=1;
}
drag.eliminateElements(inst);
},
eliminateElements:function(inst)
{
var elim=["input","select","textarea"];
var evtypes=["onmousedown","onmouseup","onmousemove"];
var els=byTag("input,select,textarea",inst);
for(var x=0,l=els.length;x<l;x++) {
for(var m=0,j=evtypes.length;m<j;m++) {
eval("els[x]."+evtypes[m]+"=function(e){if(!e){e=window.event;}if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}};");
}
}
},
start:function(inst,e)
{
drag.obj=inst;
e=Event.get(e);
inst.style.position="absolute";
inst.setAttribute("_x",e.clientX-inst.offsetLeft);
inst.setAttribute("_y",e.clientY-inst.offsetTop);
if(document.all) {
document.body.onselectstart=function() { return false;}
}
else {
document.body.setAttribute("style.-moz-user-select","none");
}
},
end:function(inst,e)
{
drag.obj=null;
},
move:function(e)
{
if(drag.obj!=null) {
e=Event.get(e);
var inst=drag.obj;
inst.style.left=(e.clientX-inst.getAttribute("_x"))+"px";
inst.style.top=(e.clientY-inst.getAttribute("_y"))+"px";
inst.style.zIndex=++drag.zindex;
if(typeof(drag.obj.moveCallback)!="undefined") {
drag.obj.moveCallback(drag.obj);
}
}
}
};
/*

xml.js

*/
/********************************************************************************
AJAX CORE FUNCTIONALITY CLASS
Nathan Bryant 2006
http://www.dynamicsystems.co.nz
Copyright 2006 Dynamic Systems
All rights reserved. Republication,redistribution,
replication or use of Dynamic Systems content / scripting
is strictly prohibited without the prior written consent of Dynamic Systems.
********************************************************************************/
var xml={
showErrors: true,
request: null,
requestActive: null,
asynch: true,
queue: [],
timeout: 30,
requestTimer: 0,
maxRetry: 3,
crntRetry: 0,
/****************************************
*										*
*	  OVERWRITES SET PARAMETERS			*
*										*
****************************************/
/*setParameters:function(params)
{
for(var param_name in params) {
eval("this."+param_name+"='"+params[param_name]+"'");
}
},*/
/****************************************
*										*
*	  XML DATA REQUEST FUNCTIONS 		*
*										*
****************************************/
execRequest:function(url,func,type,form)
{
xml.request=null;
xml.requestTimer=0;
if(window.XMLHttpRequest) {
xml.request=new XMLHttpRequest();
}
else if(window.ActiveXObject) {
xml.request=new ActiveXObject("Microsoft.XMLHTTP");
}
else {
alert("XML Object is not available");
return false;
}
if(xml.request) {
/*var d=new Date();
$("debug").innerHTML="URL: "+url+"-requested : "+d.toString();*/
xml.request.onreadystatechange=function() {
try {
var status=xml.request.status;
}
catch(e) {
/*
alert("XML State Change Error\n\n"+e.name+"\n\n"+e.message);
for(var prop in xml.request) {
try {
alert(prop+"="+eval("xml.request."+prop));
}
catch(e) {
alert(prop);
}
}
xml.endRequest();
if(xml.request==null) {
xml.execRequest(url,func,type,form);
return false;
}
xml.endRequest();
*/
}
if(xml.request&&xml.request.readyState==4&&typeof(status)=="number") {
switch (status) {
case 12030 :
xml.endRequest();
return xml.execRequest(url,func,type,form);
break;
case 200 :
if(typeof(func)!="undefined") {
try {
func(xml.request);
}
catch(e) {
eval(func);
}
}
xml.endRequest();
break;
case 404 :
if(xml.showErrors) {
alert("XML file not found: "+url);
}
xml.endRequest();
break;
case 0 : break;
default : if(xml.showErrors) { alert("There was a problem sourcing the request\n\nThe error code returned was : "+xml.request.status);}
}
}
}
xml.request.open(type,url,xml.asynch);
if(type=="GET"||type=="HEAD") {
if(type=="HEAD"&&! document.all) {
xml.request.overrideMimeType("text/plain");
}
xml.request.send(null);
}
else {
if(typeof(form)=="object"&&! form.tagName) {
var postvars=[];
for(var prop in form) {
postvars.push(prop+"="+form[prop]);
}
postvars=postvars.join("&");
}
else {
var postvars=xml.getFormVars(form).join("&");
}
xml.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xml.request.setRequestHeader("Content-length",postvars.length);
xml.request.setRequestHeader("Connection","close");
xml.request.send(postvars);
}
xml.requestTimer=setTimeout(
function() {
xml.endRequest();
xml.execRequest(url,func,type,form);
/*}
else {
alert("MAX XML RETRIES HIT");
}*/
},
xml.timeout * 1000
);
}
return true;
},
endRequest:function()
{
clearTimeout(xml.requestTimer);
if(xml.request) {
xml.request.onreadystatechange=function(){};
xml.request.abort();
}
xml.requestActive=false;
},
getFormVars:function(f)
{
var ft=typeof(f);
if(ft!="undefined") {
if(ft!="object") {
if($(f)) {
f=$(f);
}
else if(document.forms[f]) {
f=document.forms[f];
}
}
if(f.elements) {
var els=f.elements;
var vars=[];
for(var w=0,l=els.length;w<l;w++) {
if(! els[w].disabled&&els[w].name) {
if(els[w].type&&(((els[w].type=="radio"||els[w].type=="checkbox")&&els[w].checked)||(els[w].type!="radio"&&els[w].type!="checkbox"))) {
vars.push(els[w].name+"="+encodeURI(els[w].value));
}
}
}
return vars;
}
alert("There is no form available for xml post-"+f);
}
return [];
},
/****************************************
*										*
*	  XML CALL QUEUING FUNCTIONS 		*
*										*
****************************************/
queue_add:function(url,func,type,formvars)
{

if( xml.loader ){
xml.showLoader()
}
var x={
'url': url,
'func': func,
'type': (type==null) ? "GET" : type.toUpperCase(),
'form': formvars
};
xml.queue[xml.queue.length]=x;
xml.queue_do();
},
queue_do:function()
{
if(xml.requestActive) {
setTimeout("xml.queue_do()",50);
}
else if(xml.queue.length!=0) {
xml.requestActive=true;
xml.execRequest(xml.queue[0].url,xml.queue[0].func,xml.queue[0].type,xml.queue[0].form);
xml.queue.shift();
}
},
/************************************
*									*
*	 DECODES ENCODED CHARACTERS		*
*									*
************************************/
decode:function(str)
{
var find=["&lt;","&gt;","&apos;","&quot;","&amp;"];
var replace=["<",">","'",'"',"&"];
for(var i=0,l=find.length;i<l;i++) {
var sought=new RegExp(find[i]);
do {
str=str.replace(sought,replace[i]);
} while(str.search(sought)!=-1);
}
return str;
}
};
var Ajax={
Request:function(url,options)
{
if(options==null) {
options={};
}
var m=(options.method||"GET");
var callback=(options.onSuccess||options.onComplete||options.callback||null);
var form=(options.parameters||(options.form||false));
var asynch=(options.asynch||false);
if(! form&&m!="GET") {
alert("Please use the form option to pass a form name or the parameter option to specify parameters directly");
return false
}
if(! asynch) {
xml.execRequest(url,callback,m,form);
}
else {
xml.queue_add(url,callback,m,form);
}
}
};