var _DnD=new Object;_DnD.o=0;
var __loaded=false
var messWin=0
var d=document
var CSS_STYLES=["_cssHREF","borderLeftColor","borderTopColor","borderRightColor","borderBottomColor","backgroundImage","backgroundColor"]
var roCSS=[],ulCSS=[]

roCSS=_loadCSS(".inputhover",".inputfocus",".inputchanged")
ulCSS=_loadCSS(".ulhover")

function _start(){
	__loaded=true
	_fixObjects()
	_showHideList()
	_ulListHighlight()
	addFormHighlightsTo(document,'INPUT','SELECT','TEXTAREA','LABEL')
	OS_div=document.getElementById("othersites")
	if(OS_div)OS_hide()
}


function _loadCSS(){
	var a=_loadCSS.arguments
	var c=[]
	for(var i=0;i<a.length;i++){
		c[i]=[]
		var o=_getCSSrule(a[i],c,i)
		var h=c[i][CSS_STYLES[0]]
		h=h.substr(0,h.lastIndexOf("/")+1)
		for(var j=1;j<CSS_STYLES.length;j++){
			var s=""
			if(o){
				s=o.style[CSS_STYLES[j]]
				var u=s.match(/url\(([^\)]*)\)/)
					if(u)s="url("+h+u[1]+")"
			}	
			c[i][CSS_STYLES[j]]=s
		}	
	}
	return c
}
function _getCSSrule(cssName,o,idx){
	var s=document.styleSheets
	for (var i=0;i<s.length;i++){
		if(o)o[idx][CSS_STYLES[0]]=s[i].href
		var r=(s[i].cssRules)?s[i].cssRules:(s[i].rules)?s[i].rules:0
		for(var j=0;j<r.length;j++)
			if(r[j].selectorText==cssName)return r[j]
	} 
	return null
}
function _setStyle(me,aCSS,q){
	for(var i=1;i<CSS_STYLES.length;i++){
		if(q)alert(i+" "+CSS_STYLES[i]+" "+aCSS[CSS_STYLES[i]])
		me[CSS_STYLES[i]]=aCSS[CSS_STYLES[i]]
	}	
}
function _msg(txt){
	window.status=txt
	return true
}

function _keyCode(e){
	return 	document.layers ? e.which : document.all ? event.keyCode : e.which;
}

function _getStyle(me,sProp){
	var o=document.defaultView,s=''
	if(!o)o=window
	if(o.getComputedStyle)
		s=o.getComputedStyle(me,null)[sProp]
	else if (me.currentStyle)
		s=me.currentStyle[sProp];
	else
		s=me.style[sProp]
	return s
}

function fnFormElement(theID){
	for(var i=0;i<document.forms.length;i++){
		var o=document.forms[i]["Field"+theID]
		if(o)
			return o
	}		
	return ""		
}

function _moveTimeOut(){
	var o=document.getElementById("popbox")
	if(o)
		if(o.style.display=="block"){
			o.style.left=((_window("Width")-320)/2)+"px"
			o.style.top=((_window("Height")-240)/2)+_pageScroll("Y")+"px"
		}	
}
		
function _pageScroll(os){
	var p=(os=="X")?"Left":"Top"
	return (d.body && d.body['scroll'+p])?d.body['scroll'+p]:d.documentElement && d.documentElement['scroll'+p] ? d.documentElement['scroll'+p]:(typeof(window['page'+os+'Offset']) == 'number') ? window['page'+os+'Offset']:0;
}
function _window(p){
	return (d.documentElement&&d.documentElement['client'+p])?d.documentElement['client'+p]:(d.body && d.body['client'+p])?d.body['client'+p]:(typeof(window['inner'+p]) == 'number')?window['inner'+p]:0;
}
//IE7
function _fixObjects(){
return //not required any more
	if(!document.all)return//ignore if not IE
	var o=d.getElementsByTagName("object")
	if(o)
		for(var i=0;i<o.length;i++){
			var ps=""
			var a=o[i].getElementsByTagName("param")
			for(var j=0;j<a.length;j++)ps+=a[j].outerHTML
			var html=o[i].outerHTML.replace(/<\/object>/i,"")
			html=html+ps+"</object>"
			o[i].outerHTML=html
		}
}

function _getObject(oID,hW){
	hW=(!hW)?document:hW.document
	if(hW.getElementById)
		return hW.getElementById(oID)
	else if(hW.all)
		return hW.all[oID]
	else if(hW.layers)
		return hW.layers[oID]		
	return false
}	
function _showHide(id){
	var o=_getObject('m'+id)
	if(o)
		o.className=(o.className!='open')?'open':'close'
}
function _showHideList(flg){
	//open/close menu
	var i=1
	
	for(;;){
		o=_getObject("m"+i)
		if(!o)break
		o.className=(flg)?"open":"close"
		i++
	}		
}
function _ulListHighlight(){
	var a=document.getElementsByTagName("ul")
	for(var j=0;j<a.length;j++)
		if(/frmbg\d+/.test(a[j].className)){
			a[j]._s=[]
			_setStyle(a[j]._s,a[j].style)
			a[j].onmouseover=function(){_setStyle(this.style,ulCSS[0])}
			a[j].onmouseout=function(){_setStyle(this.style,this._s)}
		}	
	var a=document.getElementsByTagName("table")
	for(var j=0;j<a.length;j++){
		if(/rollover/.test(a[j].className)){
			var o=a[j].getElementsByTagName("tr")
			for(var i=0;i<o.length;i++)
				if(/frmbg\d+/.test(o[i].className)){
					o[i]._s=[]
					_setStyle(o[i]._s,o[i].style)
					o[i].onmouseover=function(){_setStyle(this.style,ulCSS[0])}
					o[i].onmouseout=function(){_setStyle(this.style,this._s)}
				}		
		}	}
}
function _hasChanged(me){
	return (me.options)?((me.selectedIndex>=0)?(!me.options[me.selectedIndex].defaultSelected):false):((me.type=='checkbox')?(me.defaultChecked!=me.checked):(!me.value.like(me.defaultValue)))
}
var ih_me
function ih_handle(){
	var a=ih_handle.arguments
	if(a[0]){
		var o=a[0]
		for(var i=1;i<a.length;i++){
			o._ih=true
			o._class=o.className
			o._state=-1
			o._s=[]
			_setStyle(o._s,o.style)
			if(o.options)o._index=o.selectedIndex
			_addEvent(o,a[i],"ih"+a[i]+"(this,e)")
		}		
	}	
}

	
function ih_click(me){//FOR IE7
	//if(!me._droppeddown)me.className=me._class+" inputfocus";
	if(!me._droppeddown)
		_setStyle(me.style,roCSS[0])
	return true	
}	
function ih_mousedown(me){//FOR IE7
	me._droppeddown=(me._droppeddown!=1)?1:0
	return true	
}
function ih_keydown(me,e){//FOR IE7
	if(_keyCode(e)==13)me._droppeddown=0
	return true
}
function ih_focus(me){
	if(!__loaded||_DnD.o!=0)return false
	if(me._ih){
		if(!/noborder/i.test(me.className))
			if(me.tagName!="LABEL")
				if(!me._droppeddown){
//					_RO_makeCurrent(me)
					_setStyle(me.style,roCSS[1])
					me._state=1
					//me.className=me._class+" inputfocus";
//					me.style.borderColor="#00ff00"
				}
		if(ih_help(me,'helpfoc'))
			me.style.cursor="auto"
	}	
	_msg("Edit field : "+me.title)
	return true
}
function ih_mouseover(me){
	if(!__loaded||_DnD.o!=0)return false
	if(me._ih){
		if(!/noborder/i.test(me.className))
			if(me.tagName!="LABEL")
//				if(!/focus/i.test(me.className))
				if(me._state!=1){
	//				me.className=me._class+" inputhover";
					_setStyle(me.style,roCSS[0])
					me._state=0
				}	
		if(ih_help(me,'helpovr'))
			me.style.cursor="help"
	}
	return true
}
function ih_mouseout(me){
	if(!__loaded||_DnD.o!=0)return
	if(me.options)if(me._droppeddown)return false//FOR IE7
	if(me._ih){
		me.style.cursor="auto";
		if(me.tagName=="LABEL")
			ih_help(me,'')
		else if(me._state!=1)
//		else if(!/focus/i.test(me.className))
			ih_blur(me)
		else
			ih_help(me,'helpfoc')	
	}		
	return true
}
function ih_blur(me){
	if(!__loaded||_DnD.o!=0)return false
	var q=_hasChanged(me)
	//q=(me.options)?(me.selectedIndex!=me._index):((me.type=='checkbox')?(me.defaultChecked!=me.checked):(me.defaultValue!=me.value))
	if(!/noborder/i.test(me.className)){
//		me.className=(q)?me._class+" inputchanged":me._class
		if(q)
			_setStyle(me.style,roCSS[2])
		else	
			_setStyle(me.style,me._s)
		me._state=-1	

	}
	ih_help(me,'')
	_msg("")	
	return true
}
function ih_reset(me){
	if(!__loaded)return
	var el;
	if(me._ih)if(me.elements)
	for(var i=0;i<me.elements.length;i++){
		el=me.elements[i];
		//if(el._class!=undefined)
		//el.className=el._class}
		if(el._s!=undefined)
			_setStyle(el.style,el._s)
	}
}
function ih_help(me,cls){
	if(!__loaded||_DnD.o!=0)return
	var n=me.name
	if(!n) return false
	n=n.substr(2).replace(/_\d+$/,"")
	var o=document.getElementById("help"+n)
	if(o){
		o.className=cls
		if(cls){
			if(o.offsetTop+o.offsetHeight>o.offsetParent.offsetHeight||o.offsetTop<o.offsetParent.scrollTop){
				o.offsetParent.scrollTop=o.offsetTop-o.offsetParent.offsetHeight+o.offsetHeight+10}
		}
		return true
	}
	return false
}
//===============================
function addFormHighlightsTo(){
	var a=addFormHighlightsTo.arguments
	for(var i=1;i<a.length;i++){
		var o=a[0].getElementsByTagName(a[i])
		for(var j=0;j<o.length;j++)
			if(!/button/i.test(o[j].className)){
				ih_handle(o[j],'_focus','_mouseover','_mouseout','_blur')
				if(/select/i.test(a[i]))//SELECT - FOR IE7
					ih_handle(o[j],'_keydown','_mousedown','_click')
			}	
	}
	var o=a[0].getElementsByTagName("FORM")
	for(i=0;i<o.length;i++)
		ih_handle(o[i],'_reset')
}

function clsEvents(me){
	var fn
	this._active=true
	this.parent=(!me)?document:me
	this._fn=new Array()
	this.add=function(){var a=this.add.arguments;for(var i=0;i<a.length;i++)this._fn[this._fn.length]=a[i]}
	this.swap=function(){var a=this.swap.arguments;for(var i=0;i<a.length;i+=2)for(var j=0;j<this._fn.length;j++)if(this._fn[j]==a[i]){this._fn[j]==a[i+1];if(!a[i+1]){this._fn.splice(j,1);j--}}}
	this.go=function(e){
		var ret=0
		if(!this._active)return false
		for(var i=0;i<this._fn.length;i++){
			var fn=this._fn[i].replace(/\bthis(?=\W)/g,'this.parent')
			if(/return /.test(fn)){
				fn=fn.replace("return","")
				if(!ret)ret=fn;else eval(fn)
			}else	
				eval(fn)
		}
		if(ret)return eval(ret)
		return true	
	}	
}
function _fireEvent(e){
	if(!e)e=event
	var o=this['_'+e.type]
	if(o)
		return o.go(e)
	//NOTE:passing e in _fn[i] = current event
}
function _addEvent(me,pM,pF){
	if(me[pM]==undefined){
		me[pM]=new clsEvents(me)
		var f=me['on'+pM.substr(1)]
		if(f){
			f=f.toString()
			me[pM].add(f.substring(f.indexOf("{")+1,f.lastIndexOf("}")-1))
		}	
	}
	me[pM].add(pF)
	me['on'+pM.substr(1)]=_fireEvent
}
//prototypes
function prototype_like(it){
	var r=new RegExp("^"+this.replace(/[\$\^\*\(\)\[\]\\?]/g,function(a){return '\\'+a})+"$")
	return r.test(it)
}	
String.prototype.like=prototype_like
window.onscroll=_moveTimeOut
window.onresize=_moveTimeOut
window.onload=_start

