//PopUpBox
//(c)Alex Barnard 2008/9/10
d._hasPOPUP=1
var __pop2Centre=[]//list of win to centre

function _clsPOP(id){

	var self=this

	this.id = id;
	this.div=0
	this.target=0
	this.vars=0
	this.onLoad=0
	this.onDisplay=0
	this.buttonbarHTML=''
	this.className="popup content"
	
	this.o=new Object
	this.ajax= new _clsAJAX
	this.ajax._alert=false

		
	this.popup=function(ret){
		self.display(POS_HIDE,self.target)
		self.o.buttonbar.innerHTML=self.buttonbarHTML
		self.o.content.innerHTML=ret
		if(self.onLoad)if(!self.onLoad(ret))return false
		_cache.load(self.div)
		_addFormHighlightsTo(self.div,'INPUT','SELECT','TEXTAREA','LABEL')
		_addRolloverEventTo(self.div,'div','ul',  'table','tr')
		self.div.className=self.className
		self.display(self.vars,self.target)
		//self.div.style.width=self.div.offsetWidth
		self.onLoad=0
	}
}	
function _POPcentre(){
	//Centre Listed POPups
	if(_DnD.o==0){//not being dragged
		for(w in __pop2Centre){
			var o=__pop2Centre[w]
			if(!o.onCentre){
			if(o._position==undefined)o._position=_getStyle(o,"position")
//alert("["+o._position+"] ["+_getStyle(o,"position")+"] "+o.id+" "+o.className)
				if(o._position!="fixed"){
					o.style.left=((_window("Width")-o.offsetWidth)/2)+"px"
					o.style.top=((_window("Height")-o.offsetHeight)/2)+_pageScroll("Y")+"px"
				}
			}else{
				o.onCentre()	
			}
		}	
	}
}

_clsPOP.prototype.loadPage=function(file,data,vars,target){
	this.vars=((vars&POS_SHOW)>0)?vars:(POS_SHOW|vars)
	this.target=target
	this.ajax.loadData((data==undefined)?'':data)
	this.display(POS_HIDE)
	this.div.style.width=""
	this.div.className=this.className+" minipop"
	this.buttonbarHTML=this.o.buttonbar.innerHTML
	this.o.buttonbar.innerHTML=""
	this.o.content.innerHTML='<div class="wait"><span>Please Wait...</span></div>'
	this.display(POS_SHOW|vars,target)
	this.ajax.sendReceive(file,this.popup)
}
_clsPOP.prototype.isVisible=function(){
	return (!this.div)?false:this.div._state
}
_clsPOP.prototype.define=function(){
	if(!this.div){
		var id=this.id
		this.div=_getObject(id)
		if(!this.div){
			this.div=document.createElement("DIV")
			this.div.setAttribute("id",id)
			document.getElementsByTagName("BODY")[0].appendChild(this.div)
			this.div.className=this.className
		}	
		this.div._state=0
		if(!this.div.innerHTML)
		this.div.innerHTML='<div class="shadow"></div>'+
		'<div class="popbox">'+
		'<div class="titlebar off"><span></span>'+
		'<div class="titlebutton"></div>'+
		'</div>'+
		'<div class="popupcontent"></div>'+
		'<div class="buttonbar"></div>'+
		'</div>'
		this.o["shadow"]=this.div.childNodes[0]
		this.o["box"]=this.div.childNodes[1]
		this.o["content"]=this.o.box.childNodes[1]
		this.o["buttonbar"]=this.o.box.childNodes[2]
		this.o["title"]=this.o.box.childNodes[0].childNodes[0]
		this.o["x"]=this.o.box.childNodes[0].childNodes[1]
		this.o.x.onclick=function(){_position(id)}//X button
	}
}

_clsPOP.prototype.xButton=function(){return this.o.x}

_clsPOP.prototype.display=function(vars,target){
	delete __pop2Centre[this.id]
	this.target=(target==undefined)?0:target
	this.define()
	this.o.buttonbar.style.display=(this.o.buttonbar.innerHTML.length>0)?"block":"none"
	_position(this.div,vars,target)
	if(this.div._state){
//alert(this.div.className+" "+_getStyle(this.div,"width"))
		if(!/minipop/i.test(this.div.className)){
			if(this.onDisplay)this.onDisplay()
			if(!this.target){__pop2Centre[this.id]=this.div;_POPcentre()}//align centre if no target
		}	
	}
}
_clsPOP.prototype.setElement=function(){
	var a=_clsPOP.prototype.setElement.arguments
	this.define()
	if(a.length==0)return
	var id=this.id
	//loop for each label
	for(var i=0;i<a.length;i++){
		var b=a[i].split(":=")
		o=this.o[b[0]]
		if(o){//located element in PopBox
			var html=(b[1])?b[1]:""
			if(b[0]=="buttonbar"){
				html=""//build button bar
				b=b[1].split(";")
				for(var j=0;j<b.length;j++)
					if(b[j].length>0){
						var btn=b[j].substr(1,b[j].indexOf("]")-1)
						//[*name] = when clicked keep window open
						var hold=/^\*/.test(btn)
						var fn=b[j].substr(btn.length+2)
						if(hold)btn=btn.substr(1)
						html+="<a href=\"javascript:"+(hold ? ";" : "_position('"+id+"',0,this)")
						html+="\" class=\"noline\" onclick=\""+((!fn)?";":fn.replace(/"/g,"'"))+"\">"+
							"<img class=\"popbutton\" alt=\""+btn+"\" src=\"/_lib/btn/btn_"+btn+"0.gif\" />"+
							"</a>"
					}	
			}//assign HTML to element
			o.innerHTML=html
		}	
	}
}
_clsPOP.prototype.moveDialog=function(){
	if(_DnD.o==0){//not being dragged
		if(this.div){
			this.div.style.left=((_window("Width")-this.div.offsetWidth)/2)+"px"
			this.div.style.top=((_window("Height")-this.div.offsetHeight)/2)+_pageScroll("Y")+"px"
		}	
	}	
}
_clsPOP.prototype.showList=function(state,it,file,data){
	//Popup Lists
	var self=this

	if((state&POS_HIDE)==POS_HIDE){
		if(this.div)
			this.div.onmouseout()
	}else if(!this.div){
			this.loadPage(file,data,state,it)
			this.div.onmouseout=function(){self._tmr=setTimeout(function(){self.display(POS_HIDE)}, 250)}
			this.div.onmouseover=function(){clearTimeout(self._tmr)}
	}else if((state&POS_LOAD)==POS_LOAD){
			this.loadPage(file,data,state,it)
	}else{
		this.display(state,it)	
	}	
}
_clsPOP.prototype.kill=function(){
	var self=this;setTimeout(function(){self=0},100)
}
_addEvent(window,"_scroll","_POPcentre(1)") 
_addEvent(window,"_resize","_POPcentre(1)")

