var klModules = {
	Cnt		: 0,
	active 	: null,
	trees	: [],
	
	reDraw : function(Obj) {
		var objID = Obj.id.substring(4);
		var AjaxPars = { 
			'tbl':'mod',
			'item_id':objID,
			'func':'getSingle'
		};
		var setAjax = new Ajax.Request('/ajax/portal', {
			method: 'get', 
			parameters: Object.toQueryString(AjaxPars), 
			onComplete: function (req) { 
				var jsonObj	= req.responseText.evalJSON();
				if (jsonObj.Error) { alert(jsonObj.Error); }
				else {
					var playerObj = $('mod_'+objID).down('div.stripes');
					klModules.singlePlayer(playerObj, objID, jsonObj);
				}
			}
		});
	},
	
	getModule : function(modID) {
			var AjaxPars = { 
				'id':modID,
				'func':'getModuleCode'
			};
			var setAjax = new Ajax.Request('/ajax/portal', {
				method: 'get', 
				parameters: Object.toQueryString(AjaxPars), 
				onComplete: function (req) { 
					stateRes = req.responseText;
					if ($('lnk_'+modID)) {
						var CntObj = $('lnk_'+modID).down('div.moduleContent');
						CntObj.update();
						CntObj.update(stateRes);
					}
				}
			});
	},
	
	getModuleWrap : function(modID) {
			var AjaxPars = { 
				'id':modID,
				'func':'getModuleWrap'
			};
			var setAjax = new Ajax.Request('/ajax/portal', {
				method: 'get', 
				parameters: Object.toQueryString(AjaxPars), 
				onComplete: function (req) { 
					stateRes = req.responseText;
					if ($('mod_'+modID)) {
						var CntObj = $('mod_'+modID).down('div.moduleInt');
						CntObj.update();
						CntObj.update(stateRes);
					}
				}
			});
	},
	
	addModule : function(json) {
		if (json)
		{
			var AjaxPars = { 
				'func':'getModuleCode',
				'id':json.mod_id,
				'page_id':json.page_id
			};
			var setAjax = new Ajax.Request('/ajax/portal', {
				parameters: Object.toQueryString(AjaxPars), 
				onComplete: function (req) { 
					var jsonObj = req.responseJSON;
					if ($('page')) {
						targetCol = ($('module_col_'+jsonObj.col)) ? $('module_col_'+jsonObj.col) : $('module_col_A');
						$(targetCol).insert({bottom:jsonObj.moduleCode});
						kUI.portal.resizeCol(targetCol);
					}
				}
			});
		}
	},
	
	updateModule : function(json, closeWin) {
		if (json) {
			var AjaxPars = { 
				'func':'getModuleCode',
				'id':json.mod_attb_id
			};
			var setAjax = new Ajax.Request('/ajax/portal', {
				parameters: Object.toQueryString(AjaxPars), 
				onComplete: function (req) { 
					var jsonObj = req.responseJSON;
					var mod = $('lnk_'+json.page_lnk_id);
					if ($(mod)) {
						var modTitle	= $(mod).down('div.moduleTitle span');
						var modContent 	= $(mod).down('div.moduleContent');
						if (json.mod_title) { modTitle.update(json.mod_title); }
						if (jsonObj.moduleCode) { modContent.update(jsonObj.moduleCode); }
						if (kUI.portal) { kUI.portal.resizeCol(mod.up('div.column'),0); }
					} else {
						klModules.addModule({mod_id:json.mod_attb_id, page_lnk_id:json.page_lnk_id});
					}
					if (typeof(closeWin)=='undefined' || closeWin.empty()) { window.setTimeout(klGeneric.cancel, 10); }
				}.bind(this)
			});
		}
	},
	
	launch : function(url, title, suffix) {
		kUI.portal.miniMenuHide();
		var lnk_id = kUI.portal.activeMod.id.substring(4);
		this.active = lnk_id;
		var srcUrl = url+lnk_id+(suffix || '');
		var newWin = new kUI.Window({theme:'hClr',width:790,height:450,src:srcUrl,title:(title || '')});
		return false;
	},
	
	editProps		: function() { this.launch('/admin/modules/edit/', 'Edit Module Properties');  },
	editText		: function() { this.launch('/admin/modules/edit/', 'Edit Module Properties', '/textContent');  },
	mngSlides		: function() { this.launch('/admin/modules/galleries/lnk_id/', 'Manage Slides'); },
	reorderMedia	: function() { this.launch('/admin/modules/reorder-media/lnk_id=', 'Reorder Media'); },
	
	modNav : function(Obj, ordObj) { 
		portal.posModule(portal.active, ordObj.pos); 
		kUI.portal.miniMenuHide(); 
	},
	
	modEvents : function(event, args) {
		if (!args || args.length===0) { return; }
		var jsonStr = args[2];
		jsonObj	= jsonStr.evalJSON();
		if (jsonObj && event=='click') {
			var winW, winH;
			if (jsonObj.event=='video') {
					switch (jsonObj.type) {
						case "default":
							var mod_id = jsonObj.mod_id || 0;
							var url		= '/evt/click/'+mod_id+'/player/'+jsonObj.id;
							if (jsonObj.url===true)
							{
								winW	= (jsonObj.width!=='') ? parseInt(jsonObj.width,10) : 790;
								winH	= (jsonObj.height!=='') ? parseInt(jsonObj.height,10) : 500;
							}
							else { winW = 790; winH = 500; }
							var newWin = new kUI.Window({theme:'hClr',width:winW,height:winH,src:url});
							break;
						case "player":
							winW	= (jsonObj.width) ? jsonObj.width : 790;
							winH	= (jsonObj.height) ? jsonObj.height : 500;
							klGeneric.flvPrev(jsonObj.id, 0, args[5], winW, winH);
							break;
					}
			}
		}
	},
	
	openTree : function (branch, req) { json = req.evalJSON(); return (json.size()>0) ? true : false; },
	branchSelected : function (branch) {
		var branchProps = branch.getProps();
		if (branchProps && branchProps.json) { klModules.callback(branchProps.json); }
	},

	callback : function(options) {
		var erros = [], winUrl, winObj, kuiWin, winDims, kWidth, kHeight;
		
		//Convert an incoming string (Flash)
		if (Object.isString(options)) { options = options.evalJSON(); }
		
		if (options) {
			winUrl = options.url || '';
			switch (options.tgt_type) {
				case 'blank':
					if (options.url && !options.url.empty()) { window.open(options.url); }
					else { erros.push('Url link missing!'); }
				break;
				case 'self': if (options.url && !options.url.empty()) { self.location.href = options.url; } break;
				case 'kwin':
					kWidth	= (options.width)  ? Number(options.width) 	: 790;
					kHeight	= (options.height) ? Number(options.height) : 590;
					winObj = {
						theme: 		options.theme 			|| 'hBox',
						title:		options.title 			|| '',
						src:		options.url 			|| winUrl,
						shaded: 	options.shaded 			|| false,
						closeBtn: 	(options.close && options.close==1) ? false : true,
						width: 		kWidth,
						height: 	kHeight
					};
					kuiWin = new top.kUI.Window(winObj);
				break;
				case 'popup':
					if (!winUrl.empty()) {
						if (options.popup.width) {
							winDims = { width: screen.availWidth, height: screen.availHeight };
							kWidth	= (options.popup.width)  ? (Number(options.popup.width)>(winDims.width-60))   ? (winDims.width-60)  : Number(options.popup.width)  : 790;
							kHeight	= (options.popup.height) ? (Number(options.popup.height)>(winDims.height-60)) ? (winDims.height-60) : Number(options.popup.height) : 590;
							options.popup.width = kWidth;
							options.popup.height = kHeight;
						}
						var popOptions = (options.popup) ? Object.toQueryString(options.popup).gsub('&',',') : '';
						var posX = 0, posY = 0;
						if (options.popup.width && options.popup.height) {
							if (options.popup.width<winDims.width) 	 { posX = Math.floor((winDims.width-Number(options.popup.width))/2,0); }
							if (options.popup.height<winDims.height) { posY = Math.floor((winDims.height-Number(options.popup.height))/2,0); }
							if (!popOptions.empty()) { popOptions += ',left='+posX+',top='+posY; }
						}
						var popWin = window.open(winUrl, "portalWin", popOptions);
						if (!popWin) { alert('Popup blocker!'); } else { popWin.focus(); }
					} else { erros.push('Url link missing!'); }
				break;
				case 'download':
					if (!winUrl.empty() && winUrl.startsWith('/download')) {
						self.location.href = winUrl;
					} 
					else { erros.push('Url link missing!'); }
				break;
				default: break;
			}
		}
	}
};

