var windowHref = window.location.href;
var URLDomain = windowHref.substring(0,windowHref.lastIndexOf("/"));
if (!URLDomain) {URLDomain = windowHref;}
Framework.serverPath = URLDomain;
Framework.userURL = Framework.serverPath + "/user/";
Framework.contactURL =  Framework.serverPath + "/notification/";
Framework.agentURL = Framework.serverPath + "/agent/";
Framework.testURL = Framework.serverPath + "/test/";
Framework.statisticURL = Framework.serverPath + "/statistic/";
Framework.languageURL = Framework.serverPath + "/lang/";
Framework.todoURL = Framework.serverPath + "/todo/";
Framework.layoutURL = Framework.serverPath + "/layout/";
Framework.reportURL = Framework.serverPath + "/report/";
Framework.notesURL = Framework.serverPath + "/notes/";
Framework.feedbackURL = Framework.serverPath + "/feedback/";
Framework.redirectPUT = Framework.serverPath+"/put/";
Framework.redirectDelete = Framework.serverPath+"/delete/";
Framework.tellfriendURL = Framework.serverPath + "/friend/";
Framework.tracerouteURL = Framework.serverPath+"/trace/";
Framework.testimonialURL = Framework.serverPath+"/testimonial/";
Framework.optionsURL = Framework.serverPath+"/options/";
Framework.sharedTabConfigURL = Framework.serverPath + "/dev_tmp/add_shared_tab.xml";
Framework.downloadAgentURL = Framework.serverPath + "/AgentDownloader";
Framework.mibsListURL = Framework.serverPath + "/mibbrowse";


AGENT_KEY="monitis_agent";
PERSONALPLAN = 0;
BASICPLAN = 1;
PLUSPLAN = 2;
PLUS1MINUTEPLAN = 6;
FREEPLAN = 3;
PERSONALPLUSPLAN = 11;
BASICPLUSPLAN = 12;
TESTSPLUSPLAN = 8;
PERSONAL1PLAN=13;
SPECIALTEST1500=21;
PLATFORM_32="32";
PLATFORM_64="64";

var IS_COOKIE_SET=null;
var agt = navigator.userAgent.toLowerCase();
var isIE = ( /msie/i.test(navigator.userAgent) &&  !/opera/i.test(navigator.userAgent) );
var is_moz  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
            && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
            && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));

var THEME_IMG_ROOT = "themes/default/";

TABLE_VIEW="0";
LINE_VIEW="1";
BAR_VIEW="2";
CALENDAR_VIEW="3";
MAP_VIEW="4";
PIE_VIEW="5";
ANGLE_VIEW="6";
TRACE_VIEW="7";
CODE_VIEW="8";

VIEWS=[
{"label":"Table","value":TABLE_VIEW},
{"label":"Line chart","value":LINE_VIEW},
{"label":"Bar chart","value":BAR_VIEW},
{"label":"Calendar view","value":CALENDAR_VIEW}
];

TOP_COUNTRY_VIEW="9";
TOP_CITY_VIEW="10";
TOP_IP_VIEW="11";
TOP_OS_VIEW="12";
TOP_BROWSER_VIEW="13";
TOP_REFERER_VIEW="14";
TOP_KEYWORD_VIEW="15";
DEMO=false;
DEFAULT_TAB_ID=null;
COUNTRY_CODES = null;
AUSTRALIA_ID = 14;
var menuWidth = (CURRENT_LANGUAGE == "ru") ? 175 : 145;
var OPTIONS = {};
var GENERAL_SETTINGS = {
	

	LAYOUT_MAX_COLUMNS_COUNT : 4,
	DEFAULT_COLUMNS_COUNT : 2,
	DEFAULT_ROW_COUNT : 3,
	LOAD_ONLY_CURRENT_TAB : true,
	DEFAULT_AUTOLAYOUT : [2,2],
	DEFAULT_MODULE_HEIGHT: 200,
	POOLING_ENABLED: true,
	POOL_MAX_SIZE: 50,
	POLLING_ENABLED: false,
	POLLING_INTERVAL: 100,

	AUTO_LAYOUTS: [
		[2,2],
		[3,2],
		[3,3],
		[4,3],
		[1,1],
		[1,2]
	],

	LANGUAGES: [
	 "en",
	 "ru",
	 "fr",
	 "de"
	],

	SKINS: [
		"blackberry",
		"default",
		"gray",
		"pink"
	],

	PANELS_CONFIG: {
       west: {
			split:true,
	        initialSize: menuWidth,
	        titlebar: true,
	        collapsible: true,
	        minSize: 140,
	        maxSize: 140,
	        animate: true
	  },
	  center: {
	        autoScroll:true,
	        tabPosition: 'top',
	        closeOnTab: true,
	        alwaysShowTabs: true
	  },
	  north: {
	        split:true,
	        initialSize: 70,
	        minSize: 70,
	        maxSize: 150,
	        titlebar: true,
	        collapsible: true,
	        animate: true
	  }
	}
}

function defaultUserSignIn(){
	IS_COOKIE_SET=true;	
	Controller.init();
}

