Portlet = function(portletParams) {
	var self = this;
	this.params = portletParams;
	this.defaultParams = null;
	this.refreshRate = 0;
	this.confirmOnClose = false;
	var obj;
	var showHideDiv;
	var closeDiv;
	var editDiv;
	var iconDiv;

	this.build = function(moduleContainer) {
		this.defaultModuleObj = Framework.Modules[ this.params[ "moduleName" ] + "Widget" ];
		if( !this.defaultModuleObj )return;
		this.defaultParams = this.defaultModuleObj.defaultObj;

		this.id = this.params["id"];
		this.moduleName = this.params[ "moduleName" ]
		this.colNumber  = this.params["colNumber"];
		this.tabNumber  = this.params["tabNumber"];
		this.dataId     = this.params["dataId"];
		this.view       = this.params["view"];

		if(  this.params["height"] == null )
			this.params["height"] = GENERAL_SETTINGS.DEFAULT_MODULE_HEIGHT;

		this.height	    = parseInt( this.params["height"] );
		this.collapsed = parseBool(this.params["collapsed"] );
		if( this.collapsed == null  ) this.collapsed = false;
		this.title = (this.defaultModuleObj )? this.defaultModuleObj.title:"";
		this.icon  = this.params[ "ico" ];


		var portlet        = createElementVsClassName("DIV", "portlet", this.id);
		portlet.setAttribute( "tabNumber", this.tabNumber );
		var portletFrame   = createElementVsClassName("DIV", "portletFrame",   this.id + "_frame");
		portletFrame.setAttribute( "tabNumber", this.tabNumber );
		var portletHeader  = createElementVsClassName("DIV", "portletHeader",  this.id + "_header");
		var portletEdit    = createElementVsClassName("DIV", "portletEdit",    this.id + "_edit");
		var portletResizeContent = createElementVsClassName("DIV", "portletContent", this.id + "_resizeContent");
		var portletContent = createElementVsClassName("DIV", "portletContent", this.id + "_container");

		if(this.collapsed)
			portletContent.style.display = "none";

		var currentShowHideImgURL = ( !this.collapsed )?PortletLoader.SHOW_IMG_URL:PortletLoader.HIDE_IMG_URL;


		showHideDiv =  createElementVsClassName("DIV", "showHide");
		showHideDiv.innerHTML = "<img src=\""+ currentShowHideImgURL +"\" />";

		iconDiv =  createElementVsClassName("DIV", "icon");
		iconDiv.innerHTML = "<div class=\""+ Framework.Modules[ self.params["moduleName"] +"Widget"].className +"\" ></div>";
		iconDiv.style.display="none";

		var moduleactionsDiv 		=  createElementVsClassName("DIV", "moduleactions");
		var closeDiv, maximizeDiv, editDiv;

		var moduleactionsDivWidth = 0;
		if( !parseBool( this.defaultParams["isntClosable"] )  )
		{
			closeDiv 		=  createElementVsClassName("DIV", "close");
			closeDiv.innerHTML 	= "<img src=\""+ PortletLoader.CLOSE_IMG_URL +"\" />";
			moduleactionsDiv.appendChild( closeDiv );
			moduleactionsDivWidth += 16;
		}

		if( !parseBool( this.defaultParams["isntMaximizable"] )  )
		{
			maximizeDiv 		=  createElementVsClassName("DIV", "maximize");
			maximizeDiv.innerHTML 	= "<img src=\""+ PortletLoader.MAXIMIZE_IMG_URL +"\" />";
			moduleactionsDiv.appendChild( maximizeDiv );
			moduleactionsDivWidth += 16;
		}

		if( !parseBool( this.defaultParams["isntEditable"] )  )
		{
			editDiv 		=  createElementVsClassName("DIV", "edit");
			editDiv.innerHTML 	= "<img src=\""+ PortletLoader.EDIT_IMG_URL +"\" />";
			moduleactionsDiv.appendChild( editDiv );
			moduleactionsDivWidth += 16;
		}

		moduleactionsDiv.style.width = moduleactionsDivWidth + "px";

		portlet.draggable=true;

		var portletAdditionalActions 		=  createElementVsClassName("DIV", "additionalActions");
		portletAdditionalActions.setAttribute( "title", this.title );
		portletAdditionalActions.id = this.id + "_additionalActions";

		var portletAdditionalActionsWidth = 0;
		views=this.defaultParams["views"];
		var viewElement;
		this.viewElements={};
		for(var view in views ){
			viewElement=createElementVsClassName("DIV", "additionalaction");
			viewElement.mode=this.defaultParams["views"][view];
			viewElement.innerHTML = "<img src=\""+ eval('PortletLoader.'+view+'_IMG_URL') +"\" title='"+eval('Framework.Lang.views_'+view)+"'/>";
			portletAdditionalActions.appendChild( viewElement );
			portletAdditionalActionsWidth += 22;
			if (view == "more") portletAdditionalActionsWidth += 12;
			viewElement.onmousedown=additionalView;
		//	YAHOO.util.Event.addListener( viewElement, "mousedown", additionalView, this.defaultParams["views"][view]);
			this.viewElements[view]=viewElement;
		}


		portletAdditionalActions.style.width = portletAdditionalActionsWidth + "px";

		var portletTitle 		=  createElementVsClassName("DIV", "title");
		portletTitle.setAttribute( "title", this.title );
		portletTitle.id = this.id + "_title";
		portletTitle.appendChild( document.createTextNode(this.title) );


		portletHeader.appendChild( showHideDiv );
		portletHeader.appendChild( iconDiv );
		portletHeader.appendChild( portletTitle );
		portletHeader.appendChild( moduleactionsDiv );
		portletHeader.appendChild( portletAdditionalActions );

		var innerHTML = "";
		innerHTML += "<table class='portletTable' id='"+ this.id +"_table'>";
		innerHTML += "	<tr><td id=\""+ this.id+"_content\"  valign='top'>";
		innerHTML += "		<div style='text-align:center'><img src=\"images/loader.gif\" /></div>";
		innerHTML += "	</td></tr>";
		innerHTML += "</table>";
		portletContent.innerHTML = innerHTML;

		portletFrame.appendChild( portletHeader  );
		portletFrame.appendChild( portletEdit  	 );
		portletResizeContent.appendChild(portletContent);
		portletFrame.appendChild( portletResizeContent );

		portlet.appendChild( portletFrame );

		var columnId = this.tabNumber + "_" + PortletLoader.FASSET_COL_PREFIX + "" + this.colNumber;

		var column = $id(columnId);
		if(typeof moduleContainer!='undefined' && moduleContainer!=null){
			column=moduleContainer;
		}
		else{
			moduleContainer=column;
		}
		if( column == null ) return;
		if(this.params["before"]) {
			column.insertBefore(portlet,column.firstChild);
		}
		else{
		column.appendChild(portlet);

		}

		this.isLoaded = false;

		portletHeader.onmouseover = function(){
			try{
			if( !OPTIONS.showHeaderIcons){
				self.showHeaderIcons();
			}
			}catch(ex){}
		}

		portletHeader.onmouseout = function()
		{
			try{
			if(!OPTIONS.showHeaderIcons && Layouter.getActiveTab().mode != "max")
			{
				self.hideHeaderIcons();
			}
			}catch(ex){}
		}

		this.hideHeaderIcons = function(){
			if(portletAdditionalActionsWidth > 0)
			try{this.resizeTitle(false);}catch(e){};
			showHideDiv.style.display = "none";
			iconDiv.style.display = "block";
			moduleactionsDiv.style.display = "none";
			portletAdditionalActions.style.display = "none";
		}
		this.showHeaderIcons = function(){
			if(portletAdditionalActionsWidth > 0)
			try{this.resizeTitle();}catch(e){};
			if(Layouter.getActiveTab().mode == "max"){
				showHideDiv.style.display = "none";
				iconDiv.style.display = "block";
			}
			else
			{
				iconDiv.style.display = "none";
				showHideDiv.style.display = "block";
			}
			portletAdditionalActions.style.display = "block";
			moduleactionsDiv.style.display = "block";
			
		}
		this.resizeTitle = function(bool){
		if(self.obj && self.object){
				self.obj.elm_title.innerHTML = "";
				self.obj.elm_title.style.width = "";
			var w = getObjectWidth(self.obj.elm_title.parentNode)-60-16;
				if(bool == undefined || bool == true){
					w -= portletAdditionalActionsWidth;
				}
				if(w<= 15)
				w=15;
			var a = document.createElement("div");
			a.className = "floatleft";
			a.style.overflow = "hidden";
			self.obj.elm_title.appendChild(a);

			var spm = document.createElement("div");
			spm.className = "floatleft";
			self.obj.elm_title.appendChild(spm);

			try{

			a.innerHTML = self.object.getTitle();
			}catch(e){
				a.innerHTML = self.defaultModuleObj.title;
			}

			var e = getObjectWidth(a);
			if(e > w){
			self.obj.elm_title.style.width = w+"px";
			a.style.width = (w-15)+"px";
			spm.innerHTML = "...";
			}
			}
	 	}

		this.setShowHideImg = function(path){
			var img = showHideDiv.firstChild;
			img.src = path + img.src.substring(img.src.indexOf("images"), img.src.length);
			
		}

		var portletResizeHandler = function(event, ui){
		var height = ui.size.height;
		
			//self.object.displayData()
		var id=ui.originalElement[0].parentNode.parentNode.id;
		try{
					if( self.params[ "height" ] == height ) return;

			    PortletLoader.saveUserData( "moduleResize", null, null, { "id": id, "height": height} );
				self.params[ "height" ] = height;
				self.object.resizeHandler(event, "100%", height,false,true);
				//self.portlet_FRAME.style.width = "100%";
			}catch(ex){}

		}
		
		
	//	$id(this.id+'_container').style.height=portletParams['height']+'px'
		$id(this.id+'_resizeContent').style.height=portletParams['height']+'px'
		var resizer = new Resizer(this.id+'_resizeContent',{
												 	handles: "s" , 
													minHeight: 90 
  													//maxHeight: 250 ,
  
       												},portletResizeHandler
								)
	resizer.addResizer()

/*
		var resizer = new Ext.Resizable(this.id+'_frame',
			{
				pinned:true,
				handles: 's',
				minHeight: 90
			});
		resizer.on('resize', portletResizeHandler);

*/
	//	var height = (TABS_CONFIG[this.tabNumber].moduleHeight)?TABS_CONFIG[this.tabNumber].moduleHeight:this.height;

	//	resizer.resizeTo(portletFrame.style.width, height );

	    self.resizer = resizer;
		self.obj_ = column;
        self.portlet_DOMOBJ 	   		= portlet;
		self.portlet_FRAME 		  	 	= portletFrame;
		self.portlet_HEADER		   		= portletFrame.firstChild;
		self.portlet_SH_DOMOBJ	   		= portletFrame.firstChild.childNodes[0];
		self.portlet_C_DOMOBJ	   		= $id(this.id+'_container');
		self.portlet_C_DOMOBJRESIZ	   	= $id(this.id+'_resizeContent');
		self.portlet_E_DOMOBJ	   		= portletFrame.childNodes[1];
		self.portlet_INNER_DOMOBJ  		= portletFrame.lastChild.firstChild;
		
		showHideDiv.onmousedown= collapseExpand;
		if (editDiv){
			editDiv.onmousedown= editCollapseExpand;
		}
		maximizeDiv.onmousedown=maximizeRestore;
		closeDiv.onmousedown=closePortlet;
/*
		YAHOO.util.Event.addListener( showHideDiv, "mousedown", collapseExpand);
		YAHOO.util.Event.addListener( editDiv    , "mousedown", editCollapseExpand);
		YAHOO.util.Event.addListener( maximizeDiv, "mousedown", maximizeRestore);
		mode="min";
		YAHOO.util.Event.addListener( closeDiv   , "mousedown", closePortlet);

*/


		Drag.init(portletHeader, portlet);


		portlet.onDragStart = function(x,y,mousex, mousey)
		{	
			
		   var place = findPosXY( this );
	       var ua = navigator.userAgent.toLowerCase();
		   if(this.tabNumber === undefined)
		   this.tabNumber = PortletLoader.getPortlet(this.id+"").tabNumber;
		   
		Layouter.tabManager.changeTabEvent('mouseover')
		//	YAHOO.util.Event.addListener( document.body, "selectstart", disableSelecting);

			PortletLoader.GHOST.style.height = (this.offsetHeight -2)+"px";
			PortletLoader.GHOST.style.width  = "auto";


			var left = 0,
			    top  = 0;
			if (isIE) {
			 top  = place.top+15;
			 left = place.left-5;
			} else {
			 top  = place.top+40;
			 left = place.left-5;
			}
			/*if ($id("hideTabsImg").checked){
				top+=29;
				left+=5;
			}*/

			var width = this.offsetWidth ;


			this.style.width = (width-2)+"px";
			this.style.left  = (left) +"px";
			this.style.top   = (top)  +"px";
			this.style.position = "absolute";



			var container = $id(this.id + "_container");
			var frame = $id(this.id + "_frame");
			frame.style.height = (frame.offsetHeight -2 ) + "px";
			container.style.display = "none";



			this.parentNode.insertBefore(PortletLoader.GHOST, this);
			this.isDragging = true;
			PortletLoader.GHOST.columnOBJ = this.parentNode;



			var config = Controller.getTabConfig();
			var colCount = config.colCount;

			for( var i=0; i<colCount; i++ )
				this[ "col"+(i+1)+"X" ] = findPosX( $id(this.tabNumber + "_" + PortletLoader.FASSET_COL_PREFIX+""+(i+1)) ) + 10;

			var place = findPosXY( this );
		//	if (!DEMO) Layouter.activateTabs();

		}
		portlet.onDrag = function(x,y, mousex, mousey) {

			var newtabNumber = Layouter.getActiveTabId();
			
			if(this.tabNumber != newtabNumber)
			{
				this.tabNumber = newtabNumber;
				var columnId = newtabNumber + "_" + PortletLoader.FASSET_COL_PREFIX + "1";
				
				var column = $id(columnId);
				//console.log(column)
				if( column == null )return;
				column.appendChild(portlet);
				PortletLoader.GHOST.style.width = "100%";
				column.appendChild(PortletLoader.GHOST);
				PortletLoader.GHOST.columnOBJ = column;
				var config = Controller.getTabConfig();
				var colCount = config.colCount;
				for (var i = 0; i < colCount; i++) 
					column = findPosX($id(this.tabNumber + "_" + PortletLoader.FASSET_COL_PREFIX + "" + (i + 1))) + 10;
				
			}
			
			var col;


			try	{
					col=$id(this.tabNumber + "_" + PortletLoader.FASSET_COL_PREFIX+"1");
		
			
			var config = Controller.getTabConfig();
			
			var colCount = config.colCount;

			for( var i=0; i<colCount; i++ )
				if ((x+this.offsetWidth/2)>=this[ "col"+(i+1)+"X"])
							col=$id(this.tabNumber + "_" + PortletLoader.FASSET_COL_PREFIX+""+(i+1));

				
					if (PortletLoader.GHOST.columnOBJ!=col)	{
						var par = PortletLoader.GHOST.parentNode;
						par.removeChild(PortletLoader.GHOST);
						PortletLoader.GHOST.columnOBJ = col;
						col.appendChild(PortletLoader.GHOST);
						try{
							PortletLoader.GHOST.style.width = (col.offsetWidth - 15)+"px";
						}catch(ex){
							PortletLoader.GHOST.style.width = "98%";
						}
						
					}
			var elems = [];

			var ln = col.childNodes.length;
			for (var z=0; z<ln; z++) {
				if (!col.childNodes[z].isDragging)  {
					elems.push(col.childNodes[z]);
				}
			}

			var myPos;
			for (var z=0; z<elems.length; z++) {
				if (elems[z]==PortletLoader.GHOST) myPos = z;
			}

			if (myPos!=0 && y<=findPosY(elems[myPos-1]))
			{
				var par = PortletLoader.GHOST.parentNode;
				par.removeChild(PortletLoader.GHOST);
				col.insertBefore(PortletLoader.GHOST, elems[myPos-1]);
			}
			if (myPos!=(elems.length-1) && y>=findPosY(elems[myPos+1]))
			{
				if (elems[myPos+2])
				{
					col.insertBefore(PortletLoader.GHOST, elems[myPos+2]);
				}
				else
				{
					col.appendChild(PortletLoader.GHOST);
				}
			}

			}catch(ex){

			}

		portlet.style.width = PortletLoader.GHOST.offsetWidth + "px";
			$id(portlet.id + "_frame" ).style.width = "100%";
		}
		portlet.onDragEnd = function(x,y,el) {
		
			Layouter.tabManager.changeTabEvent('click')
			try
			{	
				var portlet = PortletLoader.getPortlet( this.id );

			//	if (!DEMO) Layouter.disactivateTabs();
				portlet.obj_.container = PortletLoader.GHOST.columnOBJ.getAttribute("colNum");
				var tabId = portlet.obj_.id;
				tabId = tabId.substr(0, tabId.indexOf("_"));
				portlet.params["tabNumber"] = parseInt(tabId);
				var col = PortletLoader.GHOST.columnOBJ;
				this.isDragging = false;
				var c = PortletLoader.GHOST.nextSibling;
				col.removeChild(PortletLoader.GHOST);

				if (col.lastChild != PortletLoader.GHOST)
				{
					col.insertBefore(this, c);
				}
				else
				{
					col.appendChild(this);
				}

				portlet.portlet_DOMOBJ.style.position = "static";
				portlet.portlet_DOMOBJ.style.left = "";
				portlet.portlet_DOMOBJ.style.top = "";
		    	portlet.portlet_DOMOBJ.style.width    = "auto";
				
				if(Browser.isIE) 
				Layouter.tuneModulesIssueForIE(portletFrame.getAttribute("tabNumber"));
				if(Browser.isIE){
					var timer = new Timer( self );
					timer.setTimeout( 'completeDragEnd', 30, portlet );
				}else self.completeDragEnd(portlet);
				
			}catch(ex){}
	
		}
	}
	this.completeDragEnd = function(portlet){
			 try{
				if(portlet.isMinimized != true){
				//	console.log(portlet.portlet_C_DOMOBJ)
					
					portlet.portlet_C_DOMOBJ.style.display = "block";
					var frame = $id(portlet.id + "_frame");
					frame.style.height = "auto";
				}
				try{
					portlet.object.onDragEnd();
				}catch(ex){
					portlet.object.onPageResize();
				}
			}catch(ex){}
			var newtabNumber = Layouter.getActiveTabId();
			this.params["tabNumber"] = parseInt(newtabNumber);
			this.tabNumber = parseInt(newtabNumber);	
			PortletLoader.saveUserData('order', self);
			if (!OPTIONS.showHeaderIcons) self.hideHeaderIcons();
	}


	this.disableView=function(view){
		try{
			self.viewElements[view].style.display="none";
		}
		catch(ex){
			;
		}
	}
	this.enableView=function(view){
		try{
			self.viewElements[view].style.display="block";
		}
		catch(ex){
			;
		}
	}
	this.close = function()
	{

		PortletLoader.saveUserData("close", this, this.completeClose, null);
	}
	this.completeClose = function(args, respArgs){
		if(respArgs.result == true){
		self.portlet_DOMOBJ.parentNode.removeChild( self.portlet_DOMOBJ );
		try{
			var portlet = PortletLoader.getPortlet(self.params["id"]);
			portlet.object.destroy();
		}
		catch(ex){
			;
		}
		self = null;
		delete self;
		}
	}
	
	this.refreshDate = function(date){
		self.object.refreshDate(date);
	}


	this.checkConfig = function(){

		if( this.obj["elm_moduleContent"] == null ||
			this.obj["elm_title"] == null ||
			this.obj["elm_editContent"] == null
		  )
		 {
		 }
	}
	this.load = function( reload )
	{
		var portlet = $id(self.id+"");
		if( portlet == null  )return;

		var edit    = $id( self.params["id"]+"_edit" );
		var content = $id( self.params["id"]+"_content" );

		var portlet = PortletLoader.getPortlet(self.params["id"]);
		if( portlet == null )return;
		//if( Framework.Modules[ portlet.params["moduleName"] ] == null  )return;

		if( portlet.isLoaded && !reload )return;
		else	portlet.isLoaded = true;

		var config = new Array();

		config["dataObj"] = clone(this.defaultModuleObj["defaultObj"],true);
		config["elm_moduleContent"] = $id(this.id + "_container");
		config["elm_title"] = $id(this.id + "_title");
		config["elm_editContent"] = $id(this.id + "_edit");

		config["dataObj"]["data"]["id"]= this.dataId;
		config["onLoadModule"] = PortletLoader.onLoadModule;
		config["currentView"] =  this.view;
		config["resizeTitle"] = this.resizeTitle;
		config["params"]=this.params;
		config["enableView"]=this.enableView;
		config["disableView"]=this.disableView;
		config["editCollapseExpand"] = editCollapseExpand;
		config["editCollapse"] = editCollapse;
		config["editExpand"] = editExpand;
		config["isExpanded"] = isExpanded;
		this.obj = config;

		this.checkConfig();

	//	portlet.object = new Framework.Modules[ portlet.params["moduleName"] ]( self.obj );
        moduleConfig=self.obj.params;
		self.obj.config=Framework.Modules[moduleConfig.moduleName+"Widget"];
		self.obj.data={};
		self.obj.data.dataId=moduleConfig.dataId;
		self.obj.data.moduleId=moduleConfig.id;
		var module;
		//console.log("extencClass:"+typeof self.obj.config.extendClass);
		if(typeof self.obj.config.extendClass !="undefined"){
			module=new Framework.Modules[self.obj.config.extendClass]();
		}
		else{
			module=new Framework["Module"]();
		}
		module.init(self.obj);
		//module.alertX();
		portlet.object=module;

		portlet.portlet_DOMOBJ.style.width    = "auto";
		portlet.portlet_DOMOBJ.style.height = "auto";


		if(self.collapsed)
			self.hide();

		var id = self.params["id"] + "";

		if( PortletLoader.NORMALIZE_HEIGHTS )
		{
			setIsMax( id, $id(id).offsetHeight);
			setXSizes();
		}
		if( parseBool(self.params["evalScripts"])  )
		{
			evalScripts( req.responseText );
		}
	}

	this.show = function() {

		if(self == null || !self.isMinimized)return;
		self.portlet_C_DOMOBJ.style.display = 'block';
		self.portlet_DOMOBJ.height = $id(self.params["id"]+"_header").offsetHeight + $id(self.params["id"]+"_container").offsetHeight + 7*2+ "px";
		self.portlet_FRAME.style.height = "auto";
		self.portlet_C_DOMOBJ.nextSibling.style.display = 'block';
		self.portlet_SH_DOMOBJ.firstChild.setAttribute("src", PortletLoader.SHOW_IMG_URL);
		self.isMinimized = false;

		var portlet = PortletLoader.getPortlet( self.params["id"] );

		try{
		
			self.object.onPageResize();
		}catch(ex){}
		if( PortletLoader.NORMALIZE_HEIGHTS )
		{
			setXSizes();
			downsize();
		}

		PortletLoader.saveUserData( "collapsed", null, null, { "id": self.params["id"], "collapsed": false} );
	}
	this.hide = function(obj) {
		if( self == null || self.isMinimized || self.portlet_DOMOBJ == null )return;
		self.portlet_DOMOBJ.height = $id(self.params["id"]+"_header").offsetHeight + "px";
		self.portlet_C_DOMOBJ.style.display = 'none';
		self.portlet_FRAME.style.height = $id(self.params["id"]+"_header").offsetHeight + "px";
		self.portlet_C_DOMOBJ.nextSibling.style.display = 'none';
		self.portlet_DOMOBJ.setAttribute( "height__", self.portlet_C_DOMOBJ.offsetHeight );
		self.portlet_SH_DOMOBJ.firstChild.setAttribute("src", PortletLoader.HIDE_IMG_URL);
		self.isMinimized = true;

		PortletLoader.saveUserData( "collapsed", null, null, { "id": self.params["id"], "collapsed": true} );
	}

	this.showEdit = function() {
		self.portlet_E_DOMOBJ.style.display = 'block';
		self.portlet_DOMOBJ.height = $id(self.params["id"]+"_header").offsetHeight + $id(self.params["id"]+"_container").offsetHeight + 7*2+ "px";

		if( PortletLoader.NORMALIZE_HEIGHTS )
		{
			setXSizes();
			downsize();
		}
		try
		{
			PortletLoader.getPortlet(self.id).object.edit();
		}catch(ex){
			console.log(ex);
		}
	}
	this.hideEdit = function(obj) {
		self.portlet_DOMOBJ.height = $id(self.params["id"]+"_header").offsetHeight + "px";
		self.portlet_E_DOMOBJ.style.display = 'none';
		self.portlet_DOMOBJ.setAttribute( "height__", self.portlet_E_DOMOBJ.offsetHeight );
		try
		{
			PortletLoader.getPortlet(self.id).object.closeEdit();
		}catch(ex){}
	}

	this.attachContent = function(){
		
		if( self == null ||  self.params["moduleName"] == null )return;
		var moduleName=self.params["moduleName"];
		var config=Framework.Modules[moduleName+"Widget"  ];
		
	  	if (typeof config.extendClass !='undefined' && !Framework.Modules[config.extendClass ] )
		{
		   loadScript([config.extendFile]);
  		}
		else
		{
		    this.load();
	   	}
	}

	
	function loadScript(paths){
		    var oHead = document.getElementsByTagName("head")[0];
	    	var oScript = null;
	    	for (var i=0; i<paths.length; i++){
	   			oScript = document.createElement('script');
	   			oScript.setAttribute('src', paths[i] );
	  			oScript.setAttribute('type', 'text/javascript');
				if(i==0)
		        if (Browser.isFirefox){
		    		oScript.onload = function(){
						self.load();
		    		}
		   		}
				else{
		    		waitForExistence();
		   		}
		   		oHead.appendChild(oScript);
			}
 	}

	function additionalView( event )
	{
		if(!event){
			event=window.event;
		}
		event.cancelBubble = true;
		var obj = event.target || event.srcElement;

		var viewType = obj.mode;
		if( viewType  == undefined ){
			viewType = obj.parentNode.mode;
			obj = obj.parentNode;
		}

	try
		{
			PortletLoader.getPortlet(self.id).object[viewType](obj);
			PortletLoader.getPortlet(self.id).object["saveView"](obj);;
			
		}catch(ex){
			
		}
	}


	function maximizeRestore( event)
	{
		if(!event){
			event=window.event;
		}
		var activeTab=Layouter.getActiveTab();
		
		event.cancelBubble = true;
		var module = PortletLoader.getPortlet(self.params["id"]).object;
		var continueMaximize;
		if(typeof activeTab.mode=='undefined' || activeTab.mode == "min" ){
			try{
				continueMaximize=module.beforeMaximize();
				if(!continueMaximize);
					return;
			}
			catch(ex){
				;
			}

			var obj = event.target || event.srcElement;
			obj.src=PortletLoader.RESTORE_IMG_URL;
		
			activeTab.prev={};
				activeTab.prev.domWidth=self.portlet_DOMOBJ.style.width;
				activeTab.prev.domHeight=self.portlet_DOMOBJ.style.height;
			activeTab.prev.height=self.portlet_C_DOMOBJRESIZ.style.height;
			activeTab.prev.left=self.portlet_C_DOMOBJ.style.left;
			activeTab.prev.top=self.portlet_C_DOMOBJ.style.top;
			activeTab.prev.frameWidth=self.portlet_FRAME.style.width;
		if(Browser.isIE){
			var parentTD = self.portlet_DOMOBJ.parentNode;
            activeTab.prev.parentTDWidth = parentTD.style.width;
			parentTD.parentNode.parentNode.parentNode.style.height = "93%";
			var el = parentTD.previousSibling;
			while(el != null){
				if(el.tagName != "TD") {
				el = el.previousSibling;
				continue;
				}
				el.style.width="0%";
				el = el.previousSibling;
			}
			parentTD.style.width = "100%";
			parentTD.style.height = "100%";
			}
			self.portlet_DOMOBJ.style.position="absolute";
			self.portlet_DOMOBJ.style.width="99%";
			self.portlet_DOMOBJ.style.height="98%";
			self.portlet_DOMOBJ.style.left="0px";
			self.portlet_DOMOBJ.style.top="0px";
			self.portlet_FRAME.style.height="100%";
			self.portlet_FRAME.style.width="100%";
			self.portlet_C_DOMOBJRESIZ.style.height="100%"
			
		
		    self.portlet_C_DOMOBJRESIZ.style.height=self.portlet_FRAME.offsetHeight - 20 + "px";
			self.portlet_C_DOMOBJRESIZ.style.width="100%"
			
			
			
			self.portlet_DOMOBJ.draggable=false;
			//self.resizer.enabled=false;
           self.resizer.disableResizer()
			
			$id("tab_"+Layouter.getActiveTabId()).scrollTop = 0;

			try{
				
				module.maximize();
			}
			catch(ex){
				
			}
			activeTab.mode="max";
			self.mode = "max";
			
			self.showHeaderIcons();
		}
		else{
			
			var obj = event.target || event.srcElement;
			obj.src=PortletLoader.MAXIMIZE_IMG_URL;
			if(Browser.isIE){
			var parentTD = self.portlet_DOMOBJ.parentNode;
			parentTD.parentNode.parentNode.parentNode.style.height = "auto";
			parentTD.style.width = activeTab.prev.parentTDWidth;
			parentTD.style.height = "auto";
			var el = parentTD.previousSibling;
					while(el != null){
						if(el.tagName != "TD") {
							el = el.previousSibling;
							continue;
						}
						el.style.width=activeTab.prev.parentTDWidth;
						el = el.previousSibling;
					}
				}
				
				if(Browser.isIE)self.portlet_DOMOBJ.style.position="relative";
				else self.portlet_DOMOBJ.style.position="static";
				self.portlet_DOMOBJ.style.height=activeTab.prev.domHeight;//"auto";
				
				self.portlet_DOMOBJ.style.width=activeTab.prev.domWidth;
				
				self.portlet_DOMOBJ.style.top=activeTab.prev.top;
				self.portlet_DOMOBJ.style.left=activeTab.prev.left;
				self.portlet_C_DOMOBJRESIZ.style.height=activeTab.prev.height;
				self.portlet_FRAME.style.width=activeTab.prev.frameWidth;
				self.portlet_DOMOBJ.draggable=true;
	//		self.resizer.enabled=true;
	        self.resizer.enableResizer()
			activeTab.mode = "min";
			self.mode = "min";

			try{
				module.minimize();
			}catch(ex){}
//			var timer = new Timer( self );
//			timer.setTimeout( 'minimizeModule', 0, module );

			if(!OPTIONS.showHeaderIcons){
				self.hideHeaderIcons();
			}

		}
		
		
	}


	this.minimizeModule = function(module)
	{
		try{
			module.minimize();
		}
		catch(ex){}
	};

 	function waitForExistence()
	{
			if( self.params == null )return;

   			if( Framework.Modules[ self.params["moduleName"] ])
			{
			   self.load();
   			}
			else
			{
    		   setTimeout(waitForExistence,0.5);
   			}
  	}
	function collapseExpand( event )
	{
		if(!event){
			event=window.event;
		}
		if(Layouter.getActiveTab().mode != "max")
		showHide( event );

	}
	function editCollapseExpand( event )
	{
		if(!event){
			event=window.event;
		}
		showHide( event, "edit" );
		if(Browser.isIE6)
		//	self.resizer.resizeTo(self.portlet_FRAME.style.width,self.portlet_FRAME.offsetHeight);
		var editHeight = self.portlet_E_DOMOBJ.offsetHeight;
	//	self.resizer.minHeight = 90+editHeight;
	}

	function editCollapse( event ){
		if(!event){
			event=window.event;
		}
		self.showEdit();
		if(Browser.isIE)
			self.resizer.resizeTo(self.portlet_FRAME.style.width,self.portlet_FRAME.offsetHeight);
		var editHeight = self.portlet_E_DOMOBJ.offsetHeight;
		self.resizer.minHeight = 90+editHeight;
	}
	function editExpand( event ){
		if(!event){
			event=window.event;
		}
		self.hideEdit();
		if(Browser.isIE)
			self.resizer.resizeTo(self.portlet_FRAME.style.width,self.portlet_FRAME.offsetHeight);
		var editHeight = self.portlet_E_DOMOBJ.offsetHeight;
		self.resizer.minHeight = 90+editHeight;
	}
	function isExpanded(){
		return self.portlet_E_DOMOBJ.style.display == 'none';
	}

	function showHide( event, mode )
	{
		if (event) event.cancelBubble = true;
		var obj = ( mode == "edit")? self.portlet_E_DOMOBJ : self.portlet_C_DOMOBJ;
		if( mode == "edit" )
		{
			if(  obj.style.display == "" || obj.style.display == "none" )
				self.showEdit();
			else
				self.hideEdit();
		}
		else
		{
			if( obj.style.display == "" || obj.style.display == "block" )
				self.hide();
			else
				self.show();
		}

	}

	function closePortlet( event )
	{
		if(!event){
			event=window.event;
		}
		try
		{
			PortletLoader.getPortlet(self.id).object.close();
		}catch(ex){}

		event.cancelBubble = true;
		if( self.confirmOnClose )
			 if(confirm("Close this portlet ?"))
			 	self.close()
			 else
			 	return;
		else
			self.close();
		
		for(var k = 0; k < PORTLETS.length; k++){
			if (PORTLETS[k].id == self.id){		
				PORTLETS.splice(k, 1);
				return;
			}
		}
	}
}


Drag={
    "obj":null,
    
	"init":function(a, aRoot){
	
			a.onmousedown=Drag.start;
			a.root = aRoot;
			if(isNaN(parseInt(a.root.style.left)))a.root.style.left="1000px";
			if(isNaN(parseInt(a.root.style.top)))a.root.style.top="100px";
			
			a.root.onDragStart=new Function();
			a.root.onDragEnd=new Function();
			a.root.onDrag=new Function();
		},
	"start":function(a){
	if(!this.root.draggable)
				return false;
			try{
			 b=Drag.obj=this;
			 a=Drag.fixE(a);
			 c=parseInt(b.root.style.top);
			 d=parseInt(b.root.style.left);
		  b.root.onDragStart(d-100,c-100,a.clientX-100,a.clientY-100);
			b.lastMouseX=a.clientX;
			b.lastMouseY=a.clientY;
			}catch(ex){}
			document.onmousemove=Drag.drag;
			document.onmouseup=Drag.end;
			return false;
		},
	"drag":function(a){

			 a=Drag.fixE(a);
			 b=Drag.obj;
			c=a.clientY;
			d=a.clientX;
			e=parseInt(b.root.style.top);
			f=parseInt(b.root.style.left);
			var h,g;
			h=f+d-b.lastMouseX;
			g=e+c-b.lastMouseY;
			b.root.style.left=h+"px";
			b.root.style.top=g+"px";
			b.lastMouseX=d;
			b.lastMouseY=c;
			b.root.onDrag(h,g,a.clientX,a.clientY);
			return false;
		},
	"end":function(){
			document.onmousemove=null;
			document.onmouseup=null;
			Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style.left),parseInt(Drag.obj.root.style.top));
			Drag.obj=null;
		},
	"fixE":function(a){
			if(typeof a=="undefined")a=window.event;
			if(typeof a.layerX=="undefined")a.layerX=a.offsetX;
			if(typeof a.layerY=="undefined")a.layerY=a.offsetY;
			return a;
		}
};