﻿window.project = "http://localhost:8089/cms/";
/* Context */
var CXT = "/cms";
/* ACTION */
var ACT = {
	al : CXT + "/admin/Login.action",
	a : CXT + "/admin/LoadSessionJson.action",
	w : CXT + "/admin/LoadJson.action",
	u : CXT + "/admin/UploadFilter.action",
	uf : CXT + "/admin/Upload.action",
	s : CXT + "/admin/login.html"
};

try{
	if(ACT && !ACT.get){
		//面向工程 设定编译文件
		ACT.get = function(url){
			if(!url)return;
			var flag = url.substring(0,url.indexOf("."));
			switch(flag){
				case 'a':
						return ACT.a+"?transaction="+url.substring(2);
				case 'al':
						return ACT.al+"?transaction="+url.substring(3);
				case 'u':
							return ACT.u;
				case 'uf':
							return ACT.uf;
				case 'w':
						return ACT.w+"?transaction="+url.substring(2);
			}
		}
	}
}catch(e){}

	$.fn.menu = function(settings) {
		//主键ID
		this._id = settings.id?settings.id:$(this).attr("id");
		//菜单样式
		this._style = settings.style;
		//点击事件
		this._selected = settings.selected;
		//数据源
		var _dsFunc = [];
		if(typeof settings.dsFunc == 'function'){
			_dsFunc = settings.dsFunc();
		}else if(typeof settings.dsFunc == 'object'){
			_dsFunc = settings.dsFunc;
		}else{
			alert('缺少dsFunc数据源');
			return;
		}
		var _this = this;
		 
		//设置菜单样式
		$("#"+_this._id).addClass(_this._style);

		//创建节点
		function createNode(data){
			if(!data) return;
			//数据排序
			data.sort(function(a,b){
				return a.sequence - b.sequence;
			});
			$.each(data,function(i,v){
				var obj = $('#'+_this._id);
				var pid = obj.find("#"+v.pid);
				var li = $('<li id="'+v.id+'"><a href="#">'+v.name+'</a></li>').data('data',v);
				//鼠标悬浮
				li.hover(
					function(event){ 
						li.css("position","relative");
						li.children('ul').show();
						li.children('a').addClass("selected");
					},
					function(event){ 
						li.css("position","static");
						li.children('ul').hide();
						li.children('a').removeClass("selected");
					}
				);
				//鼠标点击
				li.click(function(event){ 
					if(typeof _this._selected=='undefined'){
						li.children("a").attr({'href':v.href,'target':v.targer});				 
					}else if(typeof _this._selected=='function'){
						_this._selected.call(this,v);
					}
					//停止冒泡事件
					event.stopPropagation();
				});
				//创建节点当存在父节点时，直接把节点挂到父节点下，不存在父节时，把节点挂到跟节点下
				if(pid.length==1){
					li.appendTo( pid.children().is('ul') ? pid.children('ul') : pid.append($('<ul style="display:none" />')).children('ul') );
				}else{
					li.attr('types',v.pid).appendTo( obj.children().is('ul') ? obj.children('ul') : obj.append( $('<ul />') ).children('ul') );			 
				}
				//寻找不再本节点下的子节点
				$.each(obj.find('[types="'+v.id+'"]'),function(j,k){
					$(k).appendTo( li.children().is('ul') ? li.children('ul') : li.append($('<ul style="display:none" />')).children('ul') ).removeAttr('types');			 
				});
			});
		}
		//定位
		function locateAt(id){		 
			$("#"+_this._id).find("#"+id).children('ul').css("display","block");
		}

		//执行
		createNode(_dsFunc);

		//返回方法调用
		return { locateAt:locateAt,createNode:createNode }
	}

		$.fn.menuList = function(settings) {
		//主键ID
		this._id = settings.id?settings.id:$(this).attr("id");
		//菜单样式
		this._style = settings.style;
		//点击事件
		this._selected = settings.selected;
		//数据源
		var _dsFunc = [];
		if(typeof settings.dsFunc == 'function'){
			_dsFunc = settings.dsFunc();
		}else if(typeof settings.dsFunc == 'object'){
			_dsFunc = settings.dsFunc;
		}else{
			alert('缺少dsFunc数据源');
			return;
		}
		var _this = this;
		 
		//设置菜单样式
		$("#"+_this._id).addClass(_this._style);

		//创建节点
		function createNode(data){
			if(!data) return;
			//数据排序
			data.sort(function(a,b){
				return a.sequence - b.sequence;
			});
			$.each(data,function(i,v){
				var obj = $('#'+_this._id);
				var pid = obj.find("#"+v.pid);
				var li = $('<li id="'+v.id+'"><a href="#">'+v.name+'</a></li>').data('data',v);
				//鼠标悬浮
				li.hover(
					function(event){ 
						//li.children('ul').show();
						li.children('a').addClass("selected");
					},
					function(event){ 
						//li.children('ul').hide();
						li.children('a').removeClass("selected");
					}
				);
				//鼠标点击
				li.click(function(event){ 
					if(typeof _this._selected=='undefined'){
						li.children("a").attr({'href':v.href,'target':v.targer});				 
					}else if(typeof _this._selected=='function'){
						_this._selected.call(this,v);
					}
					//停止冒泡事件
					event.stopPropagation();
				});
				//创建节点当存在父节点时，直接把节点挂到父节点下，不存在父节时，把节点挂到跟节点下
				if(pid.length==1){
					li.appendTo( pid.children().is('ul') ? pid.children('ul') : pid.append($('<ul />')).children('ul') );
				}else{
					li.attr('types',v.pid).appendTo( obj.children().is('ul') ? obj.children('ul') : obj.append( $('<ul />') ).children('ul') );			 
				}
				//寻找不再本节点下的子节点
				$.each(obj.find('[types="'+v.id+'"]'),function(j,k){
					$(k).appendTo( li.children().is('ul') ? li.children('ul') : li.append($('<ul />')).children('ul') ).removeAttr('types');			 
				});
			});
		}
		//定位
		function locateAt(id){		 
			$("#"+_this._id).find("#"+id).children('ul').css("display","block");
		}

		//执行
		createNode(_dsFunc);

		//返回方法调用
		return { locateAt:locateAt,createNode:createNode }
	}
