var dialogbox={imageDir:site_url()+'js/dialogbox/',images:['dialog_bottom.gif','dialog_bottom.png','dialog_button.png','dialog_top.gif','dialog_top.png','fff_trans.gif','fff_trans.png','loadbar.gif'],defaults:{message:'',type:'alert',onConfirm:function(){},onCancel:function(){},okText:'OK',cancelText:'Cancel',promptText:'',promptType:'text'},open:function(params){if(document.getElementById('dialogbox_outer')){dialogbox.close();}
params=dialogbox.params(params,'defaults');dialogbox.ieSelHack('none');var mask=document.createElement('div');mask.setAttribute('id','dialogbox_mask');mask.style.height=dialogbox.maxHeight()+'px';var outer=document.createElement('form');dialogbox.attributes(outer,{id:'dialogbox_outer',action:''});outer.className='dialogbox_'+params.type;var inner=document.createElement('div');inner.setAttribute('id','dialogbox_inner');var msgDiv=document.createElement('div');msgDiv.setAttribute('id','dialogbox_message');var buttons=document.createElement('div');buttons.className='dialogbox_buttons';buttons.setAttribute('id','dialogbox_buttons');inner.appendChild(msgDiv);inner.appendChild(buttons);outer.appendChild(inner);document.body.appendChild(mask);document.body.appendChild(outer);dialogbox.oldkeydown=document.onkeydown;dialogbox.set(params);return false;},set:function(params){var p=dialogbox.getPrompt();var msgDiv=document.getElementById('dialogbox_message');var outer=document.getElementById('dialogbox_outer');var inner=document.getElementById('dialogbox_inner');var buttons=dialogbox.buttons();if(!msgDiv||!outer||!inner||!buttons){return false;}
params=dialogbox.params(params,'box');msgDiv.innerHTML=buttons.innerHTML='';if(typeof(params.message)==='string'){msgDiv.innerHTML=params.message;}
else{msgDiv.appendChild(params.message);}
var prompt=document.getElementById('dialogbox_input');if(prompt){prompt.parentNode.removeChild(prompt);}
if(params.type==='prompt'){var pInput=document.createElement('input');dialogbox.attributes(pInput,{type:params.promptType==='password'?'password':'text',id:'dialogbox_input',value:p!==false?p:params.promptText});inner.appendChild(pInput);}
inner.appendChild(buttons);buttons.setAttribute('id',params.type==='alert'?'dialogbox_button':'dialogbox_buttons');var ok=document.createElement('input');var func=function(a){if(!document.getElementById('dialogbox_loadbar')){params[a]();dialogbox.close(ok);}
return false;};var onConfirm=function(){return func('onConfirm');};var onCancel=function(){return func('onCancel');};outer.onsubmit=onConfirm;dialogbox.onCancel=params.type!=='alert'?onCancel:onConfirm;dialogbox.attributes(ok,{id:'dialogbox_ok','name':'dialogbox_ok',type:'submit',value:params.okText});buttons.appendChild(ok);var cancel;if(params.type!=='alert'){cancel=document.createElement('input');dialogbox.attributes(cancel,{id:'dialogbox_cancel',type:'button',value:params.cancelText});buttons.appendChild(cancel);cancel.onclick=onCancel;}
dialogbox.valign();dialogbox.focus();document.onkeydown=dialogbox.keydown;return true;},close:function(ok){if(ok&&!ok.offsetHeight){return;}
document.onkeydown=typeof(dialogbox.oldkeydown)==='function'?dialogbox.oldkeydown:function(){};dialogbox.focussed=false;dialogbox.box={};dialogbox.ieSelHack('');var box=document.getElementById('dialogbox_outer');if(box){box.parentNode.removeChild(box);}
var mask=document.getElementById('dialogbox_mask');if(mask){mask.parentNode.removeChild(mask);}},addLoadbar:function(){if(!document.getElementById('dialogbox_outer')){dialogbox.open();}
dialogbox.set(dialogbox.box);var b=dialogbox.buttons();var l=document.createElement('div');l.setAttribute('id','dialogbox_loadbar');l.style.height=b.offsetHeight+'px';b.appendChild(l);try{b.getElementsByTagName('input')[0].focus();}catch(e){}},removeLoadbar:function(){var l=document.getElementById('dialogbox_loadbar');if(l&&l.parentNode){l.parentNode.removeChild(l);}
dialogbox.focus();},getPrompt:function(){var p=document.getElementById('dialogbox_input');return p?p.value:false;},setPrompt:function(val){var p=document.getElementById('dialogbox_input');if(p){p.value=val;}},exists:function(){return document.getElementById('dialogbox_outer')?true:false;},attributes:function(elm,atts){for(var i in atts){if(atts[i]!==undefined){elm.setAttribute(i,atts[i]);}}},params:function(params,v){if(typeof(params)!=='object'){params={message:params};}
for(var j in dialogbox[v]){if(params[j]===undefined){params[j]=dialogbox[v][j];}}
dialogbox.box=params;return params;},buttons:function(){var b=document.getElementById('dialogbox_buttons');if(!b){b=document.getElementById('dialogbox_button');}
return b?b:false;},focus:function(){var outer=document.getElementById('dialogbox_outer');var ok=document.getElementById('dialogbox_ok');if(!outer||!ok){return;}
var elms=outer.elements;var fieldtypes=['input','select','textarea','button'];var j,focussed,id,n,t;var blur=function(){this.className=this.className.replace(/focussed/,'');dialogbox.focussed=false;};var focus=function(){dialogbox.focussed=false;this.className+=' focussed';var id=this.getAttribute('id');if(id==='dialogbox_ok'){dialogbox.focussed='ok';}
else if(id==='dialogbox_cancel'){dialogbox.focussed='cancel';}
else{dialogbox.focussed=id;}};var over=function(){this.className+=' hover';};var out=function(){this.className=this.className.replace(/hover/,'');};for(var i=0;i<elms.length;i++){t=elms[i].getAttribute('type');if(t==='hidden'){continue;}
n=elms[i].nodeName.toLowerCase();for(j=0;j<fieldtypes.length;j++){if(n===fieldtypes[j]){elms[i].onfocus=focus;elms[i].onblur=blur;elms[i].onmouseover=over;elms[i].onmouseout=out;if(!focussed){elms[i].focus();if(n==='input'&&(t==='text'||t==='password')){elms[i].select();}
focussed=true;}
break;}}}},keydown:function(evt){var ok=document.getElementById('dialogbox_ok');var cancel=document.getElementById('dialogbox_cancel');if(!ok){return;}
var entered;var f=dialogbox.focussed;try{entered=evt.which;}
catch(e){entered=event.keyCode;}
if(entered==27){dialogbox.onCancel();}
else if(entered==39||entered==40){if(f==='ok'&&cancel){cancel.focus();}
if(f==='cancel'||f==='ok'){return false;}}
else if(entered==37||entered==38){if(f==='cancel'&&cancel){ok.focus();}
if(f==='cancel'||f==='ok'){return false;}}},pageHeight:function(){if(window.innerHeight&&window.scrollMaxY){return window.innerHeight+window.scrollMaxY;}
else if(document.body.scrollHeight>document.body.offsetHeight){return document.body.scrollHeight;}
else{return document.body.offsetHeight+document.body.offsetTop;}},winHeight:function(){if(typeof window.innerWidth==='number'){return window.innerHeight;}
else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight)){return document.documentElement.clientHeight;}
else if(document.body&&(document.body.clientWidth||document.body.clientHeight)){return document.body.clientHeight;}},maxHeight:function(){var p=dialogbox.pageHeight();var w=dialogbox.winHeight();return p>w?p:w;},valign:function(){var outer=document.getElementById('dialogbox_outer');if(outer){outer.style.marginTop='-'+(outer.offsetHeight/2)+'px';}
dialogbox.iePosHack();},loadImages:function(){var images=[];for(var i=0;i<dialogbox.images.length;i++){images[i]=new Image();images[i].src=dialogbox.imageDir+dialogbox.images[i];}},addEvtListener:function(elm,func,evt){if(elm.addEventListener){elm.addEventListener(evt,func,false);}
else if(elm.attachEvent){elm.attachEvent('on'+evt,func);}},removeEvtListener:function(elm,func,evt){if(elm.removeEventListener){elm.removeEventListener(evt,func,false);}
else if(elm.detachEvent){elm.detachEvent('on'+evt,func);}},iePosHack:function(){if(!window.XMLHttpRequest){var outer=document.getElementById('dialogbox_outer');if(outer){var y1=document.body.parentElement.scrollTop||document.body.scrollTop||0;var y2=dialogbox.winHeight();outer.style.top=(y1+(y2/2))+'px';window.onscroll=dialogbox.iePosHack;}}},ieSelHack:function(val){if(!window.XMLHttpRequest){var selects=document.getElementsByTagName('select');for(var i=0;i<selects.length;i++){selects[i].style.display=val;}}}};dialogbox.loadImages();
