/**
 * doijs package
 * 
 * @author donna iwan setiawan
 * @version 0.1 
 * copyright - (c) 2007 - 2008 donna iwan setiawan
 * license - GPL version 3 or any later version <http://www.gnu.org/licenses/gpl-3.0.txt>
 */
doi.widget.frame=function(element,configuration){doi.widget.frame.baseConstructor.call(this);this._element=element;this._onLoadRegistered=false;this._parentNode=null;this._timer;this.className='df';this.element={frame:null,shadow:null,iframe:null};this.fx=[];this.height=0;this.left=0;this.offsetLeft=0;this.offsetTop=0;this.shadow={visible:false,distance:5,className:this.className+'_shadow',style:''};this.style='';this.timeout=-1;this.top=0;this.visible=false;this.width=0;this.zIndex=1;if(!configuration){configuration={};}this.activateTimer=function(active){if(!this.visible || this.timeout <=0){return;};if(active){this.timer=window.setTimeout(this.toString()+'.hide()',this.timeout);}else{if(this.timer){window.clearTimeout(this.timer);}}};this.draw=function(buffer,parentNode){var o='';var sZIndex='';if(this.zIndex > 0){sZIndex='z-index:'+this.zIndex+';';}if(this.isIframeVisible()){o+='<iframe id="ifr_'+this.id+'" style="visibility:hidden;display:none;position:absolute;'+sZIndex+'" frameborder="0" scrolling="no"></iframe>';}if(this.shadow.visible){if(doi.browser.getName()=='Explorer'){o+='<div id="sh_'+this.id+'" style="position:absolute;visibility:hidden;display:none;'+sZIndex+'filter:blur(direction=135,strength='+this.shadow.distance+',add=1);" align="left"><div class="'+this.shadow.className+'" style="'+this.shadow.style+'"></div></div>';}else{o+='<div id="sh_'+this.id+'" class="'+this.shadow.className+'" style="visibility:hidden;display:none;position:absolute;'+sZIndex+this.shadow.style+'"></div>';}}o+='<div id="'+this.id+'" class="'+this.className+'" style="visibility:hidden;display:none;position:absolute;'+sZIndex+this.style+'"';if(this.timer_timeout > 0){o+=' onmouseover="'+this.toString()+'.onMouseOver(event)" onmouseout="'+this.toString()+'.onMouseOut(event,this)"';}o+='onclick="'+this.toString()+'.onClick(event)">';if(buffer){if(this._element){if(this._element.tagName){var div=document.createElement('div');div.appendChild(this._element);o+=div.innerHTML;}else{var tmp=doi.dom.getElementById(this._element);if(tmp){var div=document.createElement('div');div.appendChild(tmp);o+=div.innerHTML;}else{o+=this._element;}}o+='</div>';return o;}return '';}else{if(!this._onLoadRegistered){this._parentNode=parentNode;doi.event.addEventListener(window,'load',this.toString()+'.draw()');this._onLoadRegistered=true;o+='</div>';document.write(o);}else{o='';var el=doi.dom.getElementById(this.id);var sh=doi.dom.getElementById('sh_'+this.id);var ifr=doi.dom.getElementById('ifr_'+this.id);this.element.frame=el;this.element.shadow=sh;this.element.iframe=ifr;if(this._element){if(this._element.tagName){var div=document.createElement('div');div.appendChild(this._element);o+=div.innerHTML;}else{var tmp=doi.dom.getElementById(this._element);if(tmp){var div=document.createElement('div');div.appendChild(tmp);o+=div.innerHTML;}else{o+=this._element;}}}if(this.element.frame){this.element.frame.innerHTML=o;}if(this._parentNode){if(this._parentNode.tagName){if(this.element.shadow){this._parentNode.appendChild(this.element.shadow);}if(this.element.iframe){this._parentNode.appendChild(this.element.iframe);}if(this.element.frame){this._parentNode.appendChild(this.element.frame);}}}}}};this.hide=function(){if(!this.visible){return;}var el=this.element.frame;var sh=this.element.shadow;var ifr=this.element.iframe;if(el){el.style.display='none';el.style.visibility='hidden';}if(sh){sh.style.display='none';sh.style.visibility='hidden';}if(ifr){ifr.style.display='none';ifr.style.visibility='hidden';}this.visible=false;if(this.timeout > 0 && this._timer){window.clearTimeout(this.timer);}else if(this.timeout==0){doi.event.removeEventListener(document,'click',this.toString()+'.onWindowClick()');}if(doi.message){doi.message.throwMessage('DOIFRAME_HIDE',{instance:this});}};this.isIframeVisible=function(){return(doi.browser.getName()=='Explorer' && doi.browser.getVersion()>=6);};this.moveTo=function(l,t){if(!this.visible){return;}var el=this.element.frame;var sh=this.element.shadow;var ifr=this.element.iframe;if(el){el.style.left=l+'px';el.style.top=t+'px';if(sh){if(sh.childNodes[0]){sh.style.left=l+'px';sh.style.top=t+'px';}else{sh.style.left=l+this.shadow.distance+'px';sh.style.top=t+this.shadow.distance+'px';}}if(ifr){ifr.style.left=l+'px';ifr.style.top=t+'px';}this.offsetLeft=l;this.offsetTop=t;var pos=doi.dom.getPos(el);this.left=pos.x;this.top=pos.y;}};this.onClick=function(event){doi.event.stopPropagation(event);if(doi.message){doi.message.throwMessage('DOIFRAME_ONCLICK',{instance:this});}};this.onMouseOut=function(event,element){doi.event.setEvent(event);doi.event.stopPropagation();var reltg=doi.event.toTarget;if(!reltg){return;}while((reltg !=element)&&(reltg.nodeName !='BODY')&&(reltg.nodeName !='HTML')){reltg=reltg.parentNode;}if(reltg==element){return;}this.activateTimer(true);};this.onMouseOver=function(event){doi.event.stopPropagation(event);if(this.timer){window.clearTimeout(this.timer);}};this.onWindowClick=function(){if(this.visible){this.hide();}};this.relativeMoveTo=function(l,t){this.moveTo(this.offsetLeft+l,this.offsetTop+t);};this.resize=function(){if(!this.visible){return;}var el=this.element.frame;var sh=this.element.shadow;var ifr=this.element.iframe;if(el){if(sh){if(this.zIndex > 0){sh.style.zIndex=el.style.zIndex;}if(sh.childNodes[0]){sh.style.width=el.offsetWidth+this.shadow.distance+'px';sh.style.height=el.offsetHeight+this.shadow.distance+'px';sh.childNodes[0].style.width=el.offsetWidth+'px';sh.childNodes[0].style.height=el.offsetHeight+'px';}else{sh.style.width=el.offsetWidth+'px';sh.style.height=el.offsetHeight+'px';}}if(ifr){if(this.zIndex > 0){ifr.style.zIndex=el.style.zIndex;}if(this.shadow.visible){ifr.style.width=this.shadow.distance+el.offsetWidth+'px';ifr.style.height=this.shadow.distance+el.offsetHeight+'px';}else{ifr.style.width=el.offsetWidth+'px';ifr.style.height=el.offsetHeight+'px';}}this.width=el.offsetWidth;this.height=el.offsetHeight;}};this.setConfiguration=function(configuration){this.className=configuration.className || 'df';this.shadow.className=this.className+'_shadow';this.style=configuration.style || '';this.zIndex=doi.dom.parseInt(configuration.zIndex);this.setShadow(configuration.shadow);};this.setContent=function(element){var elmFrame=doi.dom.getElementById(this.id);if(elmFrame){if(element){if(element.tagName){var div=document.createElement('div');div.appendChild(elmFrame);elmFrame.innerHTML=div.innerHTML;}else{var tmp=doi.dom.getElementById(element);if(tmp){var div=document.createElement('div');div.appendChild(tmp);elmFrame.innerHTML=div.innerHTML;}else{elmFrame.innerHTML=element;}}this.resize();}}};this.setShadow=function(shadow){if(typeof shadow=='object'){this.shadow.visible=!!shadow.visible;this.shadow.distance=doi.dom.parseInt(shadow.distance);this.shadow.style=shadow.style || this.shadow.style;this.shadow.className=shadow.className || this.shadow.className;}else{this.shadow.visible=!!shadow;}};this.setTimerTimeout=function(val){this.timeout=doi.dom.parseInt(val);};this.show=function(l,t){if(this.visible){return;}var el=doi.dom.getElementById(this.id);var sh=doi.dom.getElementById('sh_'+this.id);var ifr=doi.dom.getElementById('ifr_'+this.id);this.element.frame=el;this.element.shadow=sh;this.element.iframe=ifr;if(el){el.style.display='block';el.style.visibility='visible';if(l==null){l=el.offsetLeft;}if(t==null){t=el.offsetTop;}el.style.left=l+'px';el.style.top=t+'px';if(sh){if(this.zIndex > 0){sh.style.zIndex=el.style.zIndex;}if(sh.childNodes[0]){sh.style.left=l+'px';sh.style.top=t+'px';sh.style.width=el.offsetWidth+this.shadow.distance+'px';sh.style.height=el.offsetHeight+this.shadow.distance+'px';sh.childNodes[0].style.width=el.offsetWidth+'px';sh.childNodes[0].style.height=el.offsetHeight+'px';}else{sh.style.left=l+this.shadow.distance+'px';sh.style.top=t+this.shadow.distance+'px';sh.style.width=el.offsetWidth+'px';sh.style.height=el.offsetHeight+'px';}sh.style.display='block';sh.style.visibility='visible';}if(ifr){if(this.zIndex > 0){ifr.style.zIndex=el.style.zIndex;}if(this.shadow.visible){ifr.style.width=this.shadow.distance+el.offsetWidth+'px';ifr.style.height=this.shadow.distance+el.offsetHeight+'px';}else{ifr.style.width=el.offsetWidth+'px';ifr.style.height=el.offsetHeight+'px';}ifr.style.left=l+'px';ifr.style.top=t+'px';ifr.style.display='block';ifr.style.visibility='visible';}this.offsetLeft=l;this.offsetTop=t;var pos=doi.dom.getPos(el);this.left=pos.x;this.top=pos.y;this.width=el.offsetWidth;this.height=el.offsetHeight;}this.visible=true;if(this.timeout > 0){this._timer=window.setTimeout(this.toString()+'.hide()',this.timeout);}else if(this.timeout==0){doi.event.addEventListener(document,'click',this.toString()+'.onWindowClick()');}if(doi.message){doi.message.throwMessage('DOIFRAME_SHOW',{instance:this});}};this.setConfiguration(configuration);};doi.extend(doi.widget.frame,doi.widget.base);
