// dwspace.js v0.2
//
// Copyright (c) 2007, 2008 (http://www.ibm.com/developerworks)
// 
/*--------------------------------------------------------------------------*/
var Portlet=Class.create();var dwSpsPortletMenu=new Array();var showAddContent=true;Portlet.prototype={initialize:function(A,C,D,B){this.pageId=A;this.portletId=C;this.contDivId=D;this.publish=B},load:function(){new Ajax.Updater(this.contDivId,"/developerworks/portal/PortletStateInfo/DataSourceServlet",{onComplete:function(A){PortletMonitor.decrement();updateBuffer()},parameters:"rand="+(new Date()).getTime()+Math.random()+"&portletid="+this.portletId+"&action=view&format=1&p="+this.publish,evalScripts:true,asynchronous:true,method:"get"})
}};var PortletManager={portlets:$H(),register:function(A,B){PortletManager.portlets[A]=B},unregister:function(A){delete PortletManager.portlets[A]},getPortlet:function(A){return PortletManager.portlets[A]},loadPortlets:function(){PortletManager.portlets.values().each(function(A){PortletMonitor.increment();A.load()})},clearPortlets:function(){PortletManager.portlets.values().each(function(A){delete A});PortletManager.portlets=$H()}};var PortletMonitor={portletLoadCount:0,increment:function(){PortletMonitor.portletLoadCount++
},decrement:function(){PortletMonitor.portletLoadCount--;if(PortletMonitor.portletLoadCount<=0){PortletMonitor.fire()}},fire:function(){dwTactic.addTC()}};var LayoutManager=Class.create();LayoutManager.prototype={initialize:function(A){this.cols=$A();for(var D=0;D<A;D++){this.cols[D]=$A()}this.dAIdtoNthCol={};var B=$A(arguments);B.shift();for(var C=0;C<B.length;C++){this.dAIdtoNthCol[B[C]]=C}},_getNthCol:function(A){return this.dAIdtoNthCol[A]},updateCol:function(C,B){var A=this._getNthCol(C);this.cols[A]=this.deserialize(B);
if($(C).childNodes.length>2){if(C.indexOf("primary-sortable-tabs")==-1){$(C).style.height="100%"}}else{$(C).style.height="600px"}},createNewPortlet:function(B){this.element=B;var C=this.element.parentNode.id;var A=B.id;lytMgr.updateCol(C,Sortable.serialize(C,{tag:"div"}));var D=lytMgr.getSeqNum(C,A.substring(4));new Ajax.Request("/developerworks/portal/PortletStateInfo/ProcessPortlet",{parameters:"rand="+(new Date()).getTime()+Math.random()+"&a=add&pa="+pageId+"&pt="+getPortletTypeId(this.element)+"&s="+D,onComplete:function(E){},onSuccess:this.processCreatePortlet.bindAsEventListener(this),onFailure:function(E){alert("onFail: "+E.statusText)
},asynchronous:false,method:"get"})},processCreatePortlet:function(t){var json=eval("("+t.responseText+")");var portletTitle;if(json&&json.t!=undefined){this.element.firstChild.nodeValue=json.t;portletTitle=json.t}var isShowHideAddContent=true;if(json.t=="Image"||json.t=="Message board"){isShowHideAddContent=false}if(json&&json.e!=undefined){alert(json.e);this.element.innerHTML=""}else{if(json&&json.p!=undefined){var pid=json.p;this.element.id="div_"+pid;var divId=this.element.id;this.element.style.marginBottom="14px";
var portletMenuHtml='<div class="contentPortletHeader" style="overflow:visible;"><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="left" width="82%"><div id="title_'+pid+'" class="contentPortletHeaderHeight">'+portletTitle+'</div></td><td align="right" width="9%"><div style="float:right">&nbsp;</div><a  id="portletMuCtl'+pid+'" class="smallplainlink" href="javascript:void(0);" style="float:right" rev="accessibilityTopMenuLink" onmouseover="if (typeof udelayhide!=\'undefined\') clearTimeout(udelayhide); dwSpsPortletMenu['+pid+'].show()"  onmouseout="udelayhide = setTimeout(\'dwSpsPortletMenu['+pid+'].hide()\', 500)"></a>&nbsp&nbsp<div id="portlet-menu" style="position:relative; display:none;float:right;" onmouseover="if (typeof udelayhide!=\'undefined\') clearTimeout(udelayhide)" onmouseout="udelayhide = setTimeout(\'dwSpsPortletMenu['+pid+'].hide()\', 500)"><div style="position:absolute;z-index:999;top:0px;left:-140px;display:block;width:140px; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top:1px solid #000000; border-bottom:1px solid #000000; background-color:#ffffff;" ><div class="tab-edit-heading" onmouseover="if (typeof udelayhide!=\'undefined\') clearTimeout(udelayhide)">&nbsp;Portlet menu&nbsp;&nbsp;[<a href="javascript:dwSpsPortletMenu['+pid+'].toggle()">X</a>]</div><div class="tab-edit-selection" style="font-weight: normal;" onmouseover="if (typeof udelayhide!=\'undefined\') clearTimeout(udelayhide)"><a id="lbOn'+pid+'" href="/developerworks/portal/PortletStateInfo/DataSourceServlet?action=edit&portletid='+pid+'&format=1" class="lbOn smallplainlink">Edit</a></div><div class="dotted"><img src="//www.ibm.com/i/c.gif" width="1" height="1" alt=""/></div>';
if(isShowHideAddContent==true){portletMenuHtml=portletMenuHtml+'<div class="tab-edit-selection" style="font-weight: normal;" onmouseover="if (typeof udelayhide!=\'undefined\') clearTimeout(udelayhide)"><a href="javascript:lytMgr.handleAddContent(\''+pid+'\');" style="text-decoration:none;color:#5c81a7; font-family:verdana,arial,sans-serif; font-size:10px;" class="smallplainlink"><span id="addContent_'+pid+'" >Hide "Add content" icon</span></a></div><div class="dotted"><img src="//www.ibm.com/i/c.gif" width="1" height="1" alt=""/></div>'
}portletMenuHtml=portletMenuHtml+'<div class="tab-edit-selection" style="font-weight: normal;" onmouseover="if (typeof udelayhide!=\'undefined\') clearTimeout(udelayhide)"><a href="javascript:lytMgr.removePortlet(\'div_'+pid+'\');void(0);" style="text-decoration:none;color:#5c81a7; font-family:verdana,arial,sans-serif; font-size:10px;" class="smallplainlink">Delete portlet</a></div></div></div></td><td width="9%"><a href="javascript:lytMgr.removePortlet(\'div_'+pid+'\');void(0);" class="smallplainlink"><img src="http://www.ibm.com/developerworks/i/spaces/dark-grey/portlet_delete.gif" width="11" height="11" border="0" alt=""></img></a></td></tr></table></div><div id="cdiv_'+pid+'" class="contentPortletContent"><span id="img_'+pid+'" class="animate-loader" title="Load module content"></span></div><div class="contentPortletOptions">';
if(isShowHideAddContent==true){portletMenuHtml=portletMenuHtml+'<div id="gadgetDiv_'+pid+'"><div class="dwfwte" title="Add content to your personalized page" gg="http://fusion.google.com/add?moduleurl=http%3A//www-128.ibm.com/developerworks/portal/PortletStateInfo/DataSourceServlet%3Fportletid%3D'+pid+'%26action%3Dview%26format%3D3%26p%3Dtrue" nv="http://www.netvibes.com/subscribe.php?module=UWA&amp;moduleUrl=http%3A//www-128.ibm.com/developerworks/portal/PortletStateInfo/DataSourceServlet%3Fportletid%3D%26action%3Dview%26format%3D4%26p%3Dtrue" my="http://add.my.yahoo.com/rss?url=http%3A//www-128.ibm.com/developerworks/portal/PortletStateInfo/DataSourceServlet%3Fportletid%3D%26action%3Dview%26format%3D5%26p%3Dtrue%26ca%3Ddgp%2Dmy" rss="http://www-128.ibm.com/developerworks/portal/PortletStateInfo/DataSourceServlet?portletid=&action=view&format=5&p=true&ca=dgp-rss" fb="http://www.facebook.com/share.php?u=http%3A//www-128.ibm.com/developerworks/portal/PortletStateInfo/DataSourceServlet%3Fportletid%3D%26action%3Dview%26format%3D6%26p%3Dtrue" style="margin-left: 94%"></div></div>'
}portletMenuHtml=portletMenuHtml+"</div>";this.element.innerHTML=portletMenuHtml;var pt=new Portlet(pageId,pid,"cdiv_"+pid,false);PortletManager.register(pid,pt);pt.load();(new lightbox($("lbOn"+pid))).activate();dwSpsPortletMenu[pid]=new Menu("portletMuCtl"+pid,"portlet-menu",'&nbsp;<img src="http://www.ibm.com/developerworks/i/spaces/dark-grey/portlet_arrow_focus.gif" width="11" height="11" border="0" alt=""></img>','&nbsp;<img src="http://www.ibm.com/developerworks/i/spaces/dark-grey/portlet_arrow.gif" width="11" height="11" border="0" alt=""></img>',0);
Feeder.init()}}},handleAddContent:function(portletId){if(document.getElementById("addContent_"+portletId).innerHTML=='Show "Add content" icon'){showAddContent=true}else{showAddContent=false}new Ajax.Request("/developerworks/portal/PortletStateInfo/SpaceUsecaseServlet?use_case=addcontent&",{parameters:"actiontype=addcontent&locale=en_US&portletid="+portletId+"&showaddcontent="+showAddContent,onComplete:function(t){},onSuccess:function(t){var json=eval("("+t.responseText+")");if(document.getElementById("addContent_"+portletId).innerHTML=='Hide "Add content" icon'){document.getElementById("addContent_"+portletId).innerHTML='Show "Add content" icon';
document.getElementById("gadgetDiv_"+portletId).style.display="none"}else{document.getElementById("addContent_"+portletId).innerHTML='Hide "Add content" icon';document.getElementById("gadgetDiv_"+portletId).style.display="block"}if(typeof udelayhide!="undefined"){clearTimeout(udelayhide)}udelayhide=setTimeout("dwSpsPortletMenu["+portletId+"].hide()",500)},onFailure:function(t){alert("onFail: "+t.statusText)},asynchronous:false,method:"get"})},removePortlet:function(A){this.elmtId=A;if(window.confirm("Are you sure you want to delete this portlet?")){new Ajax.Request("/developerworks/portal/PortletStateInfo/SpaceUsecaseServlet",{parameters:"rand="+(new Date()).getTime()+Math.random()+"&use_case=manageportlet&action=remove&PORTLET_ID="+getPortletId(A),onComplete:function(B){},onSuccess:this.processRemovePortlet.bindAsEventListener(this),onFailure:function(B){alert("onFail: "+B.statusText)
},asynchronous:false,method:"get"})}},processRemovePortlet:function(t){var json;if(t.responseText){json=eval("("+t.responseText+")")}if(json&&json.e!=undefined){alert(json.e)}else{var daId=$(this.elmtId).parentNode.id;PortletManager.unregister(getPortletId(this.elmtId));Sortable.removeDraggable(this.elmtId);Sortable.removeDroppable(this.elmtId);Element.remove(this.elmtId);lytMgr.updateCol(daId,Sortable.serialize(daId,{tag:"div"}))}},deserialize:function(A){var B=$A();$A(A.split("&")).each(function(D){var C=D.split("=").pop();
if(C!=""){B.push(C)}});return B},trackPortlet:function(A){this.movedPortletId=A},getMovedPortletIdandSeqNum:function(C){var A=this._getNthCol(C);var B=null;for(var D=0;D<this.cols[A].length;D++){if(this.cols[A][D]==this.movedPortletId){B=D;break}}if(B!=null){return[this.movedPortletId,A*100+100+B]}else{return[]}},getMovedTabIdandSeqNum:function(C){var A=this._getNthCol(C);var B=null;for(var D=0;D<this.cols[A].length;D++){if(this.cols[A][D]==this.movedPortletId){B=D;break}}if(B!=null){return[this.movedPortletId,B]
}else{return[]}},getSeqNum:function(D,C){var A=this._getNthCol(D);var B=null;for(var E=0;E<this.cols[A].length;E++){if(this.cols[A][E]==C){B=E;break}}if(B!=null){return A*100+100+B}else{return null}}};var PortletTypeObserver=Class.create();PortletTypeObserver.prototype={initialize:function(A,B){this.ptElmt=$(A);this.ptDesElmt=$(B);this.pos=Position.cumulativeOffset(this.ptElmt);this.ptDesElmt.style.position="absolute";this.ptDesElmt.style.width="150px";this.onmouseover=this.showPtDes.bindAsEventListener(this);
this.onmouseout=this.hidePtDes.bindAsEventListener(this);this.activatePtDes()},getDesElmtId:function(){return this.ptDesElmt.id},showPtDes:function(A){this.ptDesElmt.style.left=A.clientX+"px";this.ptDesElmt.style.top=10+"px"},hidePtDes:function(){this.ptDesElmt.style.display="none"},activatePtDes:function(){Event.observe(this.ptElmt,"mouseover",this.onmouseover);Event.observe(this.ptElmt,"mouseout",this.onmouseout)},deactivatePtDes:function(){Event.stopObserving(this.ptElmt,"mouseover",this.onmouseover);
Event.stopObserving(this.ptElmt,"mouseout",this.onmouseout)}};var PortletTypeManager={portletTypes:{},addObserver:function(A,B){PortletTypeManager.portletTypes[A]=B},getObserver:function(A){return PortletTypeManager.portletTypes[A]},removeObserver:function(A){var B=this.getObserver(A);if(B){B.hidePtDes();delete B}}};var Menu=Class.create();Menu.prototype={initialize:function(B,D,C,E,A){this.MuCtrl=$(B);this.MuCont=$(D);this.expandTitle=C;this.collapseTitle=E;this.t=A;this.readjust();this.toggle()
},getId:function(){return this.MuCtrl.id},readjust:function(){if(this.MuCont.style.position=="absolute"){var A=Position.cumulativeOffset(this.MuCtrl);this.MuCont.style.left=A[0]+"px";this.MuCont.style.top=A[1]+"px"}},show:function(){if(this.t){this.readjust();this.MuCont.show();this.MuCtrl.innerHTML=this.expandTitle;this.t=0}},hide:function(){if(!this.t){this.MuCont.hide();this.MuCtrl.innerHTML=this.collapseTitle;this.t=1}},toggle:function(){if(this.t){this.readjust();this.MuCont.show();this.MuCtrl.innerHTML=this.expandTitle;
if(this.MuCtrl.id=="PtMuCtl"){Element.addClassName("body-wrapper-div","body-wrapper-menu");Element.removeClassName("body-wrapper-div","body-wrapper");Element.addClassName("content-wrapper-div","content-wrapper-menu");Element.removeClassName("content-wrapper-div","content-wrapper")}this.t=0}else{this.MuCont.hide();this.MuCtrl.innerHTML=this.collapseTitle;if(this.MuCtrl.id=="PtMuCtl"){Element.removeClassName("body-wrapper-div","body-wrapper-menu");Element.addClassName("body-wrapper-div","body-wrapper");
Element.removeClassName("content-wrapper-div","content-wrapper-menu");Element.addClassName("content-wrapper-div","content-wrapper")}this.t=1}}};RadioMenu=Class.create();Object.extend(Object.extend(RadioMenu.prototype,Menu.prototype),{addToGroup:function(A){this.group=A},toggle:function(){if(this.t){if(this.group!=undefined){for(var A=0;A<this.group.length;A++){if(this.group[A].getId()!=this.MuCtrl.id){this.group[A].hide()}}}this.readjust();this.MuCont.show();this.MuCtrl.innerHTML=this.expandTitle;
this.t=0}else{this.MuCont.hide();this.MuCtrl.innerHTML=this.collapseTitle;this.t=1}}});var LockMonitor=Class.create();LockMonitor.prototype={initialize:function(lockConf,lockedBy,screenName,contextRoot,spaceId){dwns={};dwns.lockConfUnknown=0;dwns.lockConfEnabled=1;dwns.lockConfDisabled=2;dwns.lockEnforced=(lockConf==null)?dwns.lockConfUnknown:(lockConf)?dwns.lockConfEnabled:dwns.lockConfDisabled;dwns.screenName=screenName;dwns.contextRoot=contextRoot;dwns.spaceId=spaceId;var _lockEnf=$("_lockenf")||document.createElement("DIV");
_lockEnf.id="_lockenf";_lockEnf.style.display="none";document.getElementsByTagName("body").item(0).appendChild(_lockEnf);lockconfprobe=new Ajax.PeriodicalUpdater("_lockenf","/developerworks/portal/PortletStateInfo/SpaceUsecaseServlet",{parameters:"rand="+(new Date()).getTime()+Math.random()+"&use_case=spacelockuc&action=getlockconfig&spaceid="+spaceId,onSuccess:function(t){var json=eval("("+t.responseText+")");if(json&&json.p!=undefined&&json.p=="true"){(dwns.lockEnforced==dwns.lockConfUnknown||dwns.lockEnforced==dwns.lockConfEnabled)?dwns.lockEnforced=dwns.lockConfEnabled:window.location.reload()
}else{(dwns.lockEnforced==dwns.lockConfUnknown||dwns.lockEnforced==dwns.lockConfDisabled)?dwns.lockEnforced=dwns.lockConfDisabled:window.location.reload()}},onFailure:function(t){alert(t.statusText);lockconfprobe.stop();window.location.href="/developerworks/spaces/"+dwns.contextRoot},asynchronous:true,frequency:120,method:"get"});if(dwns.lockEnforced==dwns.lockConfEnabled){var _lock=$("_lockstat")||document.createElement("DIV");_lock.id="_lockstat";_lock.style.display="none";document.getElementsByTagName("body").item(0).appendChild(_lock);
var _info=$("_lbOnInfo")||document.createElement("a");document.getElementsByTagName("body").item(0).appendChild(_info);_info.id="_lbOnInfo";_info.href="/developerworks/portal/PortletStateInfo/spacejsp/alert.jsp?m="+encodeURIComponent('<table><tr><td><p><b>Lock is being used by xx</b></p><p><a href="javascript:lockMon.takeLock();void(0);">Take lock from xx</a><span id="lockmsg"></span></p><p><a href="/developerworks/spaces'+dwns.contextRoot+'">Go to view mode of this space</a></p></td></tr></table>');
Element.addClassName(_info,"lbOn");addLightboxMarkup();if(lockedBy!="null"&&lockedBy!=dwns.screenName){_info.href=_info.href.replace(/xx/g,lockedBy);(new lightbox($("_lbOnInfo"))).activate()}else{lockprobe=new Ajax.PeriodicalUpdater("_lockstat","/developerworks/portal/PortletStateInfo/SpaceUsecaseServlet",{parameters:"rand="+(new Date()).getTime()+Math.random()+"&use_case=spacelockuc&action=lockedby&spaceid="+spaceId,onSuccess:function(t){var json=eval("("+t.responseText+")");if(json&&json.p!=undefined&&json.p!=dwns.screenName){if(json.p!="null"){_info.href=_info.href.replace(/xx/g,json.p);
(new lightbox($("_lbOnInfo"))).activate();lockprobe.stop()}}},onFailure:function(t){alert(t.statusText);lockprobe.stop();window.location.href="/developerworks/spaces/"+dwns.contextRoot},asynchronous:true,frequency:30,method:"get"})}}},takeLock:function(){new Ajax.Request("/developerworks/portal/PortletStateInfo/SpaceUsecaseServlet",{parameters:"rand="+(new Date()).getTime()+Math.random()+"&use_case=spacelockuc&action=forcelock&spaceid="+dwns.spaceId,onSuccess:function(t){var json=eval("("+t.responseText+")");
if(json&&json.p!=undefined&&json.p==dwns.screenName){setTimeout("window.location.reload()",2)}else{if(json&&json.p!=undefined){dwns.screenName=json.p;$(lockmsg).innerHTML='<font color="red">Lock couldn\'t be obtained.</font>';window.location.href="/developerworks/spaces/"+dwns.contextRoot}else{alert("lock state unknown")}}},onFailure:function(t){alert(t.statusText);window.location.href="/developerworks/spaces/"+dwns.contextRoot},asynchronous:false,method:"get"})}};function getPortletId(A){return $(A).id.substring(4)
}function getPortletTypeId(A){return $(A).id.substring(6)}function setActiveStyleSheet(D){var C,B,A;for(C=0;(B=document.getElementsByTagName("link")[C]);C++){if(B.getAttribute("rel").indexOf("style")!=-1&&B.getAttribute("title")){B.disabled=true;if(B.getAttribute("title")==D){B.disabled=false}}}}function getActiveStyleSheet(){var B,A;for(B=0;(A=document.getElementsByTagName("link")[B]);B++){if(A.getAttribute("rel").indexOf("style")!=-1&&A.getAttribute("title")&&!A.disabled){return A.getAttribute("title")
}}return null}function getPreferredStyleSheet(){var B,A;for(B=0;(A=document.getElementsByTagName("link")[B]);B++){if(A.getAttribute("rel").indexOf("style")!=-1&&A.getAttribute("rel").indexOf("alt")==-1&&A.getAttribute("title")){return A.getAttribute("title")}}return null}function prepareBuffer(){var B=document.createElement("p");var A=document.createElement("input");A.setAttribute("type","hidden");A.setAttribute("value","1");A.setAttribute("id","virtualbufferupdate");A.setAttribute("name","virtualbufferupdate");
B.appendChild(A);document.body.appendChild(B)}function updateBuffer(){var A=$("virtualbufferupdate");if(A){if(A.getAttribute("value")=="1"){A.setAttribute("value","0")}else{A.setAttribute("value","1")}}}if(typeof (dwDelicious)=="undefined"){dwDelicious={}}dwDelicious.Mp3=Delicious.Mp3;dwDelicious.Mp3.themeName="blue-gradient";dwDelicious.Mp3.go=function(){var D=getActiveStyleSheet();if(typeof (D)=="undefined"||D==null){D=dwDelicious.Mp3.themeName}else{dwDelicious.Mp3.themeName=D}var C=document.getElementsByTagName("a");
for(var B=0,E;E=C[B];B++){if(E.href.match(/\.mp3$/i)&&(E.previousSibling!=null&&E.previousSibling.nodeName=="IMG")){var A=E.previousSibling;A.src="//www.ibm.com/developerworks/i/spaces/"+D+"/aud.gif";A.title="listen";A.height=A.width=16}if(E.href.match(/\.mp3$/i)&&(E.previousSibling==null||E.previousSibling.nodeName!="IMG")){var A=document.createElement("img");A.src="//www.ibm.com/developerworks/i/spaces/"+D+"/aud.gif";A.title="listen";A.height=A.width=16;A.style.border="none";A.style.marginRight="0.5em";
A.style.cursor="pointer";A.onclick=Delicious.Mp3.makeToggle(A,E.href);E.parentNode.insertBefore(A,E)}}};dwDelicious.Mp3.destroy=function(){Delicious.Mp3.playimg.src="//www.ibm.com/developerworks/i/spaces/"+dwDelicious.Mp3.themeName+"/aud.gif";Delicious.Mp3.playimg=null;Delicious.Mp3.player.removeChild(Delicious.Mp3.player.firstChild);Delicious.Mp3.player.parentNode.removeChild(Delicious.Mp3.player);Delicious.Mp3.player=null};dwDelicious.addLoadEvent=function(B){var A=window.onload;if(typeof A!="function"){window.onload=B
}else{window.onload=function(){A();B()}}};dwDelicious.addLoadEvent(dwDelicious.Mp3.go);if(typeof (dwTactic)=="undefined"){dwTactic={}}dwTactic.addTC=function(){if(typeof (setDefaultQuery)!="undefined"){var B=($("tacticDiv")!=null||$("tacticDiv")!="undefined")?$("tacticDiv").innerHTML:"";setDefaultQuery((B=="null"||B=="")?"defaultHere":B);var A=$A(document.getElementsByTagName("a"));A.each(function(C){if(C.href.match(/ibm\.com/i)&&!C.href.match(/s_tact/i)&&!C.href.match(/\.nsf/i)){linkQueryAppend(C)
}})}};Event.observe(window,"load",function(A){dwTactic.addTC()},false);String.prototype.trim=function(){a=this.replace(/^\s+/,"");return a.replace(/\s+$/,"")};function URLencode(A){return escape(A).replace(/\+/g,"%2B").replace(/\"/g,"%22").replace(/\'/g,"%27")}checkEnter=function(B){var A;if(window.event){A=B.keyCode}else{A=B.which}if(A==13){return true}else{return false}};
