/* Copyright (c) 2009-2010 Eduardo Pereira Habkost. Todos os direitos reservados. */

function eid(elmid)
{return document.getElementById(elmid);}
function trim(s)
{var e=s.length;while(e>0&&s.charAt(e-1)==" ")
e--;var b=0;while(b<=e&&s.charAt(b)==" ")
b++;return s.slice(b,e);}
function setOnclick(elm,func)
{if(elm.addEventListener){function ClickListener(func){this.handleEvent=function(evt){evt.preventDefault();func();};}
elm.addEventListener("click",new ClickListener(func),false);}else{elm.onclick=function(){func();return false;};}}
function clearChildren(elm)
{while(elm.firstChild)elm.removeChild(elm.firstChild);}
function setElemText(div,text)
{clearChildren(div);div.appendChild(document.createTextNode(text));}
function createTagWithText(tag,text)
{var e=document.createElement(tag);e.appendChild(document.createTextNode(text));return e;}
function zeropad(val,digits)
{var s=val.toFixed(0);while(s.length<digits)
s="0"+s;return s;}
function formatMoney(cents)
{var c=Math.floor(cents);return Math.floor(cents/100)+","+zeropad(cents%100,2);}
function addOneTimeListeners(obj,map)
{var handles=[];function handlerFunc(func){return function(){for(var i=0;i<handles.length;i++)
GEvent.removeListener(handles[i]);func.apply(this,arguments);};}
for(var ev in map){var h=GEvent.addListener(obj,ev,handlerFunc(map[ev]));handles.push(h);}}
function addOneTimeListener(obj,ev,func)
{return addOneTimeListeners(obj,{ev:func});}
function pr(fn)
{wrapper=function(){try{return fn.apply(this,arguments)}catch(err){panic("function exception: "+err.message);}}
return wrapper;}
function MultiCallWaiter()
{var statuses=[];var final_cb=null;var finished=false;function checkFinished()
{if(!final_cb||finished)
return;var ok=true;for(var i=0;i<statuses.length;i++)
{var st=statuses[i];if(!st.called)
ok=false;}
if(ok){finished=true
final_cb();}}
this.wrap=function(fn){var st={called:false}
statuses.push(st);w=function(){var ret=fn.apply(this,arguments);st.called=true;checkFinished();return ret;};return w;};this.finish=function(cb){final_cb=cb;checkFinished();}}