var SwitchObjects = function(){

	this.doObject = null;
	this.displayPath = new Array();
	
	
	this.init = function() {
		for(var i=0;i<_switchObjects.length;i++){
		
			if(_switchObjects[i].page != ""){
			
				var obj = _switchObjects[i];
				
				var floatPage = $("floatPage_"+obj.page);
				
				var _floatPagesAttrObj = this.getFloatPagesAttrObj(obj.page);
				floatPage.style.width = _floatPagesAttrObj.width + "px";
				floatPage.style.height = _floatPagesAttrObj.height + "px";
				

			}
			registerVisibleEvent(i);
		}
	}
	this.getFloatPagesAttrObj = function(_page){
		for(var i=0;i<floatPagesAttr.length;i++)
			if(floatPagesAttr[i].page == _page)
				return floatPagesAttr[i];
		return null; 
	}
	this.getObjectById = function(id){
		for(var i=0;i<_switchObjects.length;i++)
			if(_switchObjects[i].id == id)
				return _switchObjects[i];
		return null;
	}
	this.doPlace = function(obj){
		var floatPage = $("floatPage_"+obj.page);
		var floatObj = $(obj.id);
		var place = parseInt(obj.place);
		
		ObjPosition.init(floatObj,"page");
		var floatObjLeft = ObjPosition.getX();
		var floatObjTop = ObjPosition.getY();
		var floatObjHeight = floatObj.offsetHeight;
		var floatObjWidth = floatObj.offsetWidth;
		
		if(obj.position == "bottom"){
			floatPage.style.left = (floatObjLeft + place)+"px";
			floatPage.style.top = (floatObjTop + floatObjHeight -2) +"px";
		}
		else
		if(obj.position == "top"){
			floatPage.style.left = (floatObjLeft + place)+"px";
			floatPage.style.top = (floatObjTop - floatPage.offsetHeight +2) +"px";
		}
		else
		if(obj.position == "right"){
			floatPage.style.left = (floatObjLeft + floatObjWidth -2)+"px";
			floatPage.style.top = (floatObjTop + place) +"px";
		}
		else
		if(obj.position == "left"){
			floatPage.style.left = (floatObjLeft - floatPage.offsetWidth +2)+"px";
			floatPage.style.top = (floatObjTop + place) +"px";
		}
		floatPage.style.zIndex = 1000+this.displayPath.length;
	}
	this.hiddenEventByMouseOver = function(event){
		var targetObj = this.getEventTarget(event);
		this.doHiddenEvent(targetObj);
	}
	this.hiddenEventByMouseClick = function(event){
	}
	this.getEventTarget = function(event){
		var navFlag = witchNavigation();
		var targetObj = null;
		if(navFlag == 1)
			return event.srcElement;
		else
			return event.target;
	}
	this.doVisibilityPage = function(obj,type){
		
		if(type == "visible"){
			$("floatPage_"+obj.page).style.visibility = "visible";
		}
		else
		if(type == "hidden"){
			$("floatPage_"+obj.page).style.visibility = "hidden";
		}
	}
	this.doSwitchObject = function(obj,type){
		
		if(type == "over" && obj.objectOverJs != ""){
			eval(obj.objectOverJs);
		}
		else
		if(type == "out" && obj.objectOutJs != ""){
			eval(obj.objectOutJs);
		}
	}
	this.doHiddenEvent = function(targetObj){
		//防止同一目标的重复事件执行
		
		
			
		if(this.doObject != null){
			this.doObject = null;
			return;
		}
		
		
		var i = this.displayPath.length-1;
		while(i>=0){
			var obj = this.displayPath[i];
			ObjIsInner.init(targetObj,"floatPage_"+obj.page);
			if(!ObjIsInner.isInner() && targetObj.id != obj.id){
				this.doVisibilityPage(obj,"hidden");
				this.doSwitchObject(obj,"out");
				this.displayPath.pop();
			}
			else
				break;
			
			i = this.displayPath.length-1;
		}
	}
}

function registerVisibleEvent(index){

	var obj = _switchObjects[index];
		
	dojo.connect($(obj.id), "mouseover" , index ,function(event){
		switchObjects.doSwitchObject(obj,"over");
		if(obj.page != ""){
			switchObjects.doPlace(obj);
			
			var i = switchObjects.displayPath.length-1;
			while(i>=0){
				var _obj = switchObjects.displayPath[i];
				ObjIsInner.init($(obj.id),"floatPage_"+_obj.page);
				if(!ObjIsInner.isInner() && obj.id != _obj.id){
					switchObjects.doVisibilityPage(_obj,"hidden");
					switchObjects.doSwitchObject(_obj,"out");
					switchObjects.displayPath.pop();
				}
				else
					break;
				
				i = switchObjects.displayPath.length-1;
			}
			
			switchObjects.displayPath.push(obj);
			switchObjects.doVisibilityPage(obj,"visible");
			switchObjects.doObject = obj;
		}
	});
	if(obj.page == ""){
		dojo.connect($(obj.id), "mouseout" , index ,function(event){
			switchObjects.doSwitchObject(obj,"out");
			switchObjects.doObject = obj.id;
		});
	}
}
var switchObjects = new SwitchObjects();

function switchObjectsReady(){
	if(document.readyState != "complete")
		setTimeout("switchObjectsReady()", 100); 
	else
		switchObjects.init();
}