Controller = {
	DONTLOAD: false,
	LOADED: false,
	CACHE:{},
	init: function()
	{
		/*if(IS_COOKIE_SET==null){
			var data="email=hlputyan@sourcio.com&password=mmmmmm&timezone=240&type=signIn";
			Request.sendPOST(Framework.userURL+'?nocache='+Math.random(), data, defaultUserSignIn);
		}*/
		if( this.LOADED )return;
		else this.LOADED = true;
		curWidth = document.documentElement.clientWidth;
		curHeight = document.documentElement.clientHeight;

		RequestDispatcher.init();
		PortletLoader.init();
		Controller.setLanguageVariables();

	},

	init2: function()
	{
		Layouter.init();
		//ChartManager.init();
		PortletLoader.request_getPortlets();
//		MenuManager.init();
//		DialogWindow.init();
//		ShardTabsManager.init();
//		TagManager.init();
//		MysManager.init();
	//	MessageWindow.init();

	},
	
	setInCache:function(key,obj,timeout){
		Controller.CACHE[key]={};
		Controller.CACHE[key].object=obj;
		Controller.CACHE[key].setDate=new Date();
		Controller.CACHE[key].timeout=timeout;
		
	},
	
	getFromCache:function(key,checkExpire){
		var cacheObj=Controller.CACHE[key];
		var obj=null;
		if(typeof cacheObj=='undefined'){
			obj=null;
		}
		else if(!checkExpire){
			obj=cacheObj.object;
		}
		else if(checkExpire){
			var now=new Date();
			if((now.getTime()-cacheObj.setDate.getTime())<cacheObj.timeout){
				obj=cacheObj.object;
			}
			else{
				delete Controller.CACHE[key];
				obj=null;
			}
		}
		return obj;
	},

	updateMaxValue:function(){
		var maxValue=-1;
		if($id("staticRadio").checked==true){
			try{
				var maxValue=parseInt($id("staticInput").value.trim(),10);
				if(maxValue!=null && typeof maxValue!='undefined' && !isNaN(maxValue)){
					if(maxValue>TEST_FAIL_POINT){
						maxValue=TEST_FAIL_POINT;
					}
					RequestDispatcher.sendPUT(Framework.testURL+User.userId+"/maxvalue/"+maxValue, Controller.maxValueCallback);
				}
				else{
					staticInput.value="";
					scalingErrorTd.innerHTML="Invalid input";

				}
			}
			catch(ex){}
		}
		else{
			RequestDispatcher.sendPUT(Framework.testURL+User.userId+"/maxvalue/"+maxValue, Controller.maxValueCallback);
		}
	},
	maxValueCallback:function(response){
		var resp=eval("("+response.responseText+")");
		if(resp.status==STATUS_OK){
			;
		}


	},/*
	changeLanguage_step1: function( lang_abrv )
	{
		MessageWindow.show( { header: Framework.Lang.message,
								  body: Framework.Lang.change_language_message,
								  okHandler: Controller.changeLanguage_step2_OK,
								  cancelHandler: Controller.changeLanguage_step2_CANCEL,
								  handlerParams: lang_abrv
		})

	},*/

	changeLanguage_step2_OK:function(lang_abrv)
	{
		var url = Framework.languageURL + User.userId + "/" + lang_abrv;
		RequestDispatcher.send( url, "PUT", null, Controller.changeLanguage_step3);
	},

	changeLanguage_step2_CANCEL: function( lang_abrv )
	{
		$id("language_" + CURRENT_LANGUAGE).changeValue(true);
	},

	changeLanguage_step3:function( req, handlerParams )
	{
		var responseStatus = req.responseXML.firstChild.firstChild.nodeValue;
		responseStatus = parseInt( responseStatus );
		if( responseStatus )
			window.location.reload(true);
	},

	

	generateDialogPanel: function(){
		this.dialogPanel = new YAHOO.widget.Dialog("dlg", { visible:false, effect:[{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.80},{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.80}], fixedcenter:true, constraintoviewport:true, modal:true, draggable:true });
		this.dialogPanel.render();
	},
	showDialogPanel: function( event, mode, title )
	{
		var menuItem = event.target || event.srcElement;

		if( menuItem == null  )menuItem = event;

		var config = { event: event, mode: mode, title: title, menuItem: menuItem };
		switch( mode )
		{
			case "Agent":
				var url = Framework.downloadAgentURL + "?userKey=" + User.userId;
				RequestDispatcher.sendGET( url, Controller.showDialogPanel_Step2, config );
				break;
			default:
				Controller.showDialogPanel_Step2( null, config );
		}
	},

	showDialogPanel_Step2: function( req, handlerParams )
	{
		var responseParams;
		if( req )
			responseParams = eval ( "(" + req.responseText + ")" );
		var event = handlerParams.event;
		var mode  = handlerParams.mode;
		var title = handlerParams.title;
		var menuItem = handlerParams.menuItem;


		switch( mode )
		{
			case "Agent":
				if( GENERAL_SETTINGS.REDIRECT_TO_DOWNLOAD_PAGE )
				{
					GENERAL_SETTINGS.REDIRECT_TO_DOWNLOAD_PAGE = false;
					User.hasUserAgent = true;
				}
				else
					User.hasUserAgent = responseParams.content;
				break;
		}


	//	MenuManager.hideAllTooltips();



		var obj = generateDialogContent( mode );
		var dialogWindowBody = $id( "dialogWindowBody" );
		dialogWindowBody.innerHTML = " <img src='images/loader.gif' />  " + Framework.Lang.loading + "...";
		if(  title == null && Framework.Modules[ mode + "Widget" ] != null ) title = Framework.Modules[ mode + "Widget" ].add_title;
		else
		{
			switch( mode )
			{
				case "SubmitTestimonial": title = Framework.Lang.submitTestimonial;break;
				case "SharedTabs": title = Framework.Lang.add_shared_tab;break;
				default:
					title = "&nbsp;";
			}

		}
		$id("dialogWindowHead").innerHTML = (title == null)?"&nbsp;":title;

		if( obj != null )
		{
			dialogWindowBody.innerHTML = "";
			DialogWindow.showDialog(menuItem , mode,  DialogCaller[ "Save"+mode ], obj.firstChild );
		}
	},

	hideDialogPanel: function(){
		this.dialogPanel.hide();
	},

	closeModules: function( moduleName, dataIds )
	{
		for( var i=0; i<PORTLETS.length; i++)
		{
			portlet = PORTLETS[i];
			if( portlet.moduleName != moduleName )continue;

			for( var j=0; j<dataIds.length; j++ )
			{
				if( parseInt(portlet.params[ "dataId" ]) == parseInt(dataIds[j]) )
				{
					portlet.close();
					try{
						portlet.object.destroy();
					}catch(ex){}
				}
			}
		}
		
	},

	tabChanged: function(evt){
		try{
			return Controller.callModulesListener("onPageDisplay");
		}catch(ex){}
	},

	callModulesListener_timer: null,

	callModulesListener: function( handler, returnValue, tabId )
	{
		var cur_time = Math.round((new Date).getTime());

		if( cur_time-this.callModulesListener_timer < 200 )return;

		var table = $id("table_" + Layouter.getActiveTabId() );
		var tbody = table.getElementsByTagName("TBODY")[0];
		var tds = tbody.firstChild.childNodes;

		var count = tds.length;
		for( var i=0; i<tds.length; i++ )
		{
			if( tds[i].tagName != "TD"  )continue;
			for( var j=0; j<tds[i].childNodes.length; j++ )
				if( tds[i].childNodes[j].className == "portlet" )
				{
					var portlet = PortletLoader.getPortlet( tds[i].childNodes[j].id );
					try{
					portlet.object[handler]();
					}catch(ex){}
				}
		}
		this.callModulesListener_timer = Math.round((new Date).getTime());
		return (returnValue == null)?true:returnValue;
	},


	splitterMoved: function()
	{
		Controller.fixModuleSizes();
		Controller.callModulesListener( "onPageResize", true );
		setCookie("expandcollapse", (Layouter.dialog.getRegion('west').collapsed) ? "collapse" : "expand");
		setCookie("menuWidth", Layouter.dialog.getRegion('west').el.dom.clientWidth);

	},





	setLanguageVariables : function()
	{
		try{
			var id = [ "deletePage", "collapseAll", "expandAll", "footerLink_signIn"];
			var maxlength=0;
			for (var i = 0; i < id.length; i++)
			{
				text = Framework.Lang[id[i]];
				if (text.length > maxlength) maxlength = text.length;
			}
			var width = maxlength * 5;
			for (var i = 0; i < id.length; i++)
			{
				$id(id[i]).parentNode.style.width = width + "px";
				$id(id[i]).innerHTML = Framework.Lang[id[i]];
			}
		}
		catch(ex){
		//	console.log(ex);
		}
	},


	pre_changeTabLayout: function(colCount, tabId, dontCallListeners )
	{
		Controller.enableLoadingScreen( true );
		setTimeout( "Controller.changeTabLayout("+colCount+", "+ tabId+ "," + dontCallListeners+")", 500 );
	},

	changeTabLayout : function( colCount, tabId, dontCallListeners )
	{

		if(  parseInt(colCount) <= 0  )
		{
			Controller.enableLoadingScreen( false );
			return;
		}

		if( tabId == null ) tabId =  Layouter.getActiveTabId();

		var table = $id("table_" + tabId );

		if( table == null )
		{
			Controller.enableLoadingScreen( false );
			return;
		}

		Controller.enableLoadingScreen( true );

		var visible_tds_count = TABS_CONFIG[ tabId ]["colCount"];


		TABS_CONFIG[ tabId ]["colCount"] = colCount;
		var colCount_COPY2 = colCount;

		var wd = Math.ceil( 100 / colCount );

		var tbody = table.getElementsByTagName("TBODY")[0];

		var tds = tbody.firstChild.childNodes;
		var portlet_count = 0;
		var tdPortletCount ={};
		var tds_count = 0;


		var count = tds.length;
		for( var i=0; i<tds.length; i++ )
		{
			if( tds[i].tagName != "TD"  )continue;
			tds_count++;


			tdPortletCount[tds[i].id] = 0;
			for( var j=0; j<tds[i].childNodes.length; j++ )
				if( tds[i].childNodes[j].className == "portlet" )
				{
					portlet_count++;
					tdPortletCount[tds[i].id]++;
				}
		}



		var eachColCount = Math.floor(portlet_count/colCount);

		if(  colCount >= visible_tds_count )
		{
			var colCountCopy = colCount;

			var tds =  tbody.firstChild.childNodes;
			var count = tds.length;
			for(  var i=0; i<count; i++)
			{
				if( tds[i].tagName != "TD"  )continue;

				tds[i].className = "";

				if( colCountCopy-- >= 0 )
				{
					tds[i].width = wd + "%";
					tds[i].style.display = "";

					if( Browser.isOpera )
					{
						tds[i].style.display = "block";
					}
				}
				else
				{
					tds[i].style.width = "0px";
				}
			}
		}




		if( eachColCount == 0 )eachColCount = 1;


		var currentTD = $id(tabId+"_body"+1);

		var c = 1;
		var new_counter = 0;

		for( var i=0; i<count; i++ )
		{
			if( tds[i].tagName != "TD")continue;
			var count2 = tds[i].childNodes.length;

			for( var j=0; j<count2; j++ )
			{
				if( currentTD == null || currentTD.width == "0%" )break;


				var portlet = tds[i].childNodes[j];
				if( portlet == null || portlet.className != "portlet" )continue;

				if( tdPortletCount[ tds[i].id ] == 0 )break;

				currentTD.appendChild(portlet);

				$id(portlet.id + "_frame").style.width = "100%";

				--j;
				tdPortletCount[ tds[i].id ]--;
				new_counter++;

				if( new_counter == eachColCount &&  currentTD.id != tabId+"_body"+colCount )
				{
					currentTD = $id(tabId+"_body"+(++c));
					new_counter = 0;
				}
			}

		}
		var tds =  tbody.firstChild.childNodes;
		var count = tds.length;

		for(  var i=0; i<count; i++)
		{
			if( tds[i].tagName != "TD"  )continue;

			tds[i].className = "";

			if( colCount > 0 ){
				tds[i].width = wd + "%";
				tds[i].style.display = "";
				colCount--;
			}
			else
			{
				try{
				alert("w");
				tds[i].style.display = "none";
				tds[i].width = "0%";
				alert("e");
				}catch(ex){   };
			}
		}



		var flag1 = false, flag2 = false;

		for(  var i=0; i<tds.length; i++)
		{
			if( tds[i].tagName != "TD"  )continue;

			if( !flag1 )
			{
				tds[i].className += " topLeftCell";
				break;
			}
		}


		for(  var i=tds.length-1; i>=0; i--)
		{
			if( tds[i].tagName != "TD" || tds[i].style.display == "none" || tds[i].width == "0%")continue;

			if( !flag2 )
			{
				tds[i].className += " topRightCell";
				break;
			}
		}

		Controller.fixModuleSizes();

		if( dontCallListeners )return;

		Controller.callModulesListener( 'onPageResize', true );
		PortletLoader.saveUserData( "column_layout", null, null, { tabId: tabId, colCount: colCount_COPY2} );

		Controller.enableLoadingScreen( false );
	},
	fixModuleSizes: function()
	{
		var tabId = Layouter.getActiveTabId();
		if( tabId == null  )return;

		for( var i=0; i<PORTLETS.length; i++ )
		{
			if( PORTLETS[i].params["tabNumber"] == tabId )
			{
				if( isNaN(PORTLETS[i].params["height"]) )PORTLETS[i].params["height"] = Controller.getTabConfig(tabId).moduleHeight;
				PORTLETS[i].resizer.resizeTo( PORTLETS[i].portlet_DOMOBJ.offsetWidth, parseInt(PORTLETS[i].params["height"]) );
				PORTLETS[i].portlet_FRAME.style.width = "100%";
			}
		}

		Controller.callModulesListener( 'onPageResize', true );
	},

	enableLoadingScreen: function( displayMode )
	{
		$id("main-page-loading").style.display = (displayMode)?"block":"none";
		$id("loading_mask").style.display      = (displayMode)?"block":"none";
	},

	calculateLayoutHeight: function( rowCount, tabId )
	{
		if(tabId == null)
			tabId = Layouter.getActiveTabId();
		if(rowCount == null)
			rowCount = TABS_CONFIG[tabId].rowCount || GENERAL_SETTINGS.DEFAULT_ROW_COUNT;;
		var height = Math.max($id("tab_"+ tabId).offsetHeight);
		height = Math.ceil( height / rowCount )-2;
		return height;
	},

	pre_changeTabLayout2: function(colCount, rowCount, tabId, onlyVerticaly )
	{
		Controller.enableLoadingScreen( true );
		setTimeout( "Controller.changeTabLayout2("+colCount+", "+ rowCount+ "," + tabId + ","+ onlyVerticaly +")", 500 );
	},

	changeTabLayout2: function( colCount, rowCount, tabId, onlyVerticaly )
	{
		if(  parseInt(colCount) <= 0  ){
			Controller.enableLoadingScreen( false );
			return;
		}

		if( tabId == null ) tabId =  Layouter.getActiveTabId();
		var table = $id("table_" + tabId );

		if( table == null ){
			Controller.enableLoadingScreen( false );
			return;
		}

		Controller.enableLoadingScreen( true );

		if(!onlyVerticaly)Controller.changeTabLayout(colCount, tabId, true );

		TABS_CONFIG[ tabId ]["colCount"] = colCount;


		var height = Controller.calculateLayoutHeight(rowCount, tabId );

		TABS_CONFIG[ tabId ][ "moduleHeight" ] = height;


		var tbody = table.getElementsByTagName("TBODY")[0];

		var tds = tbody.firstChild.childNodes;

		var count = tds.length;
		for( var i=0; i<count; i++ )
		{
			if( tds[i].tagName != "TD") continue;
			var count2 = tds[i].childNodes.length;

			for( var j=0; j<count2; j++ )
			{
				var portlet = tds[i].childNodes[j];
				if( portlet == null || portlet.className != "portlet" )continue;

				portlet = PortletLoader.getPortlet( portlet.id );
				portlet.resizer.resizeTo( portlet.portlet_DOMOBJ.offsetWidth,TABS_CONFIG[ tabId ][ "moduleHeight" ]);
				portlet.portlet_FRAME.style.width = "100%";
				portlet.portlet_FRAME.style.position = "";
			}
		}

		TABS_CONFIG[ tabId ][ "layout" ] = [ rowCount, colCount ];

		Controller.callModulesListener( "onPageResize", true );
		PortletLoader.saveUserData( "auto_layout", null, null, { tabId: tabId, rowCount: rowCount, colCount: colCount} );

		Controller.enableLoadingScreen( false );
	},


	numberOfColsForAllTabs : null,

	pre_changeAllTabLayouts: function( colCount )
	{
		Controller.enableLoadingScreen( true );
		setTimeout( "Controller.changeAllTabLayouts("+colCount+")", 500 );
	},

	changeAllTabLayouts: function( colCount )
	{
		if ( !Controller.getTabConfig() ) {return;}
		for( var id in TABS_CONFIG )
		{
			if( typeof(TABS_CONFIG[id]) == "function" )continue;
			Controller.changeTabLayout( colCount, id );
		}
		this.numberOfColsForAllTabs = colCount;
	},

	getTabConfig: function( tabId )
	{
		if( tabId == null )tabId = Layouter.getActiveTabId();
		return TABS_CONFIG[tabId];
	}
}


var PORTLETS = new Array;
var	PORTLETS_CONFIG = new Array();
var TABS_CONFIG = new Array();
var MONITIS_IMG_ROOT = "/images/monitis/";

var User = {}


var PortletLoader = {
	PORTLETS_URL: "dev_tmp/modules.xml",
	TABS_URL:  Framework.layoutURL + "defuser/PagesXML/" + (-new Date().getTimezoneOffset()) + "/" + CURRENT_LANGUAGE,
	GHOST: null,

	NORMALIZE_HEIGHTS : false,

	DRAGGABLE_CONTENT: "",

	SHOW_IMG_URL: THEME_IMG_ROOT+"images/showMod.gif",
	HIDE_IMG_URL: THEME_IMG_ROOT+"images/hideMod.gif",
	CLOSE_IMG_URL: "images/monitis/closeMod.gif",
	MAXIMIZE_IMG_URL: "images/monitis/maximize.gif",
	RESTORE_IMG_URL: "images/monitis/restore.gif",
	EDIT_IMG_URL: "images/monitis/edit.gif",
	TABLEVIEW_IMG_URL: "images/monitis/table.gif",
	BARCHARVIEW_IMG_URL: "images/monitis/barchart.gif",
	LINECHARVIEW_IMG_URL: "images/monitis/linechart.gif",
	CALENDARVIEW_IMG_URL: "images/monitis/calendar.gif",
	MAPVIEW_IMG_URL: "images/monitis/map.gif",
	more_IMG_URL: "images/monitis/more.gif",
	ANGLE_IMG_URL: "images/monitis/response_time.gif",
	TRACEVIEW_IMG_URL: "images/monitis/trace_map.gif",
	hasTableView_IMG_URL: "images/monitis/table.gif",
	hasBarChartView_IMG_URL: "images/monitis/barchart.gif",
	hasLineChartView_IMG_URL: "images/monitis/linechart.gif",
	hasCalendarView_IMG_URL: "images/monitis/calendar.gif",
	hasMapView_IMG_URL: "images/monitis/map.gif",
	hasAngleView_IMG_URL: "images/monitis/response_time.gif",
	hasTraceView_IMG_URL: "images/monitis/trace_map.gif",
	hasPieChartView_IMG_URL: "images/monitis/piechart.gif",

   	FASSET_COL_PREFIX: "body",

	init: function()
	{

		this.createPortletGhost();
		this.request_getTabs();
	},

	changePortletHeaderImg: function(){
		PortletLoader.SHOW_IMG_URL = THEME_IMG_ROOT+"images/showMod.gif";
		PortletLoader.HIDE_IMG_URL = THEME_IMG_ROOT+"images/hideMod.gif";
		var size = PORTLETS.length;
		for( var i = 0; i < size; i++ ) {
			if(PORTLETS[i] == null )continue;
			PORTLETS[i].setShowHideImg(THEME_IMG_ROOT);
		}
	},

	updatePermanent: function(permanent)
	{
		if(permanent != undefined && OPTIONS.showHeaderIcons != permanent)
		{
			var size = PORTLETS.length;
			for( var i = 0; i < size; i++ ) {
				if(PORTLETS[i] == null )continue;
				if(permanent) {
					PORTLETS[i].showHeaderIcons();
				} else {
					PORTLETS[i].hideHeaderIcons();
				}

			}
			OPTIONS.showHeaderIcons = permanent;
			RequestDispatcher.send(Framework.optionsURL + User.userId + "/header_icons/" + permanent, "PUT", "", checkStatus, null);
		}
	},

	createPortletGhost: function()
	{
		this.GHOST = document.createElement("div");
		this.GHOST.id = "portletGhost";
	},
	onLoadModule: function()
	{

	},
	refresh_dependent_modules: function( mode, dataId )
	{
			var moduleDefaultParams = Framework.Modules[ mode +"Widget" ];
			if( moduleDefaultParams != null )
			{
				var dependent_modules = moduleDefaultParams.dependent_modules;
				if( dependent_modules != null )
					for( var i=0; i<dependent_modules.length; i++ )
					{
						var modules = PortletLoader.getPortletsByName( dependent_modules[i] );
						for( var j=0; j<modules.length; j++ )
							if (!dataId || dataId == modules[j].dataId)
								modules[j].load( true );
					}
			}
			setTimeout( "PortletLoader.refresh_dependent_modules2( \'"+ mode + "\')", 1000);
	},

	refresh_dependent_modules2: function(mode)
	{
		var moduleDefaultParams = Framework.Modules[ mode+"Widget" ];
		if( moduleDefaultParams != null )
		{
			var additional_actions = moduleDefaultParams.additional_actions;
			if( additional_actions != null )
				for( var i=0; i<additional_actions.length; i++ )
				{
					try{
						additional_actions[i]();
					}catch(ex){}
				}
		}
	},
	
	callByName:function(mode,functionName){
		for(var i=0; i<PORTLETS.length; i++){
			if(PORTLETS[i].params.moduleName==mode){
				try{				
				PORTLETS[i].object[functionName]();
				}
				catch(ex){
					;
				}
			}
		}
	},
	
	saveUserDataResponse: function(response, arg)
	{
		if(response.responseText != "")
		{
			var respArgs = eval("("+response.responseText+")");

			try{
				arg.callback(arg.callbackArgs,respArgs);
			}
			catch(e){}

			if(respArgs["new"] == true)
			{
				try{
				PortletLoader.saveUserData('order');
				} catch(e){}
			}
		}
		
	},
	saveUserData: function( mode, obj, callback, callbackArgs )
	{
		var reqtype = '';
		var data = '';
		var docId = '';
		var arg = {callback:callback, callbackArgs:callbackArgs};
		switch(mode)
		{
			case 'moduleResize':
				reqtype = 'put';
				data = '/'+ callbackArgs["id"] + '/' + callbackArgs["height"];
				break;
			case 'unshare':
				reqtype = 'put';
				data = '/'+ callbackArgs["tabId"];
				break;
			case 'share':
				reqtype = 'put';
				data = '/'+ callbackArgs["tabId"] + "/" +  escape(callbackArgs["tags"]) + "/" +  escape(callbackArgs["descr"]);
				break;
			case 'tab_place':
				reqtype = 'put';
				data = '/'+ callbackArgs[0] + "/" +  callbackArgs[1];
				mode = "pageorder";
				break;
			case 'column_layout':
			case 'auto_layout':
				reqtype = 'put';
				var moduleOrder = this.getModulesOrder();
				var moduleHeights = this.getModulesHeights();
				if( GENERAL_SETTINGS.moduleOrder == moduleOrder )return;
				else GENERAL_SETTINGS.moduleOrder = moduleOrder;
				GENERAL_SETTINGS.moduleOrder = moduleOrder;
				data =  '/' + callbackArgs["tabId"];
				data += '/' + callbackArgs["colCount"];
				data += '/' + ((mode == 'column_layout')?"null":callbackArgs["rowCount"]);
				data += '/' + moduleOrder;
				mode = "pageLayout";
				break;
			case 'order':
				reqtype = 'put';
				var moduleOrder = this.getModulesOrder();
				if( GENERAL_SETTINGS.moduleOrder == moduleOrder )return;
				else GENERAL_SETTINGS.moduleOrder = moduleOrder;
				GENERAL_SETTINGS.moduleOrder = moduleOrder;
				data = '/'+ moduleOrder;
				break;
			case 'collapsed' :
				reqtype = 'put';
				data = '/'+ callbackArgs["id"] + '/' + callbackArgs["collapsed"];
				break;
			case 'close':
				mode = 'module';
				reqtype = 'del';
				data = '/'+obj.params.id;
				break;
			case 'new':
				mode = 'module';
				reqtype = 'post';
				var params = obj;
				var dataId = params.dataId;
				if(dataId == undefined)
				dataId = 0;
				var tabID = Controller.getTabConfig(params.tabNumber).id;
				data = '/'+ tabID +'/'+params.moduleName+'/'+dataId;
				break;
			case 'addPage' :
				mode = 'page';
				reqtype = 'post';
				data = '/' + encode(obj);
				break;
			case 'deletePage' :
				mode = 'page';
				reqtype = 'del';
				data = '/' + obj;
				break;
			case 'renamePage' :
				mode = 'page';
				reqtype = 'put';
				data = '/' + obj.id + '/' + encode(obj.title);
				break;

		}
		switch(reqtype)
		{
			case 'put' :
			RequestDispatcher.send(Framework.layoutURL + User.userId + "/"+mode+data,"PUT", "", this.saveUserDataResponse , arg);
			break;
			case 'post' :
			RequestDispatcher.send(Framework.layoutURL + User.userId + "/"+mode+data, "POST","", this.saveUserDataResponse, arg);
			break;
			case 'del' :
			RequestDispatcher.send(Framework.layoutURL + User.userId + "/"+mode+data, "DELETE","", this.saveUserDataResponse, arg);
			break;
		}
		
	},

	getModulesOrder: function()
	{
		var result = [];
		for( var id in TABS_CONFIG )
		{
			if( typeof(TABS_CONFIG[id]) == "function" )continue;

			var table = $id("table_" + id );
			if( table == null )continue;

			var tbody = table.getElementsByTagName("TBODY")[0];
			var tds = tbody.firstChild.childNodes;
			var portlet_count = 0;

			var arr = [];
			for( var i=0; i<tds.length; i++ )
			{
				if( tds[i].tagName != "TD"  )continue;
				var arr2 = [];
				for( var j=0; j<tds[i].childNodes.length; j++ )
				{
					var portlet_DOMOBJ = tds[i].childNodes[j]
					if( portlet_DOMOBJ.className == "portlet" )
					{
 						if (portlet_DOMOBJ.id!=null) arr2.push(portlet_DOMOBJ.id);
					}
				}

				arr.push(arr2.join(','));
			}

			 result.push(encode(id)  + "_" + arr.join(":"));
		}
 		return result.join("!");
	},

	getModulesHeights: function(){
		var result = "";
		for( var i=0; i<PORTLETS.length; i++ )
			result += ";" + PORTLETS[i].id + ":" + PORTLETS[i].params["height"];
		return result.substr(1, result.length);
	},
	request_getPortlet: function( url )
	{
		RequestDispatcher.connectGET( url, null , PortletLoader.process_getPortlet , null );
	},

	process_getPortlet: function( req, handlerParams )
	{
		PortletLoader.generatePortlet( req.responseXML.firstChild );
	},
	request_getTabs: function()
	{
		if (DEMO) {
			PortletLoader.process_getTabs();
		}else{
			RequestDispatcher.connectGET( PortletLoader.TABS_URL, null , PortletLoader.process_getTabs , null );
		}
	},

	process_getTabs: function(req, handlerParams )
	{
		if( !DEMO && req.responseText == "" ) return;
		var tabUserJSON = (DEMO) ?  DEMO_TAB_CONFIG : eval( "("+ req.responseText + ")" );
		User = tabUserJSON["user"];

		if( User  == null )return;
		User.hasUserAgent = parseBool( User.hasUserAgent );


		User.timezoneOffset = -(new Date().getTimezoneOffset());
		TABS_CONFIG = tabUserJSON["tabs"];
		OPTIONS = tabUserJSON["options"];

		theme_link = document.createElement("link");
		theme_link.setAttribute("rel", "stylesheet");
		theme_link.setAttribute("type", "text/css");
		theme_link.href = "themes/" + OPTIONS.theme + '/' + OPTIONS.theme + ".css";
		document.getElementsByTagName("head")[0].appendChild(theme_link);
		THEME_IMG_ROOT = "themes/"+OPTIONS.theme+"/";
		PortletLoader.SHOW_IMG_URL = THEME_IMG_ROOT+"images/showMod.gif";
		PortletLoader.HIDE_IMG_URL = THEME_IMG_ROOT+"images/hideMod.gif";

		Controller.numberOfColsForAllTabs = 0;

		for( var id in TABS_CONFIG )
		{
			DEFAULT_TAB_ID = id;
			var tab = TABS_CONFIG[id];
			if( typeof(tab) == "function" || tab == null)continue;

			tab['id'] = parseInt(id);

			if(  tab['colCount'] != null )
				tab['colCount'] = parseInt(tab['colCount']);
			else
				tab['colCount'] = GENERAL_SETTINGS.DEFAULT_COLUMNS_COUNT;

			if( tab['isMenuExist'] )
				tab['isMenuExist'] = parseBool( tab['isMenuExist'] );
			else
				tab['isMenuExist'] = true;

			if( tab['isShared'] )
				tab['isShared'] = parseBool( tab['isShared'] );
			else
				tab['isShared'] = false;

			if( tab['moduleHeight'] )
				tab['moduleHeight'] = parseInt( tab['moduleHeight'] );

			TABS_CONFIG[ id ][ "layout" ] = [ tab['rowCount'], tab['colCount'] ];
			if (Controller.numberOfColsForAllTabs == 0) Controller.numberOfColsForAllTabs = tab['colCount'];
			else if(Controller.numberOfColsForAllTabs != tab['colCount']) Controller.numberOfColsForAllTabs = null;

		}

		PortletLoader.sortByOrder();

		Controller.init2();
	},

	getPortletsByName: function( moduleName )
	{
		var returnValue = [];
		for( var i=0; i<PORTLETS.length; i++ )
		{
			if( PORTLETS[i].moduleName == moduleName )
				returnValue.push( PORTLETS[i] );
		}

		return returnValue;
	},

	getPortletsByNameAndDataId: function( moduleName, dataId )
	{
		var returnValue = null;
		for( var i=0; i<PORTLETS.length; i++ )
		{
			if( PORTLETS[i].moduleName == moduleName && PORTLETS[i].dataId == dataId){
				returnValue =  PORTLETS[i] ;
				break;
				}
		}

		return returnValue;
	},

	getPortlet: function( portletId )
	{
		for( var i=0; i<PORTLETS.length; i++ )
		{
			if( PORTLETS[i].id == portletId )
				return PORTLETS[i];
		}
	},


	getAvailableTabId: function()
	{
		if( TABS_CONFIG ==null || TABS_CONFIG.length == 0 )return "";
		return Layouter.getActiveTabId();
	},
	request_getPortlets: function()
	{
		if (DEMO){
			PortletLoader.process_getPortlets();
		}else{
			var url = Framework.layoutURL + User.userId + "/modules";
			RequestDispatcher.connectGET( url , null , PortletLoader.process_getPortlets , null );
		}
	},
	process_getPortlets: function( req, handlerParams)
	{
		 PORTLETS_CONFIG = eval( "(" + req.responseText + ")");

		var count = PORTLETS_CONFIG.length;

		for( var i=0; i<count; i++ )
		{
			PORTLETS[ i ] = new Portlet( PORTLETS_CONFIG[i] );
		}

		PortletLoader.calculateTabModuleHeights();
		var columnId;
		var column;
		for( var i=0; i<count; i++ ){
		
			//var tabId = (DEMO) ? DEFAULT_TAB_ID : PORTLETS[ i ].params["tabNumber"];
			//console.log(PORTLETS[ i ].params["tabNumber"])
			var tabId = PORTLETS[ i ].params["tabNumber"];
			columnId = tabId + "_" + PortletLoader.FASSET_COL_PREFIX + "" + PORTLETS[ i ].params["colNumber"];
			column = $id(columnId);
			PORTLETS[ i ].build(column);
		}

		PortletLoader.loadPortlets();
		for( var i = 0; i < PORTLETS.length; i++ ) {
			if (PORTLETS[i] == null ) continue;
			try {
				if (!OPTIONS.showHeaderIcons) PORTLETS[i].hideHeaderIcons();
			} catch(ex) {}
		}

		Controller.tabWidth = $id( PortletLoader.getAvailableTabId() + "_body1").offsetWidth;
		Controller.tabHeight = $id("tab_"+Layouter.getActiveTabId()).offsetHeight;
		if($id("main-page-loading")) $id("main-page-loading").style.display = "none";
	},

	loadOnStartUp: function(checked){
		if (checked == OPTIONS.loadAllModules){
			PortletLoader.loadPortlets();
			OPTIONS.loadAllModules = !checked;
		    RequestDispatcher.send(Framework.optionsURL + User.userId + "/loadonstartup/" + OPTIONS.loadAllModules, "PUT", "", checkStatus, null);
		}
	},
	disableWeeklyReport:function(checked){
		if (checked != User.weeklyReport){
			User.weeklyReport = checked;
		    RequestDispatcher.send(Framework.optionsURL + User.userId + "/disableweeklyreport/" + User.weeklyReport, "PUT", "", checkStatus, null);
		}
	},

	isPortletsSorted: false,
	loadPortlets: function( reloadTab, tabId )
	{
		if( Controller.DONTLOAD )return;

		if( reloadTab == null ) reloadTab = false;

		if( tabId == null )tabId = Layouter.getActiveTabId();


		var tabConfig = TABS_CONFIG[ tabId ]

		if( tabConfig.isLoaded && reloadTab != true)return;
		var isLoadedCopy = tabConfig.isLoaded;

		var count = PORTLETS.length;

		for( var i=0; i<count; i++ )
		{
			if( !OPTIONS.loadAllModules )
			
			{	if(tabId == PORTLETS[i].tabNumber )
				{
					PORTLETS[i].attachContent();
					
				}
			}
			else
			{
				if( !TABS_CONFIG[ PORTLETS[i].tabNumber ].isLoaded || reloadTab == true)
				{
					PORTLETS[i].attachContent();
				}
			}
		}

		TABS_CONFIG[ tabId ].isLoaded = true;
		setTimeout(animateHeaderIcons,1000*60*2);
	},
	

	calculateTabModuleHeights: function()
	{
		var tab, portlet, tabHeightFlag = true , noPortletsFlag = true, height = null;

		for( var id  in TABS_CONFIG )
		{
			if(  typeof(TABS_CONFIG[id]) == "function" )continue;
			tab = TABS_CONFIG[id];

			for( var j=0; j<PORTLETS.length; j++ )
			{
				portlet = PORTLETS[j];
				if( portlet.params.tabNumber != tab.id )continue;

				noPortletsFlag = false;

				if( height == null )height = portlet.params.height;

				if( portlet.params.height != height  )
					tabHeightFlag = false;
			}

			if( tabHeightFlag && !noPortletsFlag )
				TABS_CONFIG[ id ].moduleHeight = height;

			if( noPortletsFlag )
			{
				TABS_CONFIG[ id ].moduleHeight = Controller.calculateLayoutHeight( TABS_CONFIG[ id ].rowCount, id );
			}

			height = null;
			tabHeightFlag = true;
			noPortletsFlag = true;
		}
	},

	sortByOrder: function()
	{
		var arr = [], temp;
		for( var id in TABS_CONFIG )
			arr[arr.length] = { id: id, order: TABS_CONFIG[id].order };

		for( var i=1; i<arr.length; i++ )
			for( var j=0; j<arr.length-i; j++ )
			{
				if( arr[j].order > arr[j+1].order )
				{
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}

		var arr2 = {};

		for( var i=0; i<arr.length; i++ )
			arr2[ arr[i].id ] = TABS_CONFIG[ arr[i].id ];

		TABS_CONFIG = arr2;
		PortletLoader.isTabsSorted = true;
	},

	sortByTabs: function()
	{
		var SORTED_PORTLETS = [];

		for( var id in TABS_CONFIG  )
		{
			if( typeof(TABS_CONFIG[id]) == "function" )continue;

			for( var i=0; i<PORTLETS.length; i++ )
			{
				if( PORTLETS[i].tabNumber == id )SORTED_PORTLETS.push( PORTLETS[i] );
			}
		}

		PORTLETS = SORTED_PORTLETS;
		PortletLoader.isPortletsSorted = true;
	},

	generatePortlet: function( portletDOM )
	{
		if( portletDOM.nodeType != 1 )return;

		var portletParamsDOM = portletDOM.childNodes;
		var params = [];

		for( var j=0; j<portletParamsDOM.length; j++ )
		{
			if( portletParamsDOM[j].nodeType != 1 )continue;
			var attrName  = portletParamsDOM[j].nodeName;
			var attrValue = portletParamsDOM[j].firstChild.nodeValue;
			params[ attrName ] = attrValue;
		}

		this.addPortlet(params);
	},

	addPortlet : function(params){

		if( PortletLoader.getPortlet(params[ "id" ])  != null )return;
		var length = PORTLETS_CONFIG.length;
		PORTLETS_CONFIG[length] = params;
		var lastInserted = PORTLETS.length;
		PORTLETS[lastInserted] = new Portlet( PORTLETS_CONFIG[length] );
		PORTLETS[lastInserted].build();
		PORTLETS[lastInserted].attachContent();
		if (!OPTIONS.showHeaderIcons)  PORTLETS[lastInserted].hideHeaderIcons();
	},

	addPortletFromTree : function(params){
		if ( !Controller.getTabConfig() ) {return;}
		var colNum = Controller.getTabConfig().colCount;
		if(colNum >=2)colNum = 2;
		
		if( params.colNumber == null )params.colNumber=colNum;
		if( params.tabNumber == null )params.tabNumber=parseInt(Layouter.getActiveTabId());
		if( params.before == null )params.before=true;
		if( params.dataId == null )params.dataId=0;


		if(typeof params=='undefined')
		{
			params = {
					moduleName: portletId,
					dataId: 0
				}
		}
		
		for (var i=0;i<PORTLETS.length;i++){
			if (PORTLETS[i].tabNumber == params.tabNumber && 
				PORTLETS[i].dataId == params.dataId && 
				PORTLETS[i].moduleName == params.moduleName){
				
				return "Module is already opened.";
			}
		}

		PortletLoader.saveUserData('new', params, PortletLoader.completeAddPortletFromTree, params);
	},
	completeAddPortletFromTree : function(params, respArgs){
		params.id = parseInt(respArgs.id);
		if( params.id == -1 ){
			var existedPortlet = PortletLoader.getPortletsByNameAndDataId( params.moduleName,params.dataId);
			if( existedPortlet == null )return;
			 var moduleTabId = existedPortlet.params["tabNumber"];

			if( Layouter.getActiveTabId() == moduleTabId )return;
			var config = { header: Framework.Lang.message,
						   body: Framework.Lang.module_replace_message,
						   okHandler: PortletLoader.replace_module,
						   handlerParams: existedPortlet,
						   height: 130,
						   width: 300
						 };
			showMessage(config);
		}else{
			PortletLoader.addPortlet(params);
		}
	},

	replace_module: function(portlet)
	{
		var obj = portlet.portlet_DOMOBJ;

		var col_index = obj.parentNode.id;
		col_index = col_index.substr( col_index.indexOf("body") + 4, col_index.length );

		var rowIndex = 0;

		for( var i=0; i<obj.parentNode.childNodes.length; i++ )
		{
			var current = obj.parentNode.childNodes[i];
			if( current == obj )break;
			if( obj.parentNode.childNodes[i].className == "portlet")rowIndex++;

		}

		var curTab = Controller.getTabConfig( Layouter.getActiveTabId() );

		if( curTab.colCount < col_index )col_index = curTab.colCount;

		var td = $id( curTab.id + "_body" + col_index);

		if( rowIndex > td.childNodes.length )rowIndex = td.childNodes.length;

		if( td.childNodes[rowIndex] == null  )
			td.appendChild( obj );
		else
			td.insertBefore( obj, td.childNodes[rowIndex] );


		portlet.params[ "tabNumber" ] = curTab.id;
		portlet.attachContent();
		PortletLoader.saveUserData('order', portlet, PortletLoader.replace_module_callback, portlet);
	},

	replace_module_callback: function(portlet, respArgs)
	{
	},



	collapseExpandAll: function( mode )
	{
		var size = PORTLETS.length;

		for( var i=0; i<size; i++ )
		{
			if(PORTLETS[i] == null )continue;
			switch( mode )
			{
				case "hide":PORTLETS[i].hide();break;
				case "show":PORTLETS[i].show();break;
			}

		}

		return false;
	}


}

function animateHeaderIcons(){
	OPTIONS.showHeaderIcons  = false;
	var size = PORTLETS.length;

	for( var i=0; i<size; i++ )
	{
		if(PORTLETS[i] == null )continue;

		try{
		PORTLETS[i].hideHeaderIcons();
		}catch(ex){}
	}

}

function getInnerHTML( id, root )
{
	var div = document.createElement("DIV");
	div.innerHTML = root.responseText;

	var inner =  getInnerHelper( id, div );
	return (inner)?inner:"";
}

function getInnerHelper( id, root )
{
	if( root.id == "id" )
		return root.innerHTML;

	var childs = root.childNodes;
	var size = childs.length;
	for(var i=0; i<size; i++)
	{
		if( childs[i].id == id )
			return childs[i].innerHTML;
		else
		{
			var inner = getInnerHelper( id , childs[i] );
			if( inner != null )
				return inner;
		}
	}

	return null;
}

function RequestInfo(url, method, data, config,  handler, handlerParams, dispathcer_func){
	this.url = url;
	this.method = (method)?method:"GET";
	this.data = data;
	this.handler = handler;
	this.handlerParams = handlerParams;
	this.dispathcer_func = dispathcer_func;
	this.config = config;
}

var RequestDispatcher =  {
	REQUEST_LOG : new Array(),
	HANDLER_NAME: "__MONITIS_AJAX_DEFAULT_HANDLER",

	init: function(){
	},

	doLastRequest: function(){
		if( handlerParams == null ) handlerParams = new Array();
		handlerParams[ RequestDispatcher.HANDLER_NAME ] = handler;
		handler = RequestDispatcher.postconnect;
		Request.send(url, method, data, handler, handlerParams);
	},

	preconnect: function( url, method, data, handler, handlerParams, dispathcer_func )
	{
		var config = {
		  success:handler,
		  failure: handler,
		  dispatcher: dispathcer_func,
		  argument: handlerParams
		}
		RequestDispatcher.REQUEST_LOG[ RequestDispatcher.REQUEST_LOG.length ] = new RequestInfo( url, method, data, config, handler, handlerParams, dispathcer_func );
		return config;
	},
	postconnect: function( o, handlerParams ){
		if( GENERAL_SETTINGS.POLLING_ENABLED )
		handlerParams = o.argument;
		if( handlerParams[ RequestDispatcher.HANDLER_NAME ] == null  )return;

		var resp;
		//try{
	
			if(o != null&&handlerParams["userParams"]!="no-parse" )
	        resp= eval("("+o.responseText+")")
			else
			 resp= o.responseText;
            if(resp.status == STATUS_UPGRADE){
						alert("Trial version expiered. Please upgrade");
						User.old = true;
						OptionsManager.openUpgradeDialog($id("Options"));
		}
		else if(resp.status == STATUS_FREEZE){
				alert("Your account is freezed. Please pay to continue");
		}
		else
		handlerParams[ RequestDispatcher.HANDLER_NAME ]( o, handlerParams["userParams"] );
		/*}catch(ex){
//			console.log(ex);
		}*/
	},

	send: function( url, method, data, handler, handlerParams ){
		var params={};
		if( handlerParams == null ) handlerParams = new Array();
		params[ RequestDispatcher.HANDLER_NAME ] = handler;
		params["userParams"]=handlerParams;
		handler = RequestDispatcher.postconnect;
		var callback = RequestDispatcher.preconnect( url, method, data, handler, params , RequestDispatcher.send);

		if(Browser.isSafari && method.toUpperCase() == "PUT" )
		{
			url = Framework.redirectPUT + url;
			method = "POST";
		}


		if( GENERAL_SETTINGS.POLLING_ENABLED )
		{
			//var request = YAHOO.util.Connect.asyncRequest(method, url, callback, data);
			//delete request;
		}
		else
			Request.send(url, method, data, handler, params);

	},
	sendGET: function( url , handler, handlerParams ){
		RequestDispatcher.send( url, "GET", null, handler, handlerParams );
	},
	sendPOST: function( url , data , handler, handlerParams ){
		RequestDispatcher.send(url, "POST", data, handler, handlerParams,true);
	},
	sendPUT: function( url , handler, handlerParams ){
		RequestDispatcher.send(url, "PUT", null, handler, handlerParams,true);
	},
	sendDELETE: function( url , handler, handlerParams ){
		RequestDispatcher.send(url, "DELETE", null, handler, handlerParams,true);
	},
	sendDEL: function( url , handler, handlerParams ){
		RequestDispatcher.send(url, "DELETE", null, handler, handlerParams,true);
	},
	connect: function( url, params, handler, handlerParams ){
		RequestDispatcher.send( url, "GET", null, handler, handlerParams );
	},
	connectGET: function( url , params , handler, handlerParams ){
		RequestDispatcher.send( url, "GET", null, handler, handlerParams );
	},
	connectPOST: function( url , data , handler, handlerParams ){
		RequestDispatcher.send(url, "POST", data, handler, handlerParams,true);
	}
}

function submitCallback(obj)
{
	var response = obj.responseText;
	response = response.split("<!")[0];
	document.getElementById("resp").innerHTML = response;
	eval(response);
}

/*
var ModuleMyManager={
	myDialog:null,
	mysTable:null,
	moduleConfig:null,
	getMyModulesTable: function (moduleConfig){
		var moduleParams=moduleConfig.moduleParams;
		ModuleMyManager.moduleConfig=moduleConfig;
		var header=null;
		ModuleMyManager.headers=[];
		for(var paramName in moduleParams){
			if(!moduleParams[paramName].myList){
				continue;
			}
			header={"headerName":moduleParams[paramName].label,
					"dataType":moduleParams[paramName].dataType,
					"hidden":moduleParams[paramName].hidden,
					"handler":moduleParams[paramName].handler,
					"sortable":true};
			ModuleMyManager.headers.push(header);
		}
		ModuleMyManager.moduleConfig=moduleConfig;
		ModuleMyManager.drawEmptyContent();
		ModuleMyManager.selectedGroup = "all";
		if (moduleConfig.listDialogGroupName){
			if(moduleConfig.groupsAction){
				var url = moduleConfig.serviceURL+User.userId+'/'+moduleConfig.groupsAction;
				Request.sendGET(url, ModuleMyManager.resp_getGroups);
			}else{
				ModuleMyManager.drawCombo(moduleConfig.groupsData);
			}
		}
		ModuleMyManager.refreshData();
	},
	
	refreshData: function(isNew){
		var group = "all";
		if (ModuleMyManager.groupCombo && ModuleMyManager.groupCombo.value != "") 
			group = ModuleMyManager.groupCombo.value;
		var url = ModuleMyManager.moduleConfig.serviceURL+User.userId+
				'/'+ModuleMyManager.moduleConfig.listAction+"/"+group;
		Request.sendGET(url, ModuleMyManager.updateTable);
	},
	
	resp_getGroups: function(response){
		var data = eval("("+response.responseText+")").data;
		data[data.length] = ["all", "All"];
		ModuleMyManager.drawCombo(data);
	},
	
	drawCombo: function(data){
		var option;
		for (var i=0;i<data.length;i++){
			option = document.createElement("option");
			option.value = data[i][0];
			option.innerHTML = data[i][1];
			ModuleMyManager.groupCombo.appendChild(option);	
		}
		option.selected = true;
		ModuleMyManager.groupCombo.appendChild(option);	
	}, 
	
	drawEmptyContent: function(){
		var divEl=document.createElement("div");
		if (ModuleMyManager.moduleConfig.listDialogInfo){
			var divInfo=document.createElement("div");
			divInfo.className = "listDialogInfo";
			divInfo.innerHTML = ModuleMyManager.moduleConfig.listDialogInfo;
			divEl.appendChild(divInfo);
		}
		if (ModuleMyManager.moduleConfig.listDialogGroupName){
			var divGroup=document.createElement("div");
			divGroup.className = "listDialogInfo";
			divGroup.innerHTML = ModuleMyManager.moduleConfig.listDialogGroupName+": ";
			ModuleMyManager.groupCombo = document.createElement("select");
			divGroup.appendChild(ModuleMyManager.groupCombo);
			ModuleMyManager.groupCombo.onchange = ModuleMyManager.refreshData;
			divEl.appendChild(divGroup);
		}
		var divTable=document.createElement("div");
		divTable.style.height = "87%";
		divEl.appendChild(divTable);

		ModuleMyManager.mysTable=new JQueryTable(divTable,ModuleMyManager.headers,[],
						true,false,ModuleMyManager.moduleConfig.listEditHandler);
		var buttons = {'Add to Window':ModuleMyManager.addMysModule};
		if (ModuleMyManager.moduleConfig.deleteAction)
			buttons['Delete'] = ModuleMyManager.deleteMysModule;
		if (ModuleMyManager.moduleConfig.activateAction){
			buttons['Activate'] = ModuleMyManager.activateSuspend;
			buttons['Suspend'] = ModuleMyManager.activateSuspend;
		}
		ModuleMyManager.myDialog.openDialog(divEl, null, buttons,
			ModuleMyManager.moduleConfig.menu.existing.name,
			ModuleMyManager.moduleConfig.menu.existing.width,
			ModuleMyManager.moduleConfig.menu.existing.height);
		 
		ModuleMyManager.myDialog.hideDialogButton('Activate');
		ModuleMyManager.mysTable.drawTable(10);

	},
	
	activateSuspend: function(){
		var selectFlag = ModuleMyManager.groupCombo.value == "0" ? 1 : 0;
		var ids = ModuleMyManager.mysTable.getSelectedRows().ids;
		if (ids.length == 0) return;
		var url = ModuleMyManager.moduleConfig.serviceURL+User.userId+'/'+
				  ModuleMyManager.moduleConfig.activateAction+"/"+selectFlag;
		for(var i=0; i<ids.length; i++){
			var id = ids[i];
			if (typeof id == "string" && id.indexOf("_")>0){
				id = id.substring(0, id.length-2);
			}
			url+='/'+id;
		}
		Request.sendPUT(url, ModuleMyManager.activateSuspendCallback, ids);
	},
	
	activateSuspendCallback: function(response){
		var resp = eval("("+response.responseText+")");
		if (resp.status == "ok"){
			ModuleMyManager.refreshData();
			PortletLoader.refresh_dependent_modules(ModuleMyManager.moduleConfig.moduleName);
		}
	},
	
	updateTable: function(response){
		var data=eval("("+response.responseText+")").data;
		if (data.data) data = data.data;
		ModuleMyManager.mysTable.updateData(data);
		if (ModuleMyManager.moduleConfig.activateAction){
			if (ModuleMyManager.groupCombo.value == "0"){
				ModuleMyManager.myDialog.hideDialogButton('Suspend');
				ModuleMyManager.myDialog.showDialogButton('Activate');
			}else{
				ModuleMyManager.myDialog.hideDialogButton('Activate');
				ModuleMyManager.myDialog.showDialogButton('Suspend');
			}
		}
	},
	
	deleteMysModule: function(){
		ModuleMyManager.mysTable.deleteRows(ModuleMyManager.deleteModule);
	},
	
	deleteModule:function(ids){
		var url=ModuleMyManager.moduleConfig.serviceURL+User.userId+'/'+ModuleMyManager.moduleConfig.deleteAction;
		for(var i=0; i<ids.length; i++){
			url+='/'+ids[i];
		}
		Request.sendDEL(url,ModuleMyManager.deleteMysModuleCallback,ids);
	},
	
	deleteMysModuleCallback:function(response,ids){
		var resp=eval("("+response.responseText+")");
		if(resp.status==STATUS_OK){
			Controller.closeModules(ModuleMyManager.moduleConfig.defaultObj.moduleName,ids);
		}
	},
	
	addMysModule:function(){
		var ids=ModuleMyManager.mysTable.getSelectedRows().ids;
		var param=null;
		for(var i=0; i<ids.length; i++){
			var id = ids[i];
			if (typeof id == "string" && id.indexOf("_")>0){
				id = id.substring(0, id.length-2);
			}
			var height = Controller.calculateLayoutHeight();
			var param={"moduleName":ModuleMyManager.moduleConfig.defaultObj.moduleName,"height":height,"collapsed":false,"colNumber":1,"dataId":id};
			PortletLoader.addPortletFromTree(param);
		}

	},
	addModuleCallback: function(ids){
		//ModuleMyManager.myDialog.closeDialog();
	},
	
	init:function(){
		ModuleMyManager.myDialog=new Dialog(null,ModuleMyManager.addMysModule, null);
	}
		
}

*/
//----------------------------------------------------------------------------------------------------
var ModuleMyManager={
	myDialog:null,
	mysTable:null,
	moduleConfig:null,
	chechkedIds:[],
	chechkactiv:0,
	checkArrayIndex:0,
	DATA:null,
	container:null,
	tableType:"my",
	
	getMyModulesTable:function (moduleConfig){
		var moduleParams=moduleConfig.moduleParams;
		
		ModuleMyManager.moduleConfig=moduleConfig;
		var header=null;
		ModuleMyManager.headers=[];
		ModuleMyManager.headers[0]="checkbox";
		for(var paramName in moduleParams){
		
			if(!moduleParams[paramName].myList){
				continue;
			}	
		//	header={"headerName":moduleParams[paramName].label,"dataType":moduleParams[paramName].dataType,"sortable":true,"width":70};
			header={"dataField":moduleParams[paramName].label,"headerText":moduleParams[paramName].label,"sortable":true,"width":70};
			
			ModuleMyManager.headers.push(header);
			
		}
		
		ModuleMyManager.moduleConfig=moduleConfig;
		var url=moduleConfig.serviceURL+User.userId+'/'+moduleConfig.listAction;
		//url=Framework.serverPath+"/myreports.xml";
		Request.sendGET(url,ModuleMyManager.drawMySTable,null);
		
	},


	drawMySTable:function(response){
		var resp=eval("("+response.responseText+")");
		var data=resp.data;
		
		ModuleMyManager.DATA=data;
		var divEl=document.createElement("div");
		ModuleMyManager.container=divEl;
		if(resp.status==STATUS_OK){
			
				ModuleMyManager.MysFlashTable= new FlashTable(ModuleMyManager.tableType)
				ModuleMyManager.chechkactiv=0;
				ModuleMyManager.tableData(ModuleMyManager.chechkactiv);
			
			ModuleMyManager.myDialog.openDialog(divEl,
				null,
				{'Add':ModuleMyManager.addMysModule,'Delete':ModuleMyManager.deleteMysModule},
				ModuleMyManager.moduleConfig.menu.existing.name,
			    ModuleMyManager.moduleConfig.menu.existing.width,
			    ModuleMyManager.moduleConfig.menu.existing.height);
			
			//ModuleMyManager.mysTable.drawTable(10);
		}

	},
	
	tableData:function(checkactiv){
		    var wd = 120/6;
			 ModuleMyManager.headers[0]={ dataField: "active", headerRenderer: "checkbox",  width: "15", type:"input" , onClick : "ModuleMyManager.checkAllRows",sortable: false, active: ModuleMyManager.chechkactiv};
		     ModuleMyManager.MysFlashTable.drawTable(ModuleMyManager.container,ModuleMyManager.headers, ModuleMyManager.DATA,checkactiv)
	},
	 
	 checkAllRows: function(checked){
			if(ModuleMyManager.chechkactiv==0){
				ModuleMyManager.chechkactiv=1;
					for (var i = 0; i < ModuleMyManager.DATA.length; i++) {
					ModuleMyManager.chechkedIds.push(ModuleMyManager.DATA[i][0])
					}
				}else{
				ModuleMyManager.chechkactiv=0;
				ModuleMyManager.chechkedIds=[];
			}
				ModuleMyManager.tableData(ModuleMyManager.chechkactiv);
		   	},
			
	checkUncheckRow:function( index ,index2, checked){
		     if(checked==1){
				ModuleMyManager.chechkedIds.push(index2)
			}else{
				ModuleMyManager.deleteValfromIdsArr(index2,ModuleMyManager.chechkedIds)	
				}

	  
	},
	
	deleteValfromIdsArr:function(val,arr){
			for(var i=0;i<arr.length;i++){
				if(arr[i]==val)
				arr.splice(i,1)
			}
	},

	deleteMysModule:function(){
		ModuleMyManager.deleteModule(ModuleMyManager.chechkedIds)
		
	
	},
	
	deleteModule:function(ids){
		var url=ModuleMyManager.moduleConfig.serviceURL+User.userId+'/'+ModuleMyManager.moduleConfig.deleteAction;
		for(var i=0; i<ids.length; i++){
			url+='/'+ids[i];
		}
		Request.sendDEL(url,ModuleMyManager.deleteMysModuleCallback,ids);
	},
	
	deleteMysModuleCallback:function(response,ids){
		var resp=eval("("+response.responseText+")");
			if(resp.status==STATUS_OK){
				ModuleMyManager.chechkedIds=[];
				Controller.closeModules(ModuleMyManager.moduleConfig.defaultObj.moduleName,ids);
				ModuleMyManager.myDialog.closeDialog();
			}
	},

	addMysModule:function(){
		var ids=ModuleMyManager.chechkedIds
		var param=null;
		for(var i=0; i<ids.length; i++){
			var height = Controller.calculateLayoutHeight();
			var param={"moduleName":ModuleMyManager.moduleConfig.defaultObj.moduleName,"height":height,"collapsed":false,"colNumber":1,"dataId":ids[i]};
			PortletLoader.addPortletFromTree(param);
		}
		ModuleMyManager.myDialog.closeDialog();

	},
	
	addModuleCallback: function(ids){
		//ModuleMyManager.myDialog.closeDialog();
	},
	
	init:function(){
		ModuleMyManager.myDialog=new Dialog(null,ModuleMyManager.addMysModule, null);
	}
		
}

//----------------------------------------------------------------------------------------------------
var showContacts = function(){
	var height = Controller.calculateLayoutHeight();
	var param={"moduleName":"Notification","height":height,"collapsed":false,"colNumber":1,"dataId":0};
	PortletLoader.addPortletFromTree(param);
}

var addNoteModule=function(){
	var noteConfig=Framework.Modules.NoteWidget;
	var url=noteConfig.serviceURL+User.userId+'/note/Note/'+encode("Type Your text here")+'/lightyellow'	;
	Request.sendPOST(url,null,addNoteModuleCallback,null);
}

var addNoteModuleCallback=function(response){
	var resp=eval("("+response.responseText+")");
	if(resp.status==STATUS_OK){
		var height = Controller.calculateLayoutHeight();
		var param={"moduleName":"Note","height":height,"collapsed":false,"colNumber":1,"dataId":resp.data};
		PortletLoader.addPortletFromTree(param);//nn
	}	
}

var TestimonialAddManager={
	init:function(){
		TestimonialAddManager.addTestimonialDialog=new Dialog()
	},
	SaveSubmitTestimonial : function() {
		  var formData = TestimonialAddManager.addTestimonialDialog.getDialogElements();
		  validate = "success",
      	  your_name = formData["your_name"],
      	  company = formData["company"],
      	  text = formData["text"];

      	  if(!checkName(your_name)){
      	  	validate = Framework.Lang.Testimonial_notValidName;
      	  }else if(text.trim() == "")
		  {
      	  	validate = Framework.Lang.Testimonial_notValidText;
      	  }

      	  if (validate == "success") {
         	var slashCountCompany = company.split("/").length;
         	var slashCountText = text.split("/").length;
         	var url = Framework.testimonialURL + User.userId;
			var data =  your_name+"/"+slashCountCompany+"/"+company+"/"+slashCountText+"/"+text;
			 RequestDispatcher.connectPOST( url+ "/" + data ,null, TestimonialAddManager.addTestimonialResponse , null );


      	  } else
		   if(validate != "success") {
		  // 	console.log([validate])
			TestimonialAddManager.addTestimonialDialog.dialogError([validate]);
               
          }
         return false;
      },
	addTestimonialResponse:function(response){
	var addParams=eval("("+response.responseText+")");
		if(addParams.status==STATUS_OK){
			TestimonialAddManager.addTestimonialDialog.closeDialog()
		 }
		 else{
		 	TestimonialAddManager.addTestimonialDialog.dialogError([addParams.status])
		 
		 }
},
	
		addTestomonialModule:function(){
			var testimonialCont=document.createElement('div');
			var divNode = document.createElement("div");
			var text ="<table width='100%' class='text'><tbody id=testimon_dialog>"+
						"<tr>"+
							"<td nowrap>" + Framework.Lang.Testimonial_your_name + ":</td>"+
							"<td nowrap><input name='your_name' size=15 value ='"+User.username+"' style='width:190px'/></td>"+
						"</tr>"+
						"<tr>"+
							"<td >" + Framework.Lang.Testimonial_company_website + ":</td>"+
							"<td nowrap><input name='company' size=15 style='width:190px'/></td>"+
						"</tr>"+
						"<tr>"+
							"<td nowrap colspan=3 style='padding-top:10px;' align='center'><textarea name='text' rows='6' style='width:97%;background:#ffffff' allowBlank=false></textarea></td>"+
						"</tr>"+
					"</tbody></table>";
		   	divNode.innerHTML = text;
		   	testimonialCont.appendChild(divNode);
		   
 
		TestimonialAddManager.addTestimonialDialog.openDialog(testimonialCont,null,
		{'Submit':TestimonialAddManager.SaveSubmitTestimonial},
		'Submit Testomonial',
		"400px",
		"280px"
		)
	}
	 
}

var FeedbackAddManager={
	
	init:function(){
		FeedbackAddManager.addFeedbackDialog=new Dialog();
	},
	
	saveFeedback:function() {
		var formData = FeedbackAddManager.addFeedbackDialog.getDialogElements();
	  	var feedBackTextAreaText ="";
	  	for(var paramName in formData){
			feedBackTextAreaText+=formData[paramName];
		}
		var slashCount = feedBackTextAreaText.split("/").length;
	    	RequestDispatcher.sendPOST(Framework.feedbackURL + User.userId + "/" + slashCount + "/" + encode(feedBackTextAreaText), "", FeedbackAddManager.loadFeedback);
	      	return false;
    },
      	
	loadFeedback:function(http_request) {
   		FeedbackAddManager.addFeedbackDialog.closeDialog();
	},
	
   	clearFeedArea:function(){
	   	$id("feedbacktext").value = "";
	},
	
	addFeedbackModule:function(){
		var feedbackCont=document.createElement('div');
		var divNode = document.createElement("div");
		var text = '<span style="margin-left:4px;margin-top:4px;margin-bottom:4px;font-size:9pt;font-family:verdana;">';
	  	text += Framework.Lang.sendUsFeedback+"</span>";
	   	divNode.innerHTML = text;
	   	feedbackCont.appendChild(divNode);
	   	divNode = document.createElement("div");
	   	divNode.align = "center";
	   	divNode.setAttribute("style", "width: 100%; margin-top:5px;");
	   	divNode.innerHTML = "<textarea id='feedbacktext' name='feetback' style='width:95%;background:#ffffff;' rows=6 name='text'></textarea>";
	  	feedbackCont.appendChild(divNode);
 
		FeedbackAddManager.addFeedbackDialog.openDialog(feedbackCont,null,
		{'Submit':FeedbackAddManager.saveFeedback},
		'Send Feedback',
		"400px",
		"220px"
		)
	}
	
}
var SMSAddManager ={
	init:function(){
		SMSAddManager.SMSAddDialog=new Dialog();
	},
	getSMSBalanceContent:function(){
		var SMSDiv=document.createElement('div');
		SMSBalanceCont='<div > You have used '+ User.smsUsed +' out of  ' + User.smsLimit +  ' available SMS messages.</div>';
 		SMSDiv.innerHTML=SMSBalanceCont;
 		SMSAddManager.SMSAddDialog.openDialog(SMSDiv,null,
		{"Buy SMS Now!!!":SMSAddManager.getSMSContent,"Done": SMSAddManager.SMSBalanceDone},
		'SMS Balance',
		"400px",
		"110px"
		
		)
	},
	SMSBalanceDone:function(){
		 SMSAddManager.SMSAddDialog.closeDialog()
	},

	getSMSContent:function(){
		SMSAddManager.SMSAddDialog.closeDialog();
		var buySMSCont=document.createElement('div');
		var className = Browser.isIE ? "addform_ie" : "addform";
		var buySMSStr =  "<form onsubmit='return false' id='smsContent'><table cellpadding='2' cellspacing='4' class='text "+className+"'><tbody>"+
						"<tr>"+
							"<td colspan='2'><div id='buysmserror' style='color:red'></div></td>"+
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>Payment provider:</td>" +
							"<td><select name='paymentMethod'><option value='paypal' selected>PayPal</option><option value='2check_paylater'>PayLater</option><option value='2check_digital'>Digital Check</option><option value='2check_fxsource'>FXSource</option><option value='2check_visa'>VISA</option><option value='2check_mc'>MasterCard</option><option value='2check_express'>American Express</option><option value='2check_discover'> Discover/Novus</option><option value='2check_diners'>Diners Club</option></select></td>"+
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>SMSs:</td>" +
							"<td nowrap colspan='2'><input id='smscount' value='50' onkeyup='SMSAddManager.calculateSMSPrice()' onblur='SMSAddManager.calculateSMSPrice()'/> (Min 50 SMSs)</td>" +
						"</tr>"+
						"<tr>" +
							"<td class='formLabel' nowrap>Price per SMS:</td>" +
							"<td id='smsprice'>$"+SMSPRICE+"</td>" +
						"</tr>" +
						"<tr>" +
							"<td class='formLabel' nowrap>Total price:</td>" +
							"<td id='smstotalprice'>$" + 100*SMSPRICE + "</td>" +
						"</tbody></table></form>";
						
		buySMSCont.innerHTML=buySMSStr;
		SMSAddManager.SMSAddDialog.openDialog(buySMSCont,null,
			{"Order": SMSAddManager.buySMSButtonClicked, "Cancel":SMSAddManager.SMSBalanceDone},
			'Buy SMS',
			"420px",
			"240px"
			)
},
	calculateSMSPrice:function (){
		$id('buysmserror').innerHTML = "";
		var smscount = parseInt($id("smscount").value);
			if(isNaN(smscount)){
				$id('buysmserror').innerHTML = Framework.Lang.invalidSMSCount;
				return;
				}
			if(smscount < 50){
				$id('buysmserror').innerHTML = Framework.Lang.minSMSNumber;
				return;
			}
			$id("smstotalprice").innerHTML = "$" + smscount*SMSPRICE;
			return "ok";
} ,

 	buySMSButtonClicked:function(){
		if(SMSAddManager.calculateSMSPrice() !="ok") return;
		billingMethod = $id("smsContent").paymentMethod.value.substring(0,6);
		
		var smscount = parseInt($id("smscount").value);
		var data = "type=buysms&id=" + User.userId + "&count=" + smscount + "&billingMethod=" + billingMethod;
		$id('buysmserror').innerHTML =  Framework.Lang.waitForPayPal+"...";
		Request.sendPOST(Framework.userURL, data, SMSAddManager.buysmsResponse);
},

	buysmsResponse:function(response){
				var res = eval("("+	response.responseText + ")");
				switch(res.status) {
				case STATUS_OK :
						if(res.form){
						$id("paypalsignupform").innerHTML = res.form;
						$id("paypalsignupform").firstChild.submit();
						}
					break;
					default: $id('buysmserror').innerHTML = res.status;
					}
				}
	
}
var AgentDownloaderManager={
	init:function(){
		AgentDownloaderManager.AgentDownloaderDialog=new Dialog();
	},
	agentDownloaderSendRequest:function(){
		var url = Framework.downloadAgentURL + "?userKey=" + User.userId;
		RequestDispatcher.sendGET( url, AgentDownloaderManager.agentDownloaderContent, null );
	},
	agentDownloaderContent:function(req){
		var responseParams;
		if( req )
			responseParams = eval ( "(" + req.responseText + ")" );
			//console.log(responseParams.content)
	var agentContentDiv= document.createElement('div');
	   agentContentDiv.id='Agent_CONT';
	var agentForm=document.createElement('form');
	agentForm.id='Agent_FORM';
	var agentDownloadDiv=document.createElement('div');
	var clicklinkLinux = '<img src="images/monitis/ico-tux.png"></img><a href = "javascript:void(0)" onclick = "AgentDownloaderManager.getLink(event,OS_LINUX,PLATFORM_32)"><b>'+Framework.Lang.downlaodAgentStep1Linux+'(32bit)</b></a>&nbsp'+
		'<img src="images/monitis/ico-tux.png"></img><a href = "javascript:void(0)" onclick = "AgentDownloaderManager.getLink(event,OS_LINUX, PLATFORM_64)"><b>'+Framework.Lang.downlaodAgentStep1Linux+'(64bit)</b></a>&nbsp';
		var clicklinkWindows='<img src="images/monitis/ico-win.png"></img><a href = "javascript:void(0)" onclick = "AgentDownloaderManager.getLink(event,OS_WINDOWS,PLATFORM_32)"><b>'+Framework.Lang.downlaodAgentStep1Windows+'</b></a>&nbsp&nbsp';

		var inner =  "";
		//if(User.plan == FREEPLAN){
		//	inner += "You are only allowed to add limited number of modules.If you want more please <a href='javascript:OptionsManager.openUpgradeDialog($(\"Options\"))'>upgrade</a>";		
		//}
		//else{
		inner += '<div align="center" id = "agentdownloadquestion">'+ Framework.Lang.downlaodAgentStep1+'<div style="padding-top:9px">'+clicklinkWindows +clicklinkLinux+ '</div></div>';
		inner += '<div style="display:none;">';
		inner += '			<input type = "hidden" name = "key"  id="agentdownloadkey" />';
		inner += '			<input type = "hidden" name = "mode" value = "downloadagent" />';
		inner += '			<input type = "hidden" name = "type" id = "downloadTypeInput" value = "'+OS_WINDOWS+'" />';
		inner += '			<input type = "hidden" name = "p" id = "downloadPlatformInput" value = "'+PLATFORM_32+'" />';
		inner += '			<input type = "hidden" name = "userKey" value = "'+User.userId+'" />';
		inner += '</div>';
		inner += '<iframe name="agent_form" style="display:none;" ></iframe>';
	//}
		agentDownloadDiv.innerHTML = inner;
		agentForm.appendChild(agentDownloadDiv);
		agentContentDiv.appendChild(agentForm);
	AgentDownloaderManager.AgentDownloaderDialog.openDialog(agentContentDiv,null,
		{},
		'Add Agent',
		"400px",
		"150px"
		
		)
		//AgentDownloaderManager.AgentDownloaderDialog.disableDialogButton("Download Agent")	
	},
getLink:function(event, version,platform){
				var div = event.target || event.srcElement;
				var usr = User.username;
				var downloadTypeInput= $id('downloadTypeInput');
				var downloadPlatformInput=$id('downloadPlatformInput');
				User.downloadVersion=version;
				if( typeof usr != 'undefined'){
					var data = "userKey="+User.userId;
					if(typeof version !='undefined'){
						downloadTypeInput.value=version;
					}else{
						downloadTypeInput.value=OS_WINDOWS;
					}
					if(typeof platform!='undefined'){
						downloadPlatformInput.value=platform;
					}
					Request.sendPOST(Framework.serverPath + "/AgentDownloader", data, AgentDownloaderManager.setKey);
				}
				
			},
setKey:function(response){
	var resp = response.responseXML.documentElement.firstChild.nodeValue;
	var  agentdownloadkey = $id("agentdownloadkey");
	agentdownloadkey.value = resp;
	agentdownloadkey.parentNode.style.display = "block";
	$id("agentdownloadquestion").innerHTML = Framework.Lang.downlaodAgentStep2;
    AgentDownloaderManager.AgentDownloaderDialog.closeDialog();
	AgentDownloaderManager.AgentDownloaderDialog.openDialog($id("Agent_CONT"),null,
		{"Download Agent":AgentDownloaderManager.downloadAgent},
		'Add Agent',
		"400px",
		"120px"
		
		)
//AgentDownloaderManager.AgentDownloaderDialog.enableDialogButton("Download Agent");
			},
downloadAgent:function(){
	if( User.hasUserAgent )
	{
		var Agent_FORM = $id("Agent_FORM");
		Agent_FORM.target = "agent_form";
		Agent_FORM.method="post";
		Agent_FORM.action=Framework.downloadAgentURL;
		Agent_FORM.submit();
		
		return;
	}
}
	
}

var ModuleAddManager={
	
	addDialog:null,
	addModuleConfig:null,
	divEl:null,
	getModuleAddForm:function (moduleConfig,callback){
		var moduleParams=moduleConfig.moduleParams;
		ModuleAddManager.addModuleConfig=moduleConfig;
		var table=ModuleManager.getForm(moduleConfig.moduleParams);
		ModuleAddManager.divEl=document.createElement("div");
		var divEl=ModuleAddManager.divEl;
		divEl.innerHTML="";
		divEl.appendChild(table);
		//alert(divEl.innerHTML);
		ModuleAddManager.addModuleConfig=moduleConfig;
		if(typeof callback=='undefined' || callback==null){
			callback=ModuleAddManager.addStandardModule;
		}
		ModuleAddManager.showAddDialog(callback);
	},
	
	showAddDialog:function(callback){
		ModuleAddManager.addDialog.dialogError("");
		if(typeof callback=='undefined' || callback==null){
			callback=ModuleAddManager.addStandardModule;
		}
		ModuleAddManager.addDialog.openDialog(
			ModuleAddManager.divEl,null,
			{'Add':callback},
			ModuleAddManager.addModuleConfig.menu.add.name,
			ModuleAddManager.addModuleConfig.menu.add.width,
			ModuleAddManager.addModuleConfig.menu.add.height
		);
	}, 
	
	changeContent:function(config,table,redrawForm){
		if(typeof config!='undefined' && config!=null){
			ModuleAddManager.addModuleConfig=config;
		}
		if(typeof table=='undefined' || table==null){
			table=ModuleManager.getForm(ModuleAddManager.addModuleConfig.moduleParams);
		}
		var divEl=ModuleAddManager.divEl;
		divEl.innerHTML="";
		divEl.appendChild(table);
		if(redrawForm){
			ModuleAddManager.redrawAddDialog();
		}
	},
	
	redrawAddDialog:function(){
		ModuleAddManager.closeAddDialog();
		ModuleAddManager.showAddDialog();
	},
	
	addStandardModule:function(){
		var formData=ModuleAddManager.addDialog.getDialogElements();
		var validResult = ModuleAddManager.addDialog.validate(); 
		if (validResult != "success"){
			ModuleAddManager.addDialog.dialogError(validResult);
			return;
		}
		var moduleConfig=ModuleAddManager.addModuleConfig;
		var url=moduleConfig.serviceURL+User.userId;
		var addString="";
		for(var paramName in formData){
			addString+=paramName+"="+formData[paramName]+"&";
		}
		addString=addString.substring(0, addString.length-1);
		url+="/"+moduleConfig.addAction+"/"+addString;
		//var response={responseText:'{"status":"ok",data:{id:'+MODULES_COUNT+'}}'};
		//MODULES_COUNT++;
		//ModuleAddManager.addModuleResponse(response, moduleConfig);
		Request.sendPOST(url,addString,ModuleAddManager.addModuleResponse,moduleConfig);
	},
	
	addModuleResponse: function(response,moduleConfig){
		var resp=eval("("+response.responseText+")");
		if(resp.status==STATUS_OK){
			var dataId=resp.data.id;
			var height = Controller.calculateLayoutHeight();	
			var param={"moduleName":moduleConfig.defaultObj.moduleName,"height":height,"collapsed":false,"colNumber":1,"dataId":dataId};
			PortletLoader.addPortletFromTree(param);
			ModuleAddManager.closeAddDialog();
		}
		
	},
	
	closeAddDialog:function(){
		ModuleAddManager.addDialog.closeDialog();
	},
	
	init:function(){
		ModuleAddManager.addDialog=new Dialog(null,ModuleAddManager.addStandardModule, null);
		ModuleAddManager.divEl=document.createElement("div");
	},
	
	formAddCallback:function(){
		;
	}
}
CONTACT_TYPE_MAIL="1";
CONTACT_TYPE_SMS="2";
CONTACT_TYPE_IM="999";
CONTACT_TYPE_ICQ="3";
CONTACT_TYPE_YAHOO="4";
CONTACT_TYPE_GOOGLE="7";

SNMP_COMMUNITY=["public","private"];
AUTH_PROTOS=["SHA1","MD5"];
PRIV_PROTOS=["AES","DES"];
SNMP_VERSION_1="1";
SNMP_VERSION_2="2";
SNMP_VERSION_3="3";
SNMP_VERSIONS=[{"label":"SNMPv1","value":SNMP_VERSION_1},{"label":"SNMPv2c","value":SNMP_VERSION_2},{"label":"SNMPv3","value":SNMP_VERSION_3}];

var SNMPManager={
	moduleConfig:null,
	changeSNMPVersion:function(){
		SNMPManager.moduleConfig=Framework.Modules.SnmpWidget;
		var type=this.param;
		var selectedType=this.value;
		switch(type){
			case "table":
				SNMPManager.moduleConfig=Framework.Modules.SnmpWidget;
			break;
			case "object":
				SNMPManager.moduleConfig=Framework.Modules.SnmpObjectWidget;
			break;
			 
		}
		
		var config=SNMPManager.moduleConfig.moduleParams;
		config.version.defaultValue=selectedType;
		
		switch(selectedType){
			case SNMP_VERSION_1:
				config.authProto.active=false;
				config.login.active=false;
				config.pass.active=false;
				config.privProto.active=false;
				config.privPass.active=false;
				config.community.active=true;
				if(type=="table"){
					SNMPManager.moduleConfig.menu.add.width=300;
					SNMPManager.moduleConfig.menu.add.height=380;
				}
				else if(type=="object"){
					SNMPManager.moduleConfig.menu.add.width=330;
					SNMPManager.moduleConfig.menu.add.height=380;
				}
			break;
			case SNMP_VERSION_2:
				config.authProto.active=false;
				config.login.active=false;
				config.pass.active=false;
				config.privProto.active=false;
				config.privPass.active=false;
				config.community.active=true;
				if(type=="table"){
					SNMPManager.moduleConfig.menu.add.width=300;
					SNMPManager.moduleConfig.menu.add.height=380;
				}
				else if(type=="object"){
					SNMPManager.moduleConfig.menu.add.width=330;
					SNMPManager.moduleConfig.menu.add.height=380;
				}
			break;
			case SNMP_VERSION_3:
				config.authProto.active=true;
				config.login.active=true;
				config.pass.active=true;
				config.privProto.active=true;
				config.privPass.active=true;
				config.community.active=false;
				if(type=="table"){
					SNMPManager.moduleConfig.menu.add.width=360; 
					SNMPManager.moduleConfig.menu.add.height=450;
				}
				else if(type=="object"){
					SNMPManager.moduleConfig.menu.add.width=355;
					SNMPManager.moduleConfig.menu.add.height=470;
				}
			break;
		}
		//
		ModuleAddManager.changeContent(SNMPManager.moduleConfig,null,true);
	},
	checkSnmpAgentsExistance:function(moduleConfig){
		var agents=requestUserAgents(moduleConfig,SNMPManager.initAgentData);
		if(agents.length==1 && agents[0].value=="null"){
			;
		}
		else if(agents.length==0){
			AgentDownloaderManager.agentDownloaderSendRequest();
		}
		else{
			ModuleAddManager.getModuleAddForm(moduleConfig);
		}
	},
	initAgentData:function(response,moduleConfig){
		var USER_AGENTS=eval("("+response.responseText+")");
		var agents=[];
		for(var i=0; i<USER_AGENTS.length; i++){
			agents.push({"label":USER_AGENTS[i].key,"value":USER_AGENTS[i].key});
		}
		var cacheTimeout=7000;
		if(agents.length!=0){
			cacheTimeout=25000;
		}
		Controller.setInCache("my_agents_list",agents,cacheTimeout);
		if(agents.length==0){
			AgentDownloaderManager.agentDownloaderSendRequest();
		}
		else{
			ModuleAddManager.getModuleAddForm(moduleConfig);
		}
	}
};

var ContactManager={
	contactConfig:null,
	
	CONTACT_TYPES:[
		{"label":"Email", "value":CONTACT_TYPE_MAIL},
		{"label":"SMS", "value":CONTACT_TYPE_SMS},
		{"label":"IM", "value":CONTACT_TYPE_IM}
	],
	IM_TYPES:[
		{"label":"ICQ", "value":CONTACT_TYPE_ICQ},
		{"label":"Yahoo", "value":CONTACT_TYPE_YAHOO},
		{"label":"Google", "value":CONTACT_TYPE_GOOGLE}
	],
	
	init:function(){
		ContactManager.contactConfig=clone(Framework.Modules.NotificationWidget,true);
	},
	
	drawAddForm:function(){
		ModuleAddManager.getModuleAddForm(ContactManager.contactConfig, ContactManager.addContactCallback);
	},
	
	changeContactType:function(){
		var selectedType=this.value;
		var config=ContactManager.contactConfig.moduleParams;
		config.type.defaultValue=selectedType;
		switch(selectedType){
			case CONTACT_TYPE_MAIL:
				config.account.label="Email";
				config.account.dataType="mail";
				config.countryCode.add=false;
				config.imType.add=false;
				config.portable.add=false;
			break;
			case CONTACT_TYPE_SMS:
				config.account.label="Mobile Phone";
				config.account.dataType="num";
				config.countryCode.add=true;
				config.imType.add=false;
				config.portable.add=true;
			break;
			case CONTACT_TYPE_IM:
				config.account.label="IM";
				config.account.dataType="string";
				config.countryCode.add=false;
				config.imType.add=true;
				config.portable.add=false;
			break;
		}
		ModuleAddManager.changeContent(ContactManager.contactConfig);
	},
	
	addContactCallback:function(){
		var formData=ModuleAddManager.addDialog.getDialogElements();
		var validResult = ModuleAddManager.addDialog.validate(); 
		if (validResult != "success"){
			ModuleAddManager.addDialog.dialogError(validResult);
			return;
		}
		var moduleConfig=ModuleAddManager.addModuleConfig;
		var url=moduleConfig.serviceURL+User.userId;
		var addString="";
		if(formData["type"]==CONTACT_TYPE_IM){
			formData["type"]=formData["imType"];
		}
		for(var paramName in formData){
			addString+=paramName+"="+formData[paramName]+"&";
		}
		addString=addString.substring(0, addString.length-1);
		url+="/"+moduleConfig.addAction+"/"+addString;
		Request.sendPOST(url,addString,ContactManager.addContactResponse,moduleConfig);
	},
	
	addContactResponse:function(response, config){
		var json = eval("("+response.responseText+")");
  	  	if(json.status==STATUS_OK){
			if (json.contactId == -1){
				ModuleAddManager.addDialog.dialogError("Contact already exists.");
			}else{
				ModuleAddManager.closeAddDialog();
				PortletLoader.callByName("Notification","startWidget");
				showContacts();
			}
        }else{
        	ModuleAddManager.addDialog.dialogError(json.status);
        }
	}
	
};

var ModuleManager={
	
	getUIElement:function(moduleName, moduleParam,info){
		var uiElement= moduleParam.uiElement;
		var returnType=null;
		if(typeof uiElement=='undefined' || uiElement==null){
			uiElement="none";
		}
		var currentValue=null;
		if(typeof info !='undefined' && info!=null ){
			currentValue=info[moduleName];
		}
		else if(moduleParam.defaultValue && moduleParam.defaultValue!=""){
			if(moduleParam.defaultEvalType=="eval"){
				currentValue=eval(moduleParam.defaultValue);
			}
			else if(moduleParam.defaultValue=="function"){
				currentValue=eval(moduleParam.defaultValue)();
			}
			else{
				currentValue=moduleParam.defaultValue;
			}
		}
		switch(uiElement){
			case "password":
				returnType=document.createElement("input");
				returnType.type="password";
				if(currentValue!=null){
					returnType.value=currentValue;
				}
				
				returnType.getValue=function(){
				return this.value;
				}	
				break;
			case "checkbox":
				returnType=document.createElement("input");
				returnType.type="checkbox";
				if(currentValue!=null){
					returnType.checked = currentValue;
				}
				
				returnType.getValue=function(){
				return this.value;
				}	
				break;
			case "link":
				returnType=document.createElement("a");
				returnType.type="link";
				if(currentValue!=null){
					returnType.innerHTML = currentValue;
					console.log(moduleParam["onclick"].callback)
					
					returnType.setAttribute('onclick',moduleParam["onclick"].callback)
				}
				
				returnType.getValue=function(){
				return this.innerHTML;
				}		
				break;
			case "input":
				returnType=document.createElement("input");
				if(currentValue!=null){
					returnType.value=currentValue;
				}
				//console.log(moduleParam.browse.active)
				if(moduleParam["browse"]&&moduleParam["browse"].active){
					returnType.browse=true;
					returnType.callback=moduleParam["browse"].callback;
				    returnType.className="inputBrowseMode"
				}
				
				returnType.getValue=function(){
				return this.value;
				}	
			break;
			case "select":
				returnType=document.createElement("select");
				if(moduleParam["onchange"]){
					returnType.onchange=moduleParam["onchange"].callback;
					returnType.param=moduleParam["onchange"].param;
				}
				var val, displayValue,option,elem, moduleValueList;
				if(moduleParam.evalType=="eval"){
					moduleValueList=eval(moduleParam.valueList);
				}
				else if(moduleParam.evalType=="function"){
					var params={"object":returnType,"currentValue":currentValue};
					moduleValueList=eval(moduleParam.valueList)(params);
				}
				else if(moduleParam.evalType=="url"){
					var params={"object":returnType,"currentValue":currentValue};
					if(moduleParam.cached){
						params.cacheKey=encode(moduleParam.valueList);
						moduleValueList=Controller.getFromCache(encode(moduleParam.valueList));
						if(moduleValueList==null){
							moduleValueList=[{"label":"loading...","value":"null"}];
							Request.sendGET(moduleParam.valueList,ModuleManager.getSelectData,params);
						}
						else{
							ModuleManager.fillSelect(moduleValueList, params);
						}
					}
					else{
						moduleValueList=[{"label":"loading...","value":"null"}];
						Request.sendGET(moduleParam.valueList,ModuleManager.getSelectData,params);
					}
					
					//moduleValueList=ModuleManager.requestDataFromURL(moduleParam.valueList);
				}
				else{
					moduleValueList=moduleParam.valueList;
				}
				for( var i=0; i<moduleValueList.length; i++){
					elem=moduleValueList[i];
					if(typeof elem!="object" ){
						val=elem;
						displayValue=elem;
					}
					else{
						val=elem.value;
						displayValue=elem.label;
					}
					option=document.createElement("option");
					option.value=val;
					option.innerHTML=displayValue;
					if(val==currentValue && currentValue!=''){
						option.selected=true;
					}
					returnType.appendChild(option);
				}
				returnType.getValue=function(){
					return this.value;
				}	
			break;
			default:
			var currentValue="";
			if(typeof info !='undefined' && info!=null ){
				currentValue=info[moduleName];
			}
			returnType=document.createTextNode(currentValue);
				returnType.getValue=function(){
					return this.nodeValue;
				}	
		}
		returnType.name = moduleName;
		returnType.setAttribute("dataType", moduleParam.dataType);
		returnType.setAttribute("required", moduleParam.required);
		returnType.setAttribute("label", moduleParam.label);
		return returnType;
	},
	
	getForm:function(moduleParams){
		var table=document.createElement("table");
		if( Browser.isIE){
			table.className ="addform_ie"; 
		}
		else if(Browser.isChrome){
			table.className= "addform_chrome";
		}
		else{
			table.className= "addform";
		}
		var tbody =document.createElement("tbody");
		table.appendChild(tbody);
		var tr,td,uiElement;
		for(var paramName in moduleParams){
			if(typeof moduleParams[paramName].add!='undefined' &&   !moduleParams[paramName].add){
				continue;
			}
			if(typeof moduleParams[paramName].active!='undefined' &&   !moduleParams[paramName].active){
				continue;
			}
			tr=document.createElement("tr");
			tbody.appendChild(tr);
			td=document.createElement("td");
			td.innerHTML=moduleParams[paramName].label+":";
			tr.appendChild(td);
			td=document.createElement("td");
			uiElement=ModuleManager.getUIElement(paramName, moduleParams[paramName]);
			if(uiElement.browse){
				var imgBrowse=document.createElement("img");
				imgBrowse.src="images/browse.png";
				imgBrowse.className="browseImg";
				imgBrowse.setAttribute("onclick",uiElement.callback);
				uiElement.setAttribute("onclick","ModuleManager.changeBrowseMode(this)");
				td.appendChild(uiElement);
				td.appendChild(imgBrowse);
			}else{
				td.appendChild(uiElement);
			}
			tr.appendChild(td);
			if (moduleParams[paramName].required){
				td=document.createElement("td");
				td.innerHTML = "*";
				tr.appendChild(td);
			}
			if(moduleParams[paramName].hidden){
				tr.style.display='none';
			}
		}
		return table;
	},
	changeBrowseMode:function(uiElement){
		 uiElement.value='';
		 uiElement.className="changeInputBrowse"
	},
	requestDataFromURL:function(url){
		var response=Request.sendGETSync(url,ModuleManager.doNothing,null);
		var resp=eval("("+response.responseText+")");
		return resp;
	},
	
	getSelectData:function(response, param){
		var moduleValueList=eval("("+response.responseText+")");
		ModuleManager.fillSelect(moduleValueList, param);
	},
	fillSelect:function(moduleValueList,param){
		var returnType=param.object;
		var currentValue=param.currentValue;
		if(typeof param.cacheKey!='undefined'){
			Controller.setInCache(param.cacheKey,moduleValueList);
		}
		returnType.innerHTML="";
		for( var i=0; i<moduleValueList.length; i++){
			elem=moduleValueList[i];
			if(typeof elem!="object" ){
				val=elem;
				displayValue=elem;
			}
			else{
				val=elem.value;
				displayValue=elem.label;
			}
			option=document.createElement("option");
			option.value=val;
			option.innerHTML=displayValue;
			if(val==currentValue && currentValue!=''){
				option.selected=true;
			}
			returnType.appendChild(option);
		}
	},
	
	doNothing:function(){
		
	}
}
function getInfo(obj){
	MibTreeManager.getSelectedValue(obj)
}
var MibTreeManager = {
	selectedOid:null,
	tableContainer:null,
	trContainer:null,
	mibListcont:null,
	treeCont:null,
	descrCont:null,
	treeMode:null,
	topCont:null,
	loadingImg:null,
	descTextArea:null,
	oidInput:null,
	TitleMibList:null,
	TitleTree:null,
	TitleDiscr:null,
	HelpTable:null,
	HelpTR:null,
	HelpTDStep1:null,
	HelpTDStep2:null,
	HelpTDStep3:null,
	dialogButtons:null,
	init:function(type,browseInp){
		if(browseInp)
		MibTreeManager.inpValue=browseInp.parentNode.firstChild;
		MibTreeManager.tableContainer = document.createElement("table");
		MibTreeManager.tableContainer.width="100%";
		MibTreeManager.tableContainer.cellSpacing="0px";
		MibTreeManager.trContainer = document.createElement("tr");
		MibTreeManager.trTitleContainer = document.createElement("tr");
		MibTreeManager.TitleMibList = document.createElement("td");
		MibTreeManager.TitleMibList.className="mibTitles";
		MibTreeManager.TitleMibList.innerHTML="MIB LIST";
		MibTreeManager.TitleTree = document.createElement("td");
		MibTreeManager.TitleTree.className="mibTitles";
		MibTreeManager.TitleTree.innerHTML="MIB TREE";
		MibTreeManager.TitleDiscr = document.createElement("td");
		MibTreeManager.TitleDiscr.className="mibTitles";
		MibTreeManager.TitleDiscr.innerHTML="SELECTED OBJECT";
		
		MibTreeManager.mibListcont = document.createElement("td");
		MibTreeManager.mibListcont.className = "mibListCont";
		MibTreeManager.treeCont = document.createElement("td");
		MibTreeManager.treeCont.className = "mibTreeCont";
		MibTreeManager.descrCont = document.createElement("td");
		MibTreeManager.descrCont.className = "mibDescrCont";
		MibTreeManager.oidInput = document.createElement("input");
		MibTreeManager.oidInput.className="oidInput";
		MibTreeManager.descTextArea = document.createElement("textarea");
		MibTreeManager.descTextArea.className="mibDesc";
		MibTreeManager.descrCont.appendChild(MibTreeManager.oidInput);
		MibTreeManager.descrCont.appendChild(MibTreeManager.descTextArea);
		
		MibTreeManager.trTitleContainer.appendChild(MibTreeManager.TitleMibList);
		MibTreeManager.trTitleContainer.appendChild(MibTreeManager.TitleTree);
		MibTreeManager.trTitleContainer.appendChild(MibTreeManager.TitleDiscr);
		
		var HelpImg="<img src='images/help_arrow.png'/>";
		MibTreeManager.HelpTable=document.createElement("table");
		MibTreeManager.HelpTable.className="mibHelpTitles";
		MibTreeManager.HelpTable.align="center";
		MibTreeManager.HelpTR=document.createElement("tr");
		MibTreeManager.HelpTDStep1=document.createElement("td");
		MibTreeManager.HelpTDStep1.innerHTML="1.SELECT MIB "+HelpImg;
		MibTreeManager.HelpTDStep2=document.createElement("td");
		MibTreeManager.HelpTDStep2.innerHTML="2.SELECT OID "+HelpImg;
		MibTreeManager.HelpTDStep3=document.createElement("td");
		MibTreeManager.HelpTDStep3.innerHTML="3.ADD OID ";
		MibTreeManager.HelpTR.appendChild(MibTreeManager.HelpTDStep1);
		MibTreeManager.HelpTR.appendChild(MibTreeManager.HelpTDStep2);
		MibTreeManager.HelpTR.appendChild(MibTreeManager.HelpTDStep3);
		MibTreeManager.HelpTable.appendChild(MibTreeManager.HelpTR);
		
		MibTreeManager.trContainer.appendChild(MibTreeManager.mibListcont);
		MibTreeManager.trContainer.appendChild(MibTreeManager.treeCont);
		MibTreeManager.trContainer.appendChild(MibTreeManager.descrCont);
		MibTreeManager.loadingImg=document.createElement("img");
		MibTreeManager.loadingImg.src="images/tree_loader.gif";
		MibTreeManager.topCont = document.createElement("div");
		MibTreeManager.topCont.align="center";
		MibTreeManager.topCont.className="mibTopCont";
		MibTreeManager.addDialog=new Dialog();
		MibTreeManager.treeMode= new Tree();
		if(type=='add'){ 
			MibTreeManager.dialogButtons= {
					"Add":MibTreeManager.addSelectedValue ,
					"Cancel": MibTreeManager.cancelSelectedValue
				}
				
			}else{
			MibTreeManager.dialogButtons= {
					"Close":MibTreeManager.addDialog.closeDialog
					
				}	
			}
			
			MibTreeManager.getData();
	},
	getData:function() {
		MibTreeManager.divEl=document.createElement("div");
		var divEl= MibTreeManager.divEl;
		divEl.innerHTML="";
	    MibTreeManager.divEl.appendChild(MibTreeManager.HelpTable)
		MibTreeManager.divEl.appendChild(MibTreeManager.topCont)
		MibTreeManager.tableContainer.appendChild(MibTreeManager.trTitleContainer)
		MibTreeManager.tableContainer.appendChild(MibTreeManager.trContainer)
		MibTreeManager.divEl.appendChild(MibTreeManager.tableContainer)
	    
		MibTreeManager.addDialog.openDialog(
			MibTreeManager.divEl,
			null,
			MibTreeManager.dialogButtons,
			"Mib Browser",
			"1000px",
			"660px"
		);
   MibTreeManager.topCont.appendChild(MibTreeManager.loadingImg);
	var url = Framework.mibsListURL + "/5" + User.userId+"/mibslist";
				RequestDispatcher.sendGET( url, MibTreeManager.mibListResponse, null );	
	
	},
	mibListResponse:function(response){
		var resp=eval("("+response.responseText+")");
		if(resp.status==STATUS_OK){
			MibTreeManager.topCont.innerHTML = ' ';
			MibTreeManager.HelpTDStep1.className="mibActivHelpTitles";
			MibTreeManager.createMibListMenu(resp.data);
			
		}
	},
	
	createMibListMenu:function(leftData){
		
		var scrollLeftdiv=document.createElement("div");
		scrollLeftdiv.style.height="500px";
		scrollLeftdiv.style.overflow="auto";
		var leftTable=document.createElement("table");
		var leftTbody=document.createElement("tbody");
			for(var i=0;i<leftData.length;i++){
			var leftTr=document.createElement("tr");
			var leftTd=document.createElement("td");
		   leftTd.innerHTML="<a class='mibList'  id='"+leftData[i].id+"' name='"+leftData[i].name+"'   onclick='MibTreeManager.treeMenuData(this);'>"+leftData[i].name+"</a>";
		   leftTr.appendChild(leftTd);
		   leftTable.appendChild(leftTr);
		}
		scrollLeftdiv.appendChild(leftTable);
	    MibTreeManager.mibListcont.appendChild(scrollLeftdiv);
		//$id('leftCont').appendChild(scrollLeftdiv);
		
	},
	
	treeMenuData:function(rootMibObj){
		var mibId=rootMibObj.id;
		var mibName=rootMibObj.name;
	    MibTreeManager.treeCont.innerHTML='';
		MibTreeManager.topCont.innerHTML = ' ';
		MibTreeManager.topCont.appendChild(MibTreeManager.loadingImg);
		var mibNameSpan=document.createElement('span');
	     	mibNameSpan.innerHTML=mibName;
		 MibTreeManager.treeCont.appendChild(mibNameSpan);
		var url = Framework.mibsListURL + "/5" + User.userId+"/selectedMibList/"+mibId;
	
		MibTreeManager.createTreeMenu(url)
		//	RequestDispatcher.sendGET( url, MibTreeManager.treeDataResponse, 'no-parse' );	
		
	},
/*	treeDataResponse:function(response){
		var data=response.responseText;
		MibTreeManager.topCont.innerHTML=' ';
		MibTreeManager.HelpTDStep1.className="mibHelpTitles";
		if(MibTreeManager.HelpTDStep2.className=="")
		MibTreeManager.HelpTDStep2.className="mibActivHelpTitles";
		MibTreeManager.createTreeMenu(data);
		
	},*/
		
	createTreeMenu:function(url){
		MibTreeManager.topCont.innerHTML=' ';
		MibTreeManager.HelpTDStep1.className="mibHelpTitles";
		if(MibTreeManager.HelpTDStep2.className=="")
		MibTreeManager.HelpTDStep2.className="mibActivHelpTitles";
	    var scrollRightdiv=document.createElement("div");
	    scrollRightdiv.className="mibTreeDivCont"
	    MibTreeManager.treeCont.appendChild(scrollRightdiv);
		//MibTreeManager.treeMode.addTree(scrollRightdiv);
		MibTreeManager.treeMode.addLazyLoadingTree(scrollRightdiv,url);
		
	
	},
	getSelectedValue:function(obj){
			MibTreeManager.selectedOid=obj.getAttribute("oid");
			MibTreeManager.oidInput.value=MibTreeManager.selectedOid
			MibTreeManager.descTextArea.value=obj.getAttribute("descr");
			MibTreeManager.HelpTDStep2.className="mibHelpTitles";
			MibTreeManager.HelpTDStep3.className="mibActivHelpTitles";
			
		
	},
	addSelectedValue:function(){
		MibTreeManager.inpValue.className="changeInputBrowse"
		MibTreeManager.inpValue.value=MibTreeManager.selectedOid;
		MibTreeManager.addDialog.closeDialog();
	},
	cancelSelectedValue:function(){
		MibTreeManager.inpValue.value='';
		MibTreeManager.addDialog.closeDialog();
	}
	
	
	}





