//Copyright 2008, Howling Dynamo, Inc. or its suppliers. All Rights Reserved.
//Contact: http://www.hdyn.com/mail/contact.php?addr=pr
var g_getTimer=new GPTimer();
var g_cfTimer=new GPTimer();
var g_vpTimer=new GPTimer();
var g_comments=[];
var g_inputCache=null;
var g_x="*";
var g_getIntervalSecs=7;
var g_nGets=0;
var g_defaultColor="rgb(160,160,160)";
var g_sub="";
var g_vpRegs={"rDelim":new RegExp("<>","g"),"guns":new RegExp("rgb[^0-9]*([0-9, ]*).*","g")};
var g_vpfmt=0;
var g_holders;
function doVPLoad(_1){
g_sub=_1;
setXMLErrorReporter(reportErr);
document.getElementById("cFade").onmousedown=setColor;
g_holders={"ip":document.getElementById("ip"),"color":document.getElementById("vpColor"),"vpID":document.getElementById("vpID"),"name":document.getElementById("vpName"),"comment":document.getElementById("vpComment"),"cDest":document.getElementById("cDest"),"vps":document.getElementById("vps"),"rComment":document.getElementById("rComment"),"vpInputs":document.getElementById("vpInputs"),"tInputs":document.getElementById("tInputs"),"tVPs":document.getElementById("tVPs")};
loadData();
vpPut(false,false);
}
function doVPUnload(){
g_getTimer.clear();
vpPut(true,false);
}
function vpGet(){
try{
var _2=40;
var _3="vp/vpGet.php?sub="+g_sub+"&vpfmt="+g_vpfmt+"&id="+g_holders["vpID"].value;
if(++g_nGets>=_2){
_3+="&keepAlive";
g_nGets=0;
}
_3+="&t="+(new Date().getTime());
sendXML("",_3,getDone,"GET");
}
catch(e){
reportErr(typeof e.message=="undefined"?e:e.message);
g_getTimer.doAfter("vpGet()",g_getIntervalSecs*10000);
}
}
function responseToArray(_4){
testError(_4);
var s=_4.responseText;
if(s==""){
return [s];
}
return s.split(g_vpRegs["rDelim"]);
}
function getDone(_6){
var _7=false;
try{
if(typeof testError=="undefined"){
return;
}
var _8=responseToArray(_6);
if(_8[0]!=""){
if(isNaN(_8[0])){
throw _8.join("<br/>");
}
buildVPUI(_8,true);
updateRComment();
}
}
catch(e){
_7=true;
reportErr(typeof e.message=="undefined"?e:e.message);
}
finally{
g_getTimer.doAfter("vpGet()",(_7?g_getIntervalSecs*10:g_getIntervalSecs)*1000);
}
}
function getXs(_9){
var _a=[];
for(var i=0;i<_9.length;++i){
if(_9[i].innerHTML==g_x){
_a[_9[i].id]=true;
}
}
return _a;
}
function buildVPUI(_c,_d){
var _e=g_holders["vpID"].value;
var _f=_c[0];
_c.splice(0,1);
comments=[];
var vps=g_holders["vps"].getElementsByTagName("div");
var xs=getXs(vps);
var _12=false;
var _13=false;
var bad=0;
for(var i=0;i<_c.length;++i){
var _16=_c[i].split("\t");
if(_16.length<5||_16[0]==""){
++bad;
continue;
}
var id="i"+_16[0];
comments[id]=[_16[2],_16[3]];
var _18=g_vpfmt<_16[4];
var isI=_16[0]==_e;
if(_18&&!isI){
_13=true;
}
if(isI){
_12=true;
}
_18=_18||typeof xs[id]!="undefined";
var _1a="background-color:"+_16[1];
if(_18||isI){
_1a+=";color:"+getContrasting(_16[1]);
}
_c[i]="<div class='vp' onmouseover='popRComment(this,event)' onmouseout='closeRComment(event)' id='"+id+"' style='"+_1a+"'"+(isI?" onclick='toggleInputs()'>I":">"+(_18?g_x:""))+"</div>";
}
if(_d&&!_12&&_e!=""){
vpPut(false,false);
}else{
if(_13||_c.length-bad!=vps.length){
g_holders["tVPs"].style.color="#ff1493";
g_vpTimer.doAfter("flashEnd(1)",1200);
}
g_vpfmt=_f;
g_comments=comments;
g_holders["vps"].innerHTML=_c.join("");
}
}
function vpPut(_1b,_1c){
try{
var uri="vp/vpPut.php";
var _1e=[];
_1e.push("sub="+g_sub);
var _1f=g_holders["vpID"].value;
_1e.push("id="+_1f);
if(_1b){
if(_1f==""){
return;
}
_1e.push("remove");
}else{
if(_1c){
storeData();
if(readCookie("vpData")==""){
alert("Cookies need to be enabled to do this.");
return;
}
updateRComment();
}
}
_1e.push("t="+(new Date().getTime()));
sendXML("",uri+buildQStr(_1e,false),_1b?ignore:putDone,"GET");
}
catch(e){
reportErr(typeof e.message=="undefined"?e:e.message);
}
}
function ignore(_20){
}
function putDone(_21){
try{
if(typeof testError=="undefined"){
return;
}
var _22=responseToArray(_21);
if(_22[0]==""){
throw "empty response from server!";
}
if(isNaN(_22[0])){
throw _22.join("<br/>");
}
var _23=getStoredData(false);
g_holders["vpID"].value=_23[0];
buildVPUI(_22,false);
updateRComment();
g_getTimer.doAfter("vpGet()",g_getIntervalSecs*1000);
}
catch(e){
reportErr(typeof e.message=="undefined"?e:e.message);
}
}
function reportErr(s){
if(s==""){
document.getElementById("msg").innerHTML=s;
}
}
function loadData(){
var _25=[g_holders["vpID"],g_holders["color"],g_holders["name"],g_holders["comment"]];
var _26=getStoredData(true);
var len=_26.length;
if(len>_25.length){
len=_25.length;
}
for(var i=0;i<len;++i){
_25[i].value=_26[i];
}
setColorDest();
}
function getStoredData(_29){
var _2a=readCookie("vpData");
_2a=_2a.split("\t");
if(_2a.length<4){
_2a=[g_holders["ip"].value,g_defaultColor,"",""];
storeData();
}else{
if(_29){
_2a[3]="";
writeVPCookie(_2a);
}
}
return _2a;
}
function setColorDest(){
setBothColors(g_holders["name"],g_holders["color"].value);
}
function setBothColors(ob,bgc){
ob.style.backgroundColor=bgc;
ob.style.color=getContrasting(bgc);
}
function getContrasting(c){
var _2e=safeGuns(c);
return _2e[0]+_2e[1]+_2e[2]>350?"rgb(40,40,40)":"rgb(220,220,220)";
}
function storeData(){
var c=g_holders["color"].value;
if(c==""){
c=g_defaultColor;
}
var id=g_holders["vpID"].value;
if(isNaN(id)){
var _31=readCookie("vpData");
_31=_31.split("\t");
id=isNaN(_31[0])?"":_31[0];
}
writeVPCookie([id,c,g_holders["name"].value,g_holders["comment"].value]);
}
function writeVPCookie(_32){
writeCookie("vpData",_32.join("\t"),"y50");
}
function doneInputs(_33){
if(g_holders["vpInputs"].style.display=="block"){
toggleOb(g_holders["vpInputs"],document.getElementById("tInputs"));
}
if(_33){
if(g_inputCache==null||g_holders["color"].value!=g_inputCache[0]||g_holders["name"].value!=g_inputCache[1]){
vpPut(false,true);
}
}else{
if(g_inputCache==null){
vpGet();
}else{
g_holders["color"].value=g_inputCache[0];
g_holders["name"].value=g_inputCache[1];
setColorDest();
}
}
}
function toggleInputs(){
var _34=g_holders["vpInputs"];
toggleOb(_34,document.getElementById("tInputs"));
if(_34.style.display=="block"){
setZs(_34,g_holders["vps"]);
g_inputCache=[g_holders["color"].value,g_holders["name"].value];
reportErr("");
}else{
doneInputs(false);
}
}
function toggleVPs(){
var ob=g_holders["vps"];
toggleObNoEx(ob,document.getElementById("tVPs"));
if(ob.style.display=="block"){
setZs(ob,g_holders["vpInputs"]);
}
g_holders["rComment"].style.zIndex=ob.style.zIndex;
}
function setZs(_36,_37){
var s=_37.style;
if(s.display=="block"){
s.zIndex=9;
_36.style.zIndex=10;
}
}
function popRComment(tgt,e){
if(eventModifiers(e)!=0){
return;
}
if(tgt.innerHTML==g_x){
tgt.innerHTML="";
}
if(setRComment(tgt)){
showAt(g_holders["rComment"],tgt,null);
}
}
function toggleObNoEx(ob,_3c){
if(typeof ob=="string"){
ob=document.getElementById(ob);
}
var s=ob.style;
s.display=s.display=="block"?"none":"block";
if(s.display=="block"){
_3c.style.backgroundColor="#efe";
}else{
_3c.style.backgroundColor="";
}
}
function setRComment(tgt){
if(typeof g_comments[tgt.id]=="undefined"){
return false;
}
var _3f=g_comments[tgt.id];
if(_3f.length<2||(_3f[0]==""&&_3f[1]=="")){
return false;
}
var rch=g_holders["rComment"];
var _41=rch.getElementsByTagName("p");
setBothColors(_41[0],tgt.style.backgroundColor);
setIESafeBlock(_41[0],_3f[0]);
setIESafeBlock(_41[1],_3f[1]);
rch.name=tgt.id;
return true;
}
function setIESafeBlock(ob,s){
if(s==""){
ob.style.display="none";
}else{
ob.innerHTML=s;
ob.style.display="block";
}
}
function updateRComment(){
var rch=g_holders["rComment"];
if(rch.style.display!="block"){
return;
}
var tgt=document.getElementById(rch.name);
if(tgt==null){
rch.style.display="none";
}else{
setRComment(tgt);
}
}
function closeRComment(e){
if(eventModifiers(e)!=0){
return;
}
g_holders["rComment"].style.display="none";
}
function offsetToRootX(ob,_48){
var x=0;
do{
x+=ob.offsetLeft;
ob=ob.offsetParent;
}while(ob!=null&&ob!=_48);
return x;
}
function offsetToRootY(ob,_4b){
var y=0;
do{
y+=ob.offsetTop;
ob=ob.offsetParent;
}while(ob!=null&&ob!=_4b);
return y;
}
function showAt(ob,tgt,_4f){
var x=offsetToRootX(tgt,_4f)+tgt.offsetWidth/2;
var y=offsetToRootY(tgt,_4f)+tgt.offsetHeight+2;
ob.style.left=x+"px";
ob.style.top=y+"px";
ob.style.display="block";
}
function doEnter(_52,e){
if(e.keyCode!=13){
return true;
}
switch(_52.id){
case "vpName":
doneInputs(true);
break;
case "vpComment":
g_holders["tInputs"].style.color="#ff1493";
g_cfTimer.doAfter("flashEnd(0)",500);
vpPut(false,true);
break;
}
return false;
}
function flashEnd(i){
switch(i){
case 0:
g_holders["tInputs"].style.color="";
selectTo(200);
g_cfTimer.clear();
break;
case 1:
g_holders["tVPs"].style.color="";
g_vpTimer.clear();
break;
}
}
function selectTo(end){
var n=g_holders["comment"];
n.selectionStart=0;
n.selectionEnd=end;
}
function setColor(e){
if(!e){
e=window.event;
}
var x=getEventX(e);
var y=getEventY(e);
var _5a=this;
while(_5a!=null){
x-=_5a.offsetLeft;
_5a=_5a.offsetParent;
}
_5a=this;
while(_5a!=null){
y-=_5a.offsetTop;
_5a=_5a.offsetParent;
}
setTheColor(x,y);
}
function safeGuns(s){
var _5c;
s=s.replace(g_vpRegs["guns"],"$1");
_5c=s.split(",");
if(_5c.length<3){
return [100,100,100];
}
for(var i=0;i<3;++i){
if(isNaN(_5c[i])){
_5c[i]=100;
}else{
_5c[i]=parseInt(_5c[i]);
}
}
return _5c;
}
function setTheColor(x,y){
if(x>255){
x=255;
}else{
if(x<0){
x=0;
}
}
var _60=safeGuns(g_holders["color"].value);
if(y>16){
_60[2]=x;
}else{
if(y>8){
_60[1]=x;
}else{
_60[0]=x;
}
}
g_holders["color"].value=buildColor(_60);
setColorDest();
}
function buildColor(_61){
return "rgb("+_61.join(",")+")";
}
function buildQStr(_62,_63){
if(_62.length<1){
return "";
}
return "?"+encodeURI(_62.join(_63?"&amp;":"&"));
}
function getEventX(e){
var x=0;
if(typeof e.pageX!="undefined"){
x=e.pageX;
}else{
if(typeof e.clientX!="undefined"){
x=e.clientX;
if(typeof document.body.scrollLeft!="undefined"){
x+=document.body.scrollLeft;
}
}
}
return x;
}
function getEventY(e){
var y=0;
if(typeof e.pageY!="undefined"){
y=e.pageY;
}else{
if(typeof e.clientY!="undefined"){
y=e.clientY;
if(typeof document.body.scrollTop!="undefined"){
y+=document.body.scrollTop;
}
}
}
return y;
}
function eventModifiers(e){
if(typeof e.modifiers!="undefined"){
return e.modifiers;
}else{
if(typeof e.shiftKey!="undefined"){
var x=0;
if(e.altKey){
x|=1;
}
if(e.ctrlKey){
x|=2;
}
if(e.shiftKey){
x|=4;
}
return x;
}
}
return 0;
}
