var dummy="$Id: scone.js,v 1.1.6.2 2009-10-05 15:48:59 mjack Exp $";var _scones={};var _scone_for={};var _scone_dummy_elem=null;function scone_create(A,D,B,F){if(_scones[A]!=undefined){throw ('Scone "'+A+'" already exists.')}var K=document.getElementById(A);if(!K){throw ('Element "'+A+'" not found.')}var J=K.nodeName.toLowerCase();if(J=="table"){throw ('Element "'+A+'" cannot be used since it is a '+J+"; use a tbody instead.")}while(K.lastChild){K.removeChild(K.lastChild)}var I={info:D,cmpFn:B,cmpMode:F,elemType:J,parentSconeItemId:null,items:[],itemIdHash:{}};var E=K;var H=null;var G=null;while(E){if(E.id){if(_scone_for[E.id]!=undefined){H=_scone_for[E.id];G=E.id;break}}E=E.parentNode}if(G){I.parentSconeItemId=G;var C=_scones[H].itemIdHash[G];C.childSconeIdHash[A]=true}_scones[A]=I;return A}function scone_exists(A){return(_scones[A]!=undefined)}function scone_get_info(B){var A=_scones[B];if(A==undefined){return null}return A.info}function scone_add_item(E,C,H,S,B){var G=_scones[E];if(G==undefined){throw ('No such scone "'+E+'"')}var O=document.getElementById(E);if(!O){throw ('Element "'+E+'" not found.')}if(document.getElementById(C)){throw ('Item with id "'+C+'" already exists in the document.')}if(_scone_for[C]!=undefined){throw ('Item with id "'+C+'" already exists in "'+_scone_for[C]+'"')}var J;if(B||G.cmpFn==null){J=G.items.length}else{J=_scone_find_ipos(G,S)}var L;if(J==G.items.length){L=null}else{L=_scone_first_item_elem(G.items[J])}if(!_scone_dummy_elem){_scone_dummy_elem=document.createElement("div")}var M=null;var R="unknown";try{if(G.elemType=="tbody"){_scone_dummy_elem.innerHTML="<table><tbody>"+H+"</tbody></table>";M=_scone_dummy_elem.getElementsByTagName("tbody")[0]}else{if(G.elemType=="tr"){_scone_dummy_elem.innerHTML="<table><tbody><tr>"+H+"</tr></tbody></table>";M=_scone_dummy_elem.getElementsByTagName("tr")[0]}else{_scone_dummy_elem.innerHTML=H;M=_scone_dummy_elem}}}catch(R){}if(!M){throw ('Failed to add "'+H+'" to "'+E+'" due to: '+R)}var P=0;var V=null;var A=M.firstChild;while(A){var F=A.nextSibling;M.removeChild(A);if(A.nodeType==1){O.insertBefore(A,L);P++;if(!V){V=A}}A=F}_scone_dummy_elem.innerHTML="";var D=document.getElementById(C);if(!D){var N=0;if(L){while(L.previousSibling&&N<P){if(L.previousSibling.nodeType==1){N++}O.removeChild(L.previousSibling)}}else{while(O.lastChild&&N<P){if(O.lastChild.nodeType==1){N++}O.removeChild(O.lastChild)}}throw ('Element with id "'+C+'" not found in "'+H+'", or html is invalid.')}var Q=D.parentNode;var K=D;var U=0;while(Q&&Q!=O){K=Q;Q=Q.parentNode;U++}var Q=V;var I=0;while(Q&&Q!=K){if(Q.nodeType==1){I++}Q=Q.nextSibling}var T={id:C,info:S,offsetLeft:I,offsetUp:U,numElems:P,childSconeIdHash:{}};G.items.splice(J,0,T);G.itemIdHash[C]=T;_scone_for[C]=E;return C}function scone_get_items(B){var A=_scones[B];if(A==undefined){throw ('No such scone "'+B+'"')}var D=new Array(A.items.length);for(var C=0;C<A.items.length;C++){D[C]=A.items[C].id}return D}function scone_item_exists(A){return _scone_for[A]!=undefined}function scone_get_item_info(C){var B=_scone_for[C];if(!B){return null}var A=_scones[B];if(A==undefined){return null}if(A.itemIdHash[C]==undefined){return null}return A.itemIdHash[C].info}function scone_get_item_owner(A){return _scone_for[A]?_scone_for[A]:null}function scone_get_item_children(E){var F=[];var B=_scone_for[E];if(!B){return F}var A=_scones[B];if(A==undefined){return F}var C=A.itemIdHash[E];if(C==undefined){return F}for(var D in C.childSconeIdHash){F.push(D)}return F}function scone_get_parent_item(B){var A=_scones[B];if(A==undefined){return null}return A.parentSconeItemId}function scone_remove_item(F){var A=_scone_for[F];if(!A){throw ('Item "'+F+'" has not been added to a scone.')}var H=_scones[A];if(!H){throw ("Internal error: scone in _scone_for but not in _scones.")}var K=document.getElementById(A);if(!K){throw ('Element "'+A+'" not found.')}var I=-1;for(var E=0;E<H.items.length;E++){if(H.items[E].id==F){I=E;break}}if(I<0){throw ("Internal error: item in _scone_for but not in scone items.")}var L=H.items[I];var J=L.numElems;var C=_scone_first_item_elem(L);var D=0;while(C&&D<J){var B=C.nextSibling;if(C.nodeType==1){D++}K.removeChild(C);C=B}H.items.splice(I,1);delete H.itemIdHash[F];delete _scone_for[F];for(var G in L.childSconeIdHash){_scone_delete(G,true,true)}return }function scone_replace_item(H,D,G,F){var A=scone_get_item_owner(H);var B=[];var E=[];if(F){B=scone_get_item_children(H);E=new Array(B.length);for(var C=0;C<B.length;C++){E[C]=scone_cut(B[C])}}scone_remove_item(H);scone_add_item(A,H,D,G);for(var C=0;C<B.length;C++){if(document.getElementById(B[C])){scone_paste(B[C],E[C])}}return }function scone_set_item_info(G,F){var A=scone_get_item_owner(G);var H=_scones[A];if(!H){throw ('Could not find scone for item "'+G+'"')}var O=H.itemIdHash[G];if(!O){throw ('Could not find item "'+G+'" in scone "'+A+'"')}if(H.cmpFn==null){O.info=F;return }var I;for(var E=0;E<H.items.length;E++){if(H.items[E].id==G){I=E;break}}var M=_scone_find_ipos(H,F);var J=(I<M)?M-1:M;O.info=F;if(I==J){return }var L;if(M==H.items.length){L=null}else{L=_scone_first_item_elem(H.items[M])}var N=document.getElementById(A);if(!N){throw ('Element "'+A+'" not found.')}var K=O.numElems;var C=_scone_first_item_elem(O);var D=0;while(C&&D<K){var B=C.nextSibling;if(C.nodeType==1){D++}N.removeChild(C);N.insertBefore(C,L);C=B}H.items.splice(I,1);H.items.splice(J,0,O);return }function scone_sort(A,F){var J=_scones[A];if(J==undefined){throw ('No such scone "'+A+'"')}var M=document.getElementById(A);if(!M){throw ('Element "'+A+'" not found.')}if(J.cmpFn==null){return }if(F!=null){J.cmpMode=F}else{F=J.cmpMode}var K={};for(var H=0;H<J.items.length;H++){var C=J.items[H].id;var E=_scone_first_item_elem(J.items[H]);var L=J.items[H].numElems;var B=new Array(L);var G=0;while(E&&G<L){if(E.nodeType==1){B[G++]=E}E=E.nextSibling}K[C]=B}var D=J.cmpFn;var I=function(O,N){return D(F,O.info,N.info)};J.items.sort(I);while(M.lastChild){M.removeChild(M.lastChild)}for(var H=0;H<J.items.length;H++){var C=J.items[H].id;var B=K[C];for(var G=0;G<B.length;G++){M.appendChild(B[G])}}return }function scone_cut(A){return _scone_cut(A,false,false)}function scone_paste(B,A){_scone_paste(B,A,false)}function scone_delete(A){_scone_delete(A,false,false);return }function _scone_delete(A,I,G){var H=_scones[A];if(H==undefined){throw ('No such scone "'+A+'"')}if(!I){var J=document.getElementById(A);if(J){while(J.lastChild){J.removeChild(J.lastChild)}}}if(!G&&H.parentSconeItemId){var D=_scone_for[H.parentSconeItemId];var F=_scones[D];var B=F.itemIdHash[H.parentSconeItemId];delete B.childSconeIdHash[A]}for(var E=0;E<H.items.length;E++){var K=H.items[E];delete _scone_for[K.id];for(var C in K.childSconeIdHash){_scone_delete(C,true,true)}}delete _scones[A];return }function _scone_cut(A,I,G){var H=_scones[A];if(H==undefined){throw ('No such scone "'+A+'"')}var J={scone:H,elems:[],childScones:[],childSconeIds:[]};if(!I){var K=document.getElementById(A);if(!K){throw ('Element "'+A+'" not found.')}while(K.lastChild){J.elems.splice(0,0,K.lastChild);K.removeChild(K.lastChild)}}if(!G&&H.parentSconeItemId){var C=_scone_for[H.parentSconeItemId];var E=_scones[C];var B=E.itemIdHash[H.parentSconeItemId];delete B.childSconeIdHash[A]}for(var D=0;D<H.items.length;D++){for(var F in H.items[D].childSconeIdHash){J.childSconeIds.push(F);J.childScones.push(_scone_cut(F,true,true))}delete _scone_for[H.items[D].id]}delete _scones[A];return J}function _scone_paste(A,J,I){if(_scones[A]!=undefined){throw ('Scone "'+A+'" already exists.')}if(!I){var K=document.getElementById(A);if(!K){throw ('Element "'+A+'" not found.')}while(K.lastChild){K.removeChild(K.lastChild)}for(var F=0;F<J.elems.length;F++){K.appendChild(J.elems[F])}var C=K;var E=null;var D=null;while(C){if(C.id){if(_scone_for[C.id]!=undefined){E=_scone_for[C.id];D=C.id;break}}C=C.parentNode}if(D){J.scone.parentSconeItemId=D;var B=_scones[E].itemIdHash[D];B.childSconeIdHash[A]=true}}_scones[A]=J.scone;for(var F=0;F<J.scone.items.length;F++){var L=J.scone.items[F];_scone_for[L.id]=A}for(var F=0;F<J.childScones.length;F++){var G=J.childScones[F];var H=J.childSconeIds[F];_scone_paste(H,G,true)}return }function _scone_first_item_elem(D){var A=document.getElementById(D.id);if(!A){throw ('Element "'+D.id+'" not found.')}var C=A;for(var B=0;B<D.offsetUp;B++){C=C.parentNode}for(var B=0;B<D.offsetLeft;B++){C=C.previousSibling}return C}function _scone_find_ipos(E,D){var B=E.items;var F=E.cmpFn;var G=E.cmpMode;var H=B.length,C=-1,A;while(H-C>1){if(F(G,B[A=H+C>>1].info,D)<0){C=A}else{H=A}}if(H<B.length&&F(G,B[H].info,D)==0){return H+1}else{return H}};