/*  SkyByteUI.js v1.0-beta, May 17 2007
 *  (c) 2007 Aleksandras Ilarionovas (Alex)
 *
 *  SkyByteUI.js is freely distributable under the terms of an MIT-style license.
 *  For details, see the SkyByte.net web site: http://www.skybyte.net/scripts/
 *
 *--------------------------------------------------------------------------*/

if(!Prototype)		{ throw("SkyByteUI.js requires Prototype.js library");	}
else if(!SkyByte)	{ throw("SkyByteUI.js requires SkyByte.js library");	}

var SkyByteUI = { Version: '1.2' };

var UI = {
	options: {
		window  : false,
		overlay : false,
		position: false,
		html	: '',
		w		: 'auto',
		h		: 'auto',
		c		: '', //caption
		close	: 1,  //close
		d		: 1   //drag
	},
	_wScroll:function(w){ var sx, sy; w=w || window;
		if (w.innerHeight && w.scrollMaxY) {
			sx = document.body.scrollWidth;
			sy = w.innerHeight + w.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			sx = document.body.scrollWidth;
			sy = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			sx = document.body.offsetWidth;
			sy = document.body.offsetHeight;
		}
		return {sx:sx,sy:sy};
	},
	_wSize: function(w){ w=w || window; var T, L, W, H, d;  //modified from @ script.aculo.us
		if(w.document){ d=w.document;
			if (d.documentElement && d.documentElement.scrollTop) { T=d.documentElement.scrollTop; L=d.documentElement.scrollLeft; }
			else if(d.body){ T=d.body.scrollTop; L=d.body.scrollLeft; }
			if (w.innerWidth) { W=w.innerWidth; H=w.innerHeight; }
			else if (d.documentElement && d.documentElement.clientWidth) { W=d.documentElement.clientWidth; H=d.documentElement.clientHeight; }
			else { W=body.offsetWidth; H=body.offsetHeight; }
		}
		var wx=(L+W); var wy=(T+H); var p=this._wScroll();
		//alert('top:'+T+', left:'+L+', width:'+W+', height:'+H+', wx:'+wx+', wy:'+wy+', px:'+p.sx+', py:'+p.sy);
		return { t: T, l: L, w: W, h: H, wx:wx, wy:wy, px:p.sx, py:p.sy };
	},
	win: function(html,options){
		options=options || this.options;
		options.html=html || options.html;
		this.options=options;
		if(options.overlay){ this._overlay(options.overlay); }else{ this._overlay('off'); }
		if(options.window) { this._window(options.window);   }else{ this._window('off');  }
	},
	close: function(){ UI._overlay('off'); UI._window('off'); return false; },
	//-----------------------------------------------------------------------------
	_fixpos:function(c){ var x=c.x; var y=c.y; var w=c.w; var h=c.h; var o=this._wSize();
		if((x+w)>o.px){ x+=o.px-(x+w)-10; }else if((x+w)>o.wx){ x-=w; } if(x<0){x=0;}
		if((y+h)>o.py){ y-=o.py-(y+h)-10; }else if((y+h)>o.wy){ y-=h; } if(y<0){y=0;}
		return {x:x,y:y};
	},
	_window:function(opt) { var o,b,c,d,t,lightdata,lightbox,box,close,closef,x,y,w,h,xy,bh,sx,sy;
		if(opt=='off'){ visibility='visible'; }else{ visibility='hidden'; }
		this.switch_selects(visibility);
		lightbox=$('lightbox');
		if(visibility=='hidden'){ Mouse.start();
			if(!lightbox){
				w=opt.w || 'auto'; h=opt.h || 'auto';  close=opt.close || 0; d=opt.d || 0; c=opt.c || '';  sx=opt.sx || 0; sy=opt.sy || 0;
				lightbox=Element.add('div',{id:'lightbox'},{},{a:document.body,c:'clear'});
				if(close){
					box=Element.add('div',{},{},{a:lightbox,c:'box clear'});
					if(d){ box.style.cursor='move'; t=new Drag(box,{self:true}); }
					if(typeof close==='string'){  closef=close; }else{ closef=''; }
					box.innerHTML='<img style="cursor:pointer;" onclick="UI.close();'+closef+'" src="'+web_url+'/images/wclose.gif" alt="close window"/>';
				}
				if(box) { b=Element.wh(box); bh=b.h+1; }else{ bh=0; }
				if(c){ box=box || lightbox; box.innerHTML+='<span>'+c+'</span>'; }

				lightdata=Element.add('div',{id:'lightdata'},{},{a:lightbox});
				if(this.options.html){ lightdata.innerHTML=this.options.html; }
				switch(this.options.position){
					case 'cursor':  w=parseInt(w); h=parseInt(h);
						lightbox.style.left  =Mouse.x+sx+'px';
						lightbox.style.top   =Mouse.y+sy+'px';
						lightbox.style.width =w+'px'; 			lightdata.style.width=lightbox.style.width;
						lightbox.style.height=(h+bh)+'px';		lightdata.style.height=h+'px';
					break;
					case 'cx':
					case 'cy':
					case 'cc': 		w=parseInt(w); h=parseInt(h);
						if(this.options.position=='cx')		{ x=Mouse.x-(w/2); y=Mouse.y; }
						else if(this.options.position=='cy'){ x=Mouse.x; y=Mouse.y-(h/2); }
						else{ x=Mouse.x-(w/2); y=Mouse.y-(h/2); }
						xy=this._fixpos({x:x+sx,y:y+sy,w:w,h:h}); x=xy.x; y=xy.y;
						lightbox.style.left  =x+'px';
						lightbox.style.top   =y+'px';
						lightbox.style.width =w+'px'; 			lightdata.style.width=lightbox.style.width;
						lightbox.style.height=(h+bh)+'px';		lightdata.style.height=h+'px';
					break;
					case 'center':	w=parseInt(w); h=parseInt(h); o=this._wSize();
						lightbox.style.left  =Math.abs(o.l+((o.w-w)/2)+sy)+'px';
						lightbox.style.top   =Math.abs(o.t+((o.h-h)/2)+sy)+'px';
						lightbox.style.width =w+'px'; 			lightdata.style.width=lightbox.style.width;
						lightbox.style.height=(h+bh)+'px';		lightdata.style.height=h+'px';
					break;
					case 'fill':	o=this._wSize();
						lightbox.style.left  =20+sx+'px';
						lightbox.style.top   =20+sy+'px';
						lightbox.style.width =(o.wx-60)+'px';	lightdata.style.width=lightbox.style.width;
						lightbox.style.height=(o.wy-60)+'px';	lightdata.style.height=lightbox.style.height;
					break;
				}
			}
		}else{
			if(lightbox){ Element.rem(lightbox); }
		}
	},
	_overlay:function(opt){ var w,overlay;
		if(opt=='off'){ visibility='visible'; }else{ visibility='hidden'; }
		this.switch_selects(visibility);
		overlay = $('overlay');
		if(visibility=='hidden'){
			if(!overlay){	w=this._wSize();
				overlay=Element.add('div',{id:'overlay'},{},{a:document.body});
				//overlay.onclick = function(){ UI._overlay('off'); UI._window('off'); return false; }
				overlay.style.height=(w.wy)+'px';
				Element.setOpacity(overlay,0.4);
			}
		}else{
			if(overlay)	{ Element.rem(overlay);  }
		}
	},
	switch_selects:function(visibility){
		if(Browser.name!='IE'){ return; }
		selects = document.getElementsByTagName('select');
		for(i = 0; i < selects.length; i++){
			selects[i].style.visibility = visibility;
			/*always hide selects in temp
			if(selects[i].offsetParent.id == 'temp'){						//Firefox
				selects[i].style.visibility = 'hidden';
			}else if(selects[i].offsetParent.parentNode.id == 'tempdata'){ //IE, Opera
				selects[i].style.visibility = 'hidden';
			}*/
		}
	}

};
//-------------------------------------------------------------

Element.setOpacity = function(element, value){
  element= $(element);
  if (value == 1){
    Element.setStyle(element, { opacity:
      (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ?
      0.999999 : null });
    if(/MSIE/.test(navigator.userAgent))
      Element.setStyle(element, {filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')});
  } else {
    if(value < 0.00001) value = 0;
    Element.setStyle(element, {opacity: value});
    if(/MSIE/.test(navigator.userAgent))
     Element.setStyle(element,
       { filter: Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'') +
                 'alpha(opacity='+value*100+')' });
  }
}
