// JavaScript Document
//harry
//Inititialize function will initialize desktop
$.extend($.expr[':'], {
	'containsi': function (elem, i, match, array) {
		return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
	}
});
$.fn.sort = function(c) {
	return this.pushStack([].sort.apply(this, arguments), []);
 };
var sortAscending = function(a, b) {
	 return $(a).find("h1").text() > $(b).find("h1").text() ? 1 : -1;
};
var sortDescending = function(a, b) {
	 return $(a).find("h1").text() < $(b).find("h1").text() ? 1 : -1;
};
var orbitDesktop = function(dom){
	orbitDesktopAPI.apply(this);
	o = this;
	this.contentHolder = dom;
	this.themesettings = "";
	this.theme = "4f8d3f493b67fcd05f086359";
	this.transitionTime = 500;
	this.currenthtml = "desktop.html";
	this.currentface = "home";
	this.desktopData = {"home":"","settings":"","work":"","favorite":"","apps_manager":"","sections":"","journal_p":"","appstore":"","orbit":"","books":"","seminar_p":"","research_d":"","research_p":""};
	this.tp = "";
	this.sectionList;
	this.initialize = function(){
			var theme = o.theme;
			var custom = false;
		$.getJSON("/desktop/get_desktop_settings",{"get":"desktop","desktopid":o.desktopId},function(desktopSettings){
			if(desktopSettings){
				if(desktopSettings.theme!="custom"){
					theme = desktopSettings.theme;
				}else{
					theme = "4f8d3f493b67fcd05f086359";
					custom = true;
				}
				o.theme = theme;
				loadTheme(desktopSettings.customtheme,desktopSettings.wallpaper);
			}else{loadTheme();}
		})
		var loadTheme = function(customtheme,customwallpaper){   //This function will load the theme from database
			$.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
				o.themesettings = eval(ts);
				$('head').append( $('<link rel="stylesheet" id="dyn_css" type="text/css" />').attr('href', "/"+o.themefolder+"/"+theme+"/css/"+ts.css));
				if(custom){
					$("head").find("#dyn_css").remove();
					$("head").append(customtheme);
				}
				$(document).ready(function(){o.loadWallpaper(customwallpaper);o.bindDesktopEvents();o.loadIconCache();o.initializeDesktop();});
			})
		}
	}
	this.changeTheme = function(theme){  // this function is used for changing theme
		o.theme = theme;
		$.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
			o.themesettings = eval(ts);
			$('head').find("#dyn_css").remove();
			$('head').append( $('<link rel="stylesheet" id="dyn_css" type="text/css" />').attr('href', "/"+o.themefolder+"/"+theme+"/css/"+ts.css));
			o.loadWallpaper();
			o.loadIconCache();
		})
	};
	this.bindDesktopEvents = function(){  //this function will bind the global handlers to thd desktop, for example doc
		$("a#d_app_manager").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeAppSearch(target);
				});
			}
		});
		$("a#d_desktop").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeDesktop(target);
				});
			}
		});
		$("a#d_sections").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeSectionsManager(target);
				});
			}
		});
		$("#d_journal_p").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeJournalPapers(target);
				});
			}
		});
		$("a#d_settings").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeSettings(target);
				});
			}
		});
		$("a#d_appstore").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeAppstore(target);
				});
			}
		});
		$("a#d_orbit").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeOrbitTimeline(target);
				});
			}
		});
		$("a#d_books").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeBooks(target);
				});
			}
		});
		$("a#d_seminar_p").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeSeminar(target);
				});
			}
		});
		$("a#d_research_d").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeResearchDomain(target);
				});
			}
		});
		$("a#d_research_p").click(function(){
			var target = $(this).attr("href");
			if(o.currenthtml!=target){
				o.desktopData[o.currentface] = $(o.contentHolder).html();
				$("#content").hide("drop",o.transitionTime,function(){
					o.initializeResearchProject(target);
				});
			}
		});
		$(window).resize(function(){
			var ww = $(window).width();
			$("img#thmbackground").attr({"width":ww});
			if( $('.tinycanvas').length > 0 ){ $('.tinycanvas').tinyscrollbar_update(); }
			if($(o.contentHolder).find("div.app_frame").length > 0){
				$(o.contentHolder).find("div.app_frame").each(function(){
					var app_holder_height = $(this).height() - 72;
					var app_holder_width = $(this).width();
					$(this).find("div.app_holder").height(app_holder_height);
					$(this).find("div.app_holder iframe").attr({"height":app_holder_height,"width":app_holder_width});
				})
			}
		});
		var $widget_fn = $('.widget_fn'),$fn_des = $('.fn_des');
		$widget_fn.hover(function(){
			var fn_name = $(this).find('img').attr('alt'),nth = $(this).parents('.d_cate').index(),des_left = $('.dock_child').eq(nth).width();
			$(this).addClass('thmc1');
			$fn_des.text(fn_name).css({'top':nth * 60,'left': des_left + 60}).stop(true, true).fadeIn();
		},function(){
			$(this).removeClass('thmc1');
			$fn_des.stop(true, true).fadeOut();
		});
	};
	
	this.initializeDesktop = function(target){ //this is for initializing main desktops that are sections and tiles
		if(!target)target = "desktop";
		o.currenthtml = target;
		o.currentface = "home";
	
		var bindHandlers = function(){ // this function will bind all the handlers in the desktop
			var groupWrapperWidth = 0;
			$("div#desktop .group").each(function(){groupWrapperWidth+=$(this).outerWidth(true);});
 			var grps = new Array;
			$("div#desktop #group_wrapper").css("width",groupWrapperWidth);
			var first = true;
			$("div#desktop .g_col").sortable({
				connectWith: ".g_col",
				tolerance: 'pointer' ,
				revert: 300,
				containment: '#group_wrapper',
				helper: 'clone',
				stop:function(){
					first = true;
					var grpwidth = 0;
					for(i in grps){
						var grp = grps[i];
						if(grp.find(".element").length == 0){
					 		grp.animate({"width":"0px"},500,function(){$(this).remove();});
					 		grpwidth+=225;
						}
					}
					grps = [];
				$("#group_wrapper").width($("#group_wrapper").width()-grpwidth);
				},
				start:function(){
					$("#group_wrapper").find("div.group").each(function(i,par){
						 var nextnumber = $(this).find("ul").length;
						 $newcol = $('<ul class="g_col g_col_w2 col'+nextnumber+' ui-sortable">');
						 $(this).append($newcol);
						 $newcol.sortable({connectWith: '.g_col'});
						 grps.push($newcol);
						 $("#group_wrapper").width($("#group_wrapper").width()+225);
					});
					$("div#desktop .g_col").sortable('refresh');
				},
				update:function(){
					if(first){
						first = false;
						var newpostitions = new Array;
						var groupids = new Array;
						$.each($("div#desktop .group"),function(i,grp){
							var groupone = new Array;
							groupids.push($(grp).attr("id"));
							$ul = $(grp).find(".g_col .element");
							$.each($ul,function(){
								groupone.push($(this).attr("id"));
							})
							newpostitions.push(groupone);
						});
						$.post("/desktop/newpositions",{"sectionid":o.sectionId,"newpos":newpostitions,"groupids":groupids});
					}
					var s = $(this).find('.element').length;
						if(s!=0){
							last = $(this).find('.element').eq(s-1).position(),
							lasth = $(this).find('.element').eq(s-1).outerHeight(true);
							if ((last.top+lasth)>528){
								$(this).sortable('cancel');
							}
						}
						$("#group_wrapper ul").each(function(){
							if($(this).find('.element').length == 0)
								$(this).animate({"width":"0px"},500,function(){$(this).remove();});
						})
				},
				receive: function(event, ui){
					var s = $(this).find('.element').length,
						last = $(this).find('.element').eq(s-1).position(),
						lasth = $(this).find('.element').eq(s-1).outerHeight(true);
					if ((last.top+lasth)>528){
						$(ui.sender).sortable('cancel');
					}
				}
			});

			o.tinyscrollbar_ext({
				main: '.tinycanvas'
			})

			o.simple_drop_down();
			$("div#group_wrapper ul li[data-category=app]").click(function(){
				o.appWindow({
					title : $(this).find("a").attr("href"),
					appid : $(this).find("a").attr("href")
				});
			});
		}	
		var loadTiles = function(id){  //This will load tiles for a specific desktop .. id of section has to be passed here to load tiles
			$("div#desktop div#group_wrapper").empty();
			$.getJSON("/desktop/getgroups",{sectionid:id},function(groups){
				var tilecolors = o.themesettings.tilecolor;
				var opacity = ["op05","op06","op07","op08","op09"];
				$.each(groups,function(i,group){
					group.sort(o.sortJSON("position",true,parseInt));
					// var $group = $('<div class="group"><ul class="grp ui-sortable"></ul></div>'),
					var colindex = 0,
						$group = $('<div class="group"></div>'),
						$col = $('<ul class="g_col g_col_w2 col'+ colindex +'"/>'),
						$li,
						bdsum = 0,
						bwsum = 0,
						bhsum = 0,
						small = 0,
						single = false;
					$group.append($col);
					for(j=0;j<group.length;j++){
						var tile = group[j];	
						var brick = tile.shape.replace(' holder_f','').split(' '),
							bw = parseInt(brick[0].substr(1)),
							bh = parseInt(brick[1].substr(1)),
							bd = bw * bh;
						if(bh==1 && bw==1){
							small++;
						}else if(bh!=1 && bw!=1){
							single = true;
						}		
					
						if(small==2){
							small=0;
							single=false;
						}else if(small==1 && single==true){
							bh++;
							small=0;
							single=false; 
						}else{small=0;single=false;}
						
						bdsum+=bd;
						bwsum+=bw;
						bhsum+=bh;
						
						if(bdsum > 8 || bhsum > 6){
							bdsum = 0, bhsum = 0, colindex++,j--;
							$group.append('<ul class="g_col g_col_w2 col'+ colindex +'"/>');
						}else{			
							var tilecolor = tilecolors[Math.floor(Math.random()*tilecolors.length)];
							var op = opacity[Math.floor(Math.random()*opacity.length)];
							if(j==0)$group.attr("id",tile.group_id);
							
							if(tile.data_category == "app")
								$li = $('<li id="'+tile._id+'" class="element '+tile.shape+' hp vp" data-category="'+tile.data_category+'" data-content="'+tile.data_content+'"><span class="tile '+tilecolor+' '+op+'"></span><a href="'+tile.data_content+'" class="appicon"  onclick="return false;"><img src="'+o.iconPath+tile.data_content+'.png" alt="" ></a><h1 class="appname thmtxt">'+tile.title+'</h1></li>');
							else
								$li = $('<li id="'+tile._id+'" class="element '+tile.shape+' hp vp" data-category="'+tile.data_category+'" data-content="'+tile.data_content+'"><span class="tile '+tilecolor+' '+op+'"></span><h1 class="appname thmtxt">'+tile.title+'</h1><div class="appholder">Loading...</div></li>');
								
							$group.find('.col'+colindex).append($li);
						}
					}
						$("div#desktop div#group_wrapper").append($group);
				})
				bindHandlers();
				o.initializeWidgets();
			})
		}
		var loadSectionList = function(){  //This will load the section list from the db
			$.getJSON("/desktop/getsectionlist",{desktopid:o.desktopId},function(sectionlist){
				o.sectionList = eval(sectionlist);
				$.each(sectionlist,function(i,section){
					var tempstyle="";
					if(i==0){
						tempstyle = "style='display:none;'";
						$("#desktop #section_heading").text(section.name);
					}
					$("div#desktop ul#section_list").append($('<li class="section_name" '+tempstyle+'><a class="admtxt hp w2 hh2" onclick="return false;" href="'+section._id+'" >'+section.name+'</a></li>'));
				})
				bindSecondaryHandlers();
			})
		}	
		var bindSecondaryHandlers = function(){ //This is the secondary bind handler function which is used to bind events which are repeatative  
			$("div#desktop ul#section_list li.section_name").click(function(){
				$("div#desktop li.section_name").show();
				$(this).hide();
				$("#desktop #section_heading").text($(this).text());
				o.sectionId = $(this).find("a").attr("href");
				loadTiles(o.sectionId);
			})
		}
			
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
					loadTiles(o.sectionId);
					loadSectionList();	
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
				bindHandlers();
				o.initializeWidgets();
				bindSecondaryHandlers();
				$("div#desktop ul#section_list").empty();
				$.each(o.sectionList,function(i,section){
					var tempstyle="";
					if(section._id==o.sectionId){
						tempstyle = "style='display:none;'";
						$("div#desktop span#section_heading").text(section.name);
					}
					$("div#desktop ul#section_list").append($('<li class="section_name" '+tempstyle+'><a class="admtxt hp w2 hh2" onclick="return false;" href="'+section._id+'" >'+section.name+'</a></li>'));
				})
				bindSecondaryHandlers();
		}
	};
	
	this.tempFunc = function(th){
		$.post("desktop/twitter",function(){});
	};
	
	this.initializeAppSearch = function(target){   //this is application search ie is app manager initialization
		o.currenthtml = target;
		o.currentface = "apps_manager";
		var searchArray,allApps;
		var bindHandlers = function(){ // bind handler for app manager page
			var gn = $('.g_col').length,
				gw = $('.g_col').outerWidth(true);
			$("#app_manager #group_wrapper").css("width",gn*gw);
			// $("div#app_manager .group_search").css("width",$(window).width()-200);
			//for textbox search			
			$("#app_manager #searchbox").focus(function(){$(this).val("");}).keyup(function(e){
				if($(this).val()){				
					$("div#app_manager .search_result").empty();
					$("div#app_manager #seperator").hide();
					searchArray = $("div#app_manager .element:containsi("+$(this).val()+")");
					if(searchArray.length>0){
						$("div#app_manager #seperator").show();
						searchArray.each(function(){
							var $newelement = $('<div class="search element w1 h1 hp vp thmc2" data-category="desktop">'+$(this).html()+'</div>');
							$("div#app_manager .search_result").prepend($newelement);
						})
					}
				}else{$("div#app_manager #seperator").hide();$("div#app_manager .search_result").empty();}
			}).blur(function(){$(this).val("Search");});
			
			//for Alphabet sorting
			$("div#app_manager a#alphabet_sort_btn").click(function(){
				switch ($(this).attr("href")){
					case "ascending":
						$(this).attr("href","descending").find(".thmtxt").text("Alphabet [Z-A]");
						allApps = $("div#app_manager .group_search .element").sort(sortAscending);
						break;
					case "descending":
						$(this).attr("href","ascending").find(".thmtxt").text("Alphabet [A-Z]");
						allApps = $("div#app_manager .group_search .element").sort(sortDescending);
						break;
				}
				$("div#app_manager #app_list").empty();
				var count = 0, colindex = 0;
				$('#app_list').append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
				$.each(allApps,function(i,app){
					count++;
					if( count > 4 ){
						count = 1, colindex+=1;
						$('#app_list').append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
						$('.g_col.col'+ colindex).append(app);
					} else {
						$('.g_col.col'+ colindex).append(app);
					}
				})
				return false;
			})
			o.tinyscrollbar_ext({
				main: '.tinycanvas'
			})
		}
		var loadApps = function(){ //this load apps for sorting and searching 
			$.getJSON("/desktop/getapplist",{desktopid:o.desktopId},function(appss){
				var count = 0, colindex = 0;
				$('#app_list').append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
				$.each(appss,function(i,apps){
					$.each(apps,function(i,app){
						var $app;
						count++;
						$app = $('<div class="element w1 h1 hp vp thmc2" data-category="'+app.data_category+'" data-content="'+app.data_content+'"><span class="tile thmc2"></span><a href="'+app._id+'" class="appicon"><img src="'+o.iconPath+app.data_content+'.png" alt="" onclick="return false;"></a><h1 class="appname thmtxt">'+app.title+'</h1></div>');
						if( count > 4 ){
							count = 1, colindex+=1;
							$('#app_list').append('<div class="g_col g_col_w1 col'+ colindex +'"/>');
							$('.g_col.col'+ colindex).append($app);
						} else {
							$('.g_col.col'+ colindex).append($app);
						}
					})
				})
			
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				loadApps();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
				bindHandlers();
		}
	};
	this.initializeSectionsManager = function(target){ // this is init function for section manager
		o.currenthtml = target;
		o.currentface = "sections";
		var elementParent,element,slabel;
		var bindHandlers = function(){  // this is bind handler for section manager page
			var groupWrapperWidth = 0;
			$("div#sections .group").width(400);
				$("div#sections .group").each(function(){groupWrapperWidth+=$(this).width();})
				groupWrapperWidth+=200;
				groupWrapperHeight = $(".group").height() + 20;
				$("#group_wrapper").width(groupWrapperWidth);
			$("div#sections #group_wrapper .grp").sortable({
				start:function(){
					slabel = $(this).siblings('.section_label');
					slabel.find('li:hidden').stop(1,1).fadeIn(500);
				},
				stop:function(){
					slabel.find('li:not(:nth-child(1))').stop(1,1).fadeOut(500);
				}
			});
			$("div#sections .section_label li:not(:nth-child(1))").droppable({
				drop:function(event, ui){
					elementParent = ui.draggable.parents('.group');
					var $item = $( this ),
						$list = $( '#'+$item.data("category") );

					if($list.children('.element').length>=24){
						o.notify("Section is full.","alert");
					}
					else{
						ui.draggable.hide('fast',function(){
							$(this).appendTo($list).fadeIn();
						});
						$.post("/desktop/save_desktop_settings",{"save":"appnewsection","appid":ui.draggable.attr("id"),"newsectionid":$(this).data("content"),"desktopid":o.desktopId});
						if(o.sectionId == $(this).data("content") || o.sectionId == elementParent.attr("id")){
							o.desktopData["home"]="";
						}
					}
					$(this).find('span.tile').addClass('op06',400);
				},
				over:function(){
				    $(this).find('span.tile').removeClass('op06');
				},
				out:function(){
					$(this).find('span.tile').addClass('op06');
				},
				accept: '.to_drop'
	 		});
			o.tinyscrollbar_ext({
				main: '.tinycanvas'
			})


		};
		var loadApps = function(){ // this loads apps from db to in each sections
			$.getJSON("/desktop/getapplist",{desktopid:o.desktopId},function(appss){
				var $group,$lii,$li;
				var z=0;
				for(section in o.sectionList){
					$group = $('<div class="group" id="'+o.sectionList[section]._id+'"><div class="section_label"><ul class="section_grp"></ul></div><ul class="grp" id="section'+(z+1)+'"></ul></div>');
					for(x=0;x<4;x++){
						if(x==0){						
							$li = $('<li class="element w1 h1 hp vp thmtxt" data-content="'+o.sectionList[z]._id+'"><span class="tile thmc1"></span><span class="thmtxt">'+o.sectionList[z].name+'</span></li>');
							$group.find("ul.section_grp").append($li);
						}
						if(z!=x){
							$lii = $('<li class="element w1 h1 hp vp thmtxt" style="display: none;" data-category="section'+(x+1)+'" data-content="'+o.sectionList[x]._id+'"><span class="tile thmc2 op06"></span><span class="thmtxt">'+o.sectionList[x].name+'</span></li>');
								$group.find("ul.section_grp").append($lii);
						}
					}
					z++;
					$("div#group_wrapper").append($group);
				}
					var yy=1,y=0;
				$.each(appss,function(i,apps){

					$.each(apps,function(i,app){
						$li = $('<li class="element to_drop w1 hh2 hp vp" data-category="'+app.data_category+'" data-content="'+app.data_content+'" id="'+app._id+'"><div class="appicon"><img src="'+o.iconPath+app.data_content+'.png" class="" width="30" /></div><h1 class="appname thmtxth">'+app.title+'</h1></li>');
						$("ul#section"+yy).append($li);
					})
					if(y==1){
						y=-1;
						yy++;
					}
					y++;
				})
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				loadApps();	
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			bindHandlers();
		}
		
	};
	this.initializeSettings = function(target){ //this is to initialize setting page
		o.currenthtml = target;
		o.currentface = "settings";
		var bindHandlers = function(){ // this is the bind handler function for setting page
			$("div#settings ul#setting_left_nav li a").on({
				click: function(){
					if(!$(this).data("clicked")){
					var tfunc = $(this).attr("href");
					switch(tfunc){
						case "themes":
						themes();
						break;
						case "sections":
						sections();
						break;
						case "connection":
						connection();
						break;
					}
					$("div#settings ul#setting_left_nav li a").removeClass('thmc1 thmtxt').data('clicked',null);
					$(this).addClass('thmc1 thmtxt').data('clicked',true);
					}
				},
				mouseenter: function(){
					$(this).removeClass('admtxt').addClass('thmc1 thmtxt');
				},
				mouseleave: function(){
					var t = $(this).data('clicked') ? '' : 'thmc1 thmtxt';
					$(this).removeClass(t).addClass('admtxt');
				}
			});

		}
		var sections = function(){ // this load section page in setting page 
			var bindHandlers = function(){ // binding handlers in section page
				$('.tinycanvas').each(function(){
					var h = $(this).parent().height(),
						sh = $(this).siblings('.s_tab').height();
					o.tinyscrollbar_ext({
						main : $(this),
						height : h-sh-24,
					},{
						axis : "y"
					})
				});
				
				$("a#name_save_btn").click(function(){
					var desktopnm = new Array;
					$("#desktop_names input").each(function(){
						desktopnm.push($(this).val());
					})
					$.post("/desktop/save_desktop_settings",{"save":"desktopnames","desktopid":o.desktopId,"desktopnms":desktopnm},function(result,status){
						if(result[0].success=="true"){
							o.notify("Names Saved!!","success",2);
						}else
							o.notify("Name saving failed!!","imp",2);
					})
					$.each(o.sectionList,function(i,sec){
						sec.name = desktopnm[i];
					})
				})
			}
			$("div#settings div#panel_r").load("/desktop/settingsections",function(){
				$.getJSON("/desktop/get_desktop_settings",{"get":"sectionnames","desktopid":o.desktopId},function(sectionnames){
					$("#desktop_names input").each(function(i){
						$(this).val(sectionnames[i]);
					})
					bindHandlers();
				})				
			})
			
		}
		var themes = function(){ // this opens themes page in setting page
				var bindHandlers = function(){ // binding handlers in themes page
						// live change theme
						$(".theme_list > .ssl_item").click(function(){
							o.changeTheme($(this).attr("id"));
							// $(".theme_list > li").removeClass('thmc1').data('clicked',null).find('.theme_name').removeClass('thmtxt');
							// $(this).addClass('thmc1').data('clicked',true).find('.theme_name').addClass('thmtxt');
							$.post("/desktop/save_desktop_settings",{"save":"theme","desktopid":o.desktopId,"theme":$(this).attr("id")},function(result,status){
								if(result[0].success=="true"){
									o.notify("Theme Saved!!","success",2);
									loadthmc();
								} else {
									o.notify("Theme saving failed!!","imp",2);
								}
							});
						});

						$('.tinycanvas').each(function(){
							var h = $(this).parent().height(),
								sh = $(this).siblings('.s_tab').height();

							o.tinyscrollbar_ext({
								main: $(this),
								height: h-sh-24
							},{
								axis: 'y'
							})
						});

						o.single_select();
						o.simple_tab();
						
						$('.color-picker').miniColors({
							change:function(hex){
								var changewhat = $(this).attr("for");
								var previewarea = $("#theme_preview_area");
								switch(changewhat){
									case "thmtxt":
									case "thmtxth":
										previewarea.find("."+changewhat).css({"color":hex});
										break;
									case "g_sep":
										previewarea.find("."+changewhat).css({"border-color":hex});
										break;
									case "background":
										previewarea.css({"background-color":hex});
										break;
									default:
										previewarea.find("."+changewhat).css({"background-color":hex});
										break;
								}
							}
						});
						
						$("a#theme_submit").click(function(){
							o.confirm({
								message : "Are you sure that you want to save custom theme?",
								highlighted : 1,
								buttons : ["Yes","No"]
							},function(reply){
								if(reply){
									var colors = new Array;
									$("#color_input input").each(function(){
										colors[$(this).attr("for")] = $(this).val();
									})
									var dhtml ="<style> .thmc1 { background: "+colors['thmc1']+"; }.thmc2 { background: "+colors['thmc2']+"; }.thmc3 { background: #FFFFFF; }.thmc4 { background: "+colors['thmc4']+"; }.thmtxt { color: "+colors['thmtxt']+"; }.thmtxth { color: "+colors['thmtxth']+"; }.g_sep { border-color: "+colors['g_sep']+";} body{background-color: "+colors['background']+"} </style>";
									$("head").find("#dyn_css").remove();
									$("head").append(dhtml);
									$.post("/desktop/save_desktop_settings",{"save":"customtheme","desktopid":o.desktopId,"theme":dhtml},function(result,status){
										if(result[0].success=="true")
											o.notify("Custom theme saved!!","success",2);
										else
											o.notify("Custom theme saving failed!!","imp",2);
									})
								}
							})
						});
						
						$(".stock_wallpaper .ssl_item").click(function(){
							var wallpapername = $(this).find("img").attr("alt");
							o.changeWallpaper(wallpapername);
						})
				}
				var loadthmc = function(){ // a general function to load the themecolor in color selector
					$('.color-picker').each(function(){
						var cc = $(this).attr('for'), hex, color;
						switch(cc){
							case 'thmtxt':
							case 'thmtxth':
								hex = 'color';
								break;
							case 'g_sep':
								hex = 'border-left-color';
								break;
							default:
								hex = 'background-color';
								break;
							}
						if(cc=="background")
							color = $("#theme_preview_area").css("background-color");
						else
							color = $('#theme_preview_area .'+cc).css(hex);
						$(this).miniColors("value", o.rgb2hex(color));
					});
				}
				
			$("div#settings div#panel_r").load("/desktop/settingthemes",function(){
				$.getJSON("/desktop/get_desktop_settings",{"get":"theme","desktopid":o.desktopId},function(theme){
					$('#st1 .theme_list [id='+theme+']')
						.addClass("thmc1 active", 300)
						.find("span")
						.addClass("thmtxt");

					bindHandlers();
					loadthmc();
				})
			})
		}
		
		var connection = function(){
			var bindHandlers = function(){
				$("#connection_setting ul a").click(function(){
					var what = $(this).attr("for"),
						type = $(this).attr("href"),
						$ul = $("#"+type+"_connection"),
						usernm = $ul.find("input[type=text]").val(),
						pwd = $ul.find("input[type=password]").val();
						switch(what){
							case "save":
							case "new":
								if(usernm!="" && pwd!=""){
									$ul.find("input[type=text]").replaceWith("<div class='c_info usrnm'>"+usernm+"</div>")
									$ul.find("input[type=password]").replaceWith("<div class='c_info pwd'>&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;</div>");
									$(this).text("Edit").attr("for","edit");
									$(this).parent().find("a[for=delete]").show();
									$ul.find("span.c_status").text("Connected").addClass("c_status_on");
									if(what=="save")
										what="edit";
									saveaccount(usernm,pwd,type,what);
								}
								break;
							case "edit":
								var un = $ul.find("div.usrnm").text();
								$ul.find("div.usrnm").replaceWith('<input type="text" value="'+un+'">');
								$ul.find("div.pwd").replaceWith('<input type="password">');
								$(this).text("Save").attr("for","save");
								break;
							case "delete":
							var $this = $(this);
								o.confirm({
									message : "Are you sure that you want to remove this account?",
									buttons : ["Yes","No"],
									highlighted : 2
								},function(reply){
									if(reply){
										$this.hide();
										$ul.find("div.usrnm").replaceWith('<input type="text">');
										$ul.find("div.pwd").replaceWith('<input type="password">');
										$ul.find("span.c_status").text("No Connection").removeClass("c_status_on");
										$this.parent().find("a[for=edit]").text("Connect").attr("for","new");
										saveaccount("","",type,what);
									}
								})
							break;
						}
				})

				var $conlist = $('.s_form'),
					conlist_w = $conlist.length * $conlist.outerWidth(true) + ($conlist.length - 1) * 25;

				$('#connection_setting').width(conlist_w);

				o.tinyscrollbar_ext({
					main: '.tinycanvas'
				})
				
			}
			var saveaccount = function(usernm,pwd,type,what){
				$.post("/desktop/save_account_info",{email:usernm,password:pwd,account:type,dowhat:what},function(result){
					if(what!="delete"){
						if(result[0].success=="true")
							o.notify(type+" account connected!!","success",2);
						else
							o.notify(type+" account connection failed!!","imp",2);
					}else{
						if(result[0].success=="true")
							o.notify(type+" account removed!!","success",2);
						else
							o.notify(type+" account removal failed!!","imp",2);
					}
				})
			}
			$("div#settings div#panel_r").load("/desktop/settingconnection",function(){
				$.getJSON("desktop/getaccounts",function(accounts){
					$.each(accounts,function(i,account){
						$ul = $("#"+account.type+"_connection");
						$ul.find("input[type=text]").replaceWith("<div class='c_info usrnm'>"+account.email+"</div>")
						$ul.find("input[type=password]").replaceWith("<div class='c_info pwd'>&#8226;&#8226;&#8226;&#8226;&#8226;&#8226;</div>");
						$ul.find("a[for=new]").text("Edit").attr("for","edit");
						$ul.find("a[for=delete]").show();
						$ul.find("span.c_status").text("Connected").addClass("c_status_on");
					})
					bindHandlers();
				})
				
			})
			
		}

		$(o.contentHolder).empty().load("/desktop/"+target,function(){
			bindHandlers();
			themes();
		});
	};
	this.initializeOrbitTimeline = function(target){
		o.currenthtml = target;
		o.currentface = "orbit";
		var bindHandlers = function(){
			var timeline = new orbitTimeline("#timeline");
			timeline.initialize();
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop_orbit/"+target,function(){
				bindHandlers();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			bindHandlers();
		}
	};
	this.initializeJournalPapers = function(target){ // this init journal papers
		o.currenthtml = target;
		o.currentface = "journal_p";
		var bindHandlers = function(){ // bind handler for journal paper
			$('.s_menu a').on({
				click: function(){
					if(!$(this).hasClass('active')){
						var tfunc = $(this).attr('href');
						switch(tfunc){
							case 'list':
								list();
							break;
							case 'addpaper':
								addpaper();
							break;
						}
						$('.s_menu a').removeClass('thmc1 thmtxt active');
						$(this).addClass('thmc1 thmtxt active');
					}
				},
				mouseenter: function(){
					if(!$(this).hasClass('active')){
						$(this).switchClass('admtxt','thmc1 thmtxt',0);
					}
				},
				mouseleave: function(){
					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
					$(this).switchClass(t,'admtxt',0);
				}
			});
		}
		
		var list = function(){ // to open list part in journal papers page
			var journalData;
			var bindHandlers = function(){ // to bind handlers for list page
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.list_t'
				})

				
				$("#journal_selection_options a").click(function(){
					switch($(this).attr("href")){
						case "all":
							$(".list_item_action > .icon-check-empty").switchClass("icon-check-empty","icon-check",0);
							break;
						case "none":
							$(".list_item_action > .icon-check").switchClass("icon-check","icon-check-empty",0);
							break;
					}
					return false;
				})
				$("#journal_view_selection a").click(function(){
					switch($(this).attr("href")){
						case "journal":
						journalview();
						break;
						case "keywords":
						keywordsview();
						break;
						case "title":
						titleview();
						break;
						case "abstract":
						abstractview();
						break;
					}
					return false;
				})
			}

			var bindSecondaryHandlers = function(){
				$("#journal_p div#paper_list a").click(function(){
					if($(this).hasClass("icon-check-empty")){
						$(this).switchClass("icon-check-empty","icon-check",0);
					} else if($(this).hasClass("icon-check")) {
						$(this).switchClass("icon-check","icon-check-empty",0);
					} else if($(this).hasClass("icon-star")){
						$(this).removeClass("icon-star").addClass("icon-star-empty");
					} else if($(this).hasClass("icon-star-empty")){
						$(this).removeClass("icon-star-empty").addClass("icon-star");
					}
					return false;
				})
			}

			var journalview = function(){
				$("#journal_p div#paper_list div.overview").empty();
				var column = $('<div class="g_col list_t"><ul></ul></div>'),
						counter = 1,
						li;
					$.each(journalData,function(i,journal){
						$.each(journal.papers,function(j,paper){
							li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+journal.title+'</div><div class="list_t_des">'+paper.title+'</div></li>');
							column.find("ul").append(li);
							if(counter%5==0){
								$("#journal_p div#paper_list div.overview").append(column);
								column = $('<div class="g_col list_t"><ul></ul></div>');
							}
							counter++;
						})
					})
				$("#journal_p div#paper_list div.overview").append(column);
				bindSecondaryHandlers();
			}

			var keywordsview = function(){
				$("#journal_p div#paper_list div.overview").empty();
				var column = $('<div class="g_col list_t"><ul></ul></div>'),
						counter = 1,
						li;
					$.each(journalData,function(i,journal){
						$.each(journal.papers,function(j,paper){
							li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_t_des">'+paper.keywords+'</div></li>');
							column.find("ul").append(li);
							if(counter%5==0){
								$("#journal_p div#paper_list div.overview").append(column);
								column = $('<div class="g_col list_t"><ul></ul></div>');
							}
							counter++;
						})
					})
				$("#journal_p div#paper_list div.overview").append(column);
				bindSecondaryHandlers();
			}

			var titleview = function(){
				$("#journal_p div#paper_list div.overview").empty();
				var column = $('<div class="g_col list_t"><ul></ul></div>'),
						counter = 1,
						li;
					$.each(journalData,function(i,journal){
						$.each(journal.papers,function(j,paper){
							li = $('<li class="list_t_item"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div></li>');
							column.find("ul").append(li);
							if(counter%5==0){
								$("#journal_p div#paper_list div.overview").append(column);
								column = $('<div class="g_col list_t"><ul></ul></div>');
							}
							counter++;
						})
					})
				$("#journal_p div#paper_list div.overview").append(column);
				bindSecondaryHandlers();
			}

			var abstractview = function(){
				$("#journal_p div#paper_list div.overview").empty();
				var column = $('<div class="g_col list_t"><ul></ul></div>'),
						li;
					$.each(journalData,function(i,journal){
						$.each(journal.papers,function(j,paper){
							li = $('<li class="list_t_item"  style="height:auto;"><div class="list_item_action"><a href="" class="icon-check-empty"></a><a href="" class="icon-star-empty"></a></div><div class="list_t_title">'+paper.title+'</div><div class="list_t_des">'+paper.abstract+paper.abstract+'</div></li>');
							column.find("ul").append(li);
							$("#journal_p div#paper_list div.overview").append(column);
							column = $('<div class="g_col list_t"><ul></ul></div>');
						})
					})
				$("#journal_p div#paper_list div.overview").append(column);
				bindSecondaryHandlers();
			}
			
			$("div#journal_p div#panel_r").load("/desktop/journal_p_list",function(){
				$.getJSON("/desktop_publications/getjournals",function(journals){
					journalData = eval(journals);
					journalview();
					bindHandlers();
				})
			})
		}
		
		var addpaper = function(){ // to open add pages in journal papers page
			var bindHandlers = function(){ // to bind handlers for add page
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.s_grid_con'
				})
			}
			$("div#journal_p div#panel_r").load("/desktop/journal_p_add",function(){
				bindHandlers();
			})
		}
		
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				bindHandlers();
				list();	
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			bindHandlers();
			list();
		}
	};
	this.initializeAppstore = function(target){
		o.currenthtml = target;
		o.currentface = "appstore";
		var bindHandlers = function(){
			$('.s_menu a').on({
				click: function(){
					if(!$(this).hasClass('active')){
						var tfunc = $(this).attr('href');
						switch(tfunc){
							case 'widgets':
								widgets();
								break;
							case 'onlinestore':
								onlinestore();
								break;
						}
						$('.s_menu a').removeClass('thmc1 thmtxt active');
						$(this).addClass('thmc1 thmtxt active');
					}
				},
				mouseenter: function(){
					if(!$(this).hasClass('active')){
						$(this).switchClass('admtxt','thmc1 thmtxt',0);
					}
				},
				mouseleave: function(){
					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
					$(this).switchClass(t,'admtxt',0);
				}
			});
		}
		var widgets = function(){
			var bindHandlers = function(){
				$("#widget_list a").click(function(){
					var sectionid = $(this).attr("for");
					var widgetid = $(this).parent().parent().attr("for");
					switch($(this).attr("href")){
						case "addthis":
						$this = $(this);
						o.confirm({
							message: "Are you sure you want to add this widget?",
							buttons: ['Yes','No'],
							highlighted: 1
						},function(reply){
							if(reply){
								$.post("desktop_appstore/widgets_settings",{section:sectionid, widget:widgetid, what:"add"},function(result){
									if(result[0].success){
										$this.attr("href","removethis");
										$targetDom = $this.parent().parent().find("div.status");
										$parentDom = $this.parent();
										if($targetDom.find("a").length == 0)
											$targetDom.html("Status : Installed on");
										$targetDom.append(" ").append($this);
										if($parentDom.find("a").length == 0)
											$parentDom.empty();
										o.desktopData["home"]="";
										o.notify("Widget added.","success",2);
									}else{
										o.notify(result[0].error,"imp",2);
									}
								})
							}
						})
						break;
						case "removethis":
						$this = $(this);
						o.confirm({
							message: "Are you sure you want to remove this widget?",
							buttons: ['Yes','No'],
							highlighted: 2
						},function(reply){
							if(reply){
								$.post("desktop_appstore/widgets_settings",{section:sectionid, widget:widgetid, what:"remove"},function(result){
									if(result[0].success){
										$this.attr("href","addthis");
										$targetDom = $this.parent().parent().find("div.not_status");
										$parentDom = $this.parent();
										if($targetDom.html()=="")
											$targetDom.html("Install on");
										$targetDom.append(" ").append($this);
										if($parentDom.find("a").length == 0)
											$parentDom.html("Status : Downloaded");
										o.desktopData["home"]="";
										o.notify("Widget removed.","success",2);
									}
								})
							}
						})
						break;
					}
					return false;
				});
				
				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.list_t'
				})
			}
			$("div#apps_store div#panel_r").load("/desktop_appstore/widgets",function(){

				$.getJSON("/desktop_appstore/getuserwidgets",function(userwidgets){
					var column = $('<div class="g_col list_t"><ul></ul></div>'),
						counter = 1,
						li;
					$.each(userwidgets,function(i,widge){
						if(!widge.status)widge.status = "Downloaded";
						var brick = widge.shape.split(' '),
							bw = parseInt(brick[0].substr(1)),
							bh = parseInt(brick[1].substr(1)),
							shp = bw+" X "+bh;
							li = $('<li class="list_t_item" for="'+widge._id+'"><div class="list_t_title">'+widge.name+'</div><div class="list_t_des">Author : '+widge.author+'</div><div class="list_t_des">Shape : '+shp+'</div><div class="list_t_des status">Status : '+widge.status+'</div><div class="list_t_des not_status"></div></li>');
							var cur_section_names = new Array();
							var section_names = new Array();
							var section_links = new Array();
							if(widge.section){
								var s_name_list = "";
								$.each(widge.section,function(x,sec){
									$.each(o.sectionList,function(j,s){
										if(s._id==sec){
											cur_section_names.push(s.name);
											s_name_list+= "<a href='removethis' for='"+s._id+"' style='text-decoration:underline;'>"+s.name +"</a> ";
										}
									})
								})
								var section_names = o.getArrayfromJson(o.sectionList,"name");
								var section_links = o.getArrayfromJson(o.sectionList,"_id");
								var s_name_list_not = "";
								$.each(section_names,function(j,sec_name){
									if($.inArray(sec_name,cur_section_names)==-1){
										var sec_link = section_links[j];
										s_name_list_not+= "<a href='addthis' for='"+sec_link+"' style='text-decoration:underline;'>"+sec_name+"</a> ";
									}
								})
								li.find("div.status").html("Status : Installed on "+s_name_list);
								if(s_name_list_not)
									li.find("div.not_status").html("Install on "+s_name_list_not);
							}else{
								li.find("div.not_status").html("Install on <a href='addthis' for='"+o.sectionList[0]._id+"' style='text-decoration:underline;'>"+o.sectionList[0].name+"</a> <a href='addthis' for='"+o.sectionList[1]._id+"' style='text-decoration:underline;'>"+o.sectionList[1].name+"</a> <a href='addthis' for='"+o.sectionList[2]._id+"' style='text-decoration:underline;'>"+o.sectionList[2].name+"</a> <a href='addthis' for='"+o.sectionList[3]._id+"' style='text-decoration:underline;'>"+o.sectionList[3].name)+"</a>";
							}
							//console.log(section_names);			
							column.find("ul").append(li);
							if(counter%4==0){
								$("#apps_store div#widget_list").append(column);
								column = $('<div class="g_col list_t" style="width:350px;"><ul></ul></div>');
							}
							counter++;
					})
				$("#apps_store div#widget_list").append(column);
				bindHandlers();
				})
			})
		}
		var onlinestore = function(){
			var bindHandlers = function(){

			}
			$("div#apps_store div#panel_r").load("/desktop_appstore/onlinestore",function(){
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop_appstore/"+target,function(){
				onlinestore();
				bindHandlers();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			onlinestore();
			bindHandlers();
		}
	}
	this.initializeBooks = function(target){
		o.currenthtml = target;
		o.currentface = "books";
		var bindHandlers = function(){
			$('.s_menu a').on({
				click: function(){
					if(!$(this).hasClass('active')){
						var tfunc = $(this).attr('href');
						switch(tfunc){
							case 'list':
								list();
							break;
							case 'addbook':
								addbook();
							break;
						}
						$('.s_menu a').removeClass('thmc1 thmtxt active');
						$(this).addClass('thmc1 thmtxt active');
					}
				},
				mouseenter: function(){
					if(!$(this).hasClass('active')){
						$(this).switchClass('admtxt','thmc1 thmtxt',0);
					}
				},
				mouseleave: function(){
					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
					$(this).switchClass(t,'admtxt',0);
				}
			});
		}

		var list = function(){
			var bindHandlers = function(){
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.list_t'
				})
			}

			$("div#books div#panel_r").load("/desktop/books_list",function(){
				bindHandlers();
			})
		}

		var addbook = function(){
			var bindHandlers = function(){
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.s_grid_con'
				})

			}

			$("div#books div#panel_r").load("/desktop/books_add",function(){
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				list();
				bindHandlers();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			list();
			bindHandlers();
		}
	}
	this.initializeSeminar = function(target){
		o.currenthtml = target;
		o.currentface = "seminar_p";
		var bindHandlers = function(){
			$('.s_menu a').on({
				click: function(){
					if(!$(this).hasClass('active')){
						var tfunc = $(this).attr('href');
						switch(tfunc){
							case 'list':
								list();
							break;
							case 'addseminar':
								addseminar();
							break;
						}
						$('.s_menu a').removeClass('thmc1 thmtxt active');
						$(this).addClass('thmc1 thmtxt active');
					}
				},
				mouseenter: function(){
					if(!$(this).hasClass('active')){
						$(this).switchClass('admtxt','thmc1 thmtxt',0);
					}
				},
				mouseleave: function(){
					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
					$(this).switchClass(t,'admtxt',0);
				}
			});
		}

		var list = function(){
			var bindHandlers = function(){
				o.tinyscrollbar_ext({
					main : ".tinycanvas",
					fill : ".list_t"
				})
			}

			$("div#seminar_p div#panel_r").load("/desktop/seminar_p_list",function(){
				bindHandlers();
			})
		}

		var addseminar = function(){
			var bindHandlers = function(){
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.s_grid_con'
				})
			}

			$("div#seminar_p div#panel_r").load("/desktop/seminar_p_add",function(){
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				list();
				bindHandlers();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			list();
			bindHandlers();
		}
	}
	this.initializeResearchDomain = function(target){
		o.currenthtml = target;
		o.currentface = "research_d";
		var bindHandlers = function(){
			$('.s_menu a').on({
				click: function(){
					if(!$(this).hasClass('active')){
						var tfunc = $(this).attr('href');
						switch(tfunc){
							case 'list':
								list();
							break;
							case 'add':
								add_this();
							break;
						}
						$('.s_menu a').removeClass('thmc1 thmtxt active');
						$(this).addClass('thmc1 thmtxt active');
					}
				},
				mouseenter: function(){
					if(!$(this).hasClass('active')){
						$(this).switchClass('admtxt','thmc1 thmtxt',0);
					}
				},
				mouseleave: function(){
					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
					$(this).switchClass(t,'admtxt',0);
				}
			});
		}
		var list = function(){
			var bindHandlers = function(){
				o.tinyscrollbar_ext({
					main : ".tinycanvas",
					fill : ".list_t"
				})
			}

			$("div#research_d div#panel_r").load("/desktop/research_d_list",function(){
				bindHandlers();
			})
		}
		var add_this = function(){
			var bindHandlers = function(){
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.s_grid_con'
				})
			}

			$("div#research_d div#panel_r").load("/desktop/research_d_add",function(){
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				list();
				bindHandlers();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			list();
			bindHandlers();
		}
	}
	this.initializeResearchProject = function(target){
		o.currenthtml = target;
		o.currentface = "research_p";
		var bindHandlers = function(){
			$('.s_menu a').on({
				click: function(){
					if(!$(this).hasClass('active')){
						var tfunc = $(this).attr('href');
						switch(tfunc){
							case 'list':
								list();
							break;
							case 'add':
								add_this();
							break;
						}
						$('.s_menu a').removeClass('thmc1 thmtxt active');
						$(this).addClass('thmc1 thmtxt active');
					}
				},
				mouseenter: function(){
					if(!$(this).hasClass('active')){
						$(this).switchClass('admtxt','thmc1 thmtxt',0);
					}
				},
				mouseleave: function(){
					var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
					$(this).switchClass(t,'admtxt',0);
				}
			});
		}
		var list = function(){
			var bindHandlers = function(){
				o.tinyscrollbar_ext({
					main : ".tinycanvas",
					fill : ".list_t"
				})
			}

			$("div#research_p div#panel_r").load("/desktop/research_p_list",function(){
				bindHandlers();
			})
		}
		var add_this = function(){
			var bindHandlers = function(){
				o.simple_drop_down();

				o.tinyscrollbar_ext({
					main: '.tinycanvas',
					fill: '.s_grid_con'
				})
			}

			$("div#research_p div#panel_r").load("/desktop/research_p_add",function(){
				bindHandlers();
			})
		}
		if(!o.desktopData[o.currentface]){
			$(o.contentHolder).empty().load("/desktop/"+target,function(){
				list();
				bindHandlers();
			});
		}else{
			$(o.contentHolder).html(o.desktopData[o.currentface]);
			list();
			bindHandlers();
		}
	}
	this.loadWallpaper = function(wallpaper){  // this is to load new wallpaper 
		if(!wallpaper)wallpapernm = o.themesettings.background;else wallpapernm = wallpaper
		var ww = $(window).width();
		var wh = $(window).height();
		if(!wallpaper)
			$("img#thmbackground").attr({"src":"/"+o.themefolder+"/"+o.theme+"/images/"+wallpapernm,"width":ww}).css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","height":"auto"});
		else
			$("img#thmbackground").attr({"src":o.wallpaperPath+wallpaper,"width":ww}).css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","height":"auto"});
			
		$("div#bgover").css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","width":ww,"height":wh});
	};
	
	this.loadIconCache = function(){  // this function load or refresh icon cache for the theme
		var imgs = $("ul.docklist img");
		$.each(imgs,function(){
			var setting_name = $(this).attr("id").replace("_icon","");
			$(this).attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons[setting_name])
		})
	};
	this.initializeWidgets = function(){ // this function will initialize all the widgets in the desktop
		var elements = $("#group_wrapper li.element");
		$.each(elements,function(){
			var widget = $(this);
			if(widget.attr("data-category")=="widget"){
				var widgename = widget.attr("data-content");
				$.getScript("/desktop_widgets/"+widgename+"/"+widgename+".js",function(){
					widget.find("div.appholder").load("/desktop_widgets/"+widgename+"/index.html.erb");
				});
			//	$(this).find("div.appholder").append( $('<link rel="stylesheet" id="dyn_css" type="text/css" />').attr('href', "/desktop_widgets/"+widgename+"/css/"+widgename+".css"));
			}
				
		})
	};
	this.saveWallpaper = function(wallpaper){ // this function saves wallpaper in db
		$.post("desktop/save_desktop_settings",{"save":"wallpaper","wallpapernm":wallpaper,"desktopid":o.desktopId},function(result){
				if(result[0].success=="true")
					o.notify("Wallpaper saved!!","success",2);
				else
					o.notify("Wallpaper saving failed!!","imp",2);
		})
	};
	this.tinyscrollbar_ext = function(target,tinysettings){
		//main : dom on which tinyscrollbar has to be applied
		//fill : number or object for width
		//height : height for the target element
		//tinysettings : tinyscrollbar settings

		if(typeof target.main == "undefined"){
			o.notify('tinyscrollbar: target undefined','imp',2);
			return;
		}else{
			target.main = $(target.main);
		}
		//var target.fill = $
		var tinysettings = ( typeof tinysettings == 'undefined' ) ? {"axis":"x"} : tinysettings ;
		
		var count,baseWidth,fillArray,pxs;
		
		if( typeof target.fill == 'string' ){
			fillArray = target.main.find(target.fill);
			count = fillArray.length;
			baseWidth = $(target.fill).eq(1).outerWidth(true);
			target.main.find('.overview').width( baseWidth * count);
		} else if( typeof target.fill == 'number' ){
			target.main.find('.overview').width( target.fill );
		} else if( typeof target.fill == 'undefined' ){
			
		} else {
			o.notify('tinyscrollbar: setting width failed','imp',2);
		}
		if(target.height)
			target.main.height(target.height);

			target.main
				.tinyscrollbar( tinysettings )
				.find('.scrollbar')
				.delay(1500)
				.addClass('op00', 500);
	};
	this.simple_drop_down = function(){
		// simple dropdown menu
		if( !$('.sdm').children('.sdm_o').length > 0 ){
			return;
		} else {
			$('.sdm').hover(function(){
				$(this).stop(1,1).toggleClass('thmc2 thmtxt');
			}, function(){
				$(this).stop(1,1).toggleClass('thmc2 thmtxt');
			});
			$('.sdm').find('a').hover(function(){
				$(this).stop(1,1).toggleClass('thmc2 thmtxt');
			}, function(){
				$(this).stop(1,1).toggleClass('thmc2 thmtxt');
			});
		}
	};
	this.simple_tab = function(){
		// tab
		var $anchor = $('.s_tab a[href*=#]'),
			$tabcontent = $('.st_c');

		$anchor.each(function(){
			$(this).click(function(){
				var target = $(this).attr('href');
				$anchor.removeClass('thmc2 thmtxt admtxt admbg').addClass('admtxt admbg');
				$(this).toggleClass('thmc2 thmtxt admtxt admbg');
				$tabcontent.hide();
				$(target).show();
				if( $('.tinycanvas').length > 0 ){
					$('.tinycanvas').tinyscrollbar_update();
				}
				return false;
			});
		});
	};
	this.single_select = function(){
		// single select
		$('.ssl .ssl_item').each(function(){
			var $des = $(this).find('.ssl_des');

			$(this).on({
				click: function(){
					$(this).switchClass('','thmc1 active',0);
					$(this).siblings('.thmc1').switchClass('thmc1 active','',0);

					if( $des.length > 0 ){
						$(this).parents('.ssl').find('.ssl_des').removeClass('thmtxt');
						$des.addClass('thmtxt');
					}
				},
				mouseenter: function(){
					if( !$(this).hasClass('active') ){
						$(this).addClass('thmc1');

						if( $des.length > 0 ){
							$des.addClass('thmtxt');
						}
					}
				},
				mouseleave: function(){
					if( !$(this).hasClass('active') ){	
						$(this).removeClass('thmc1');

						if( $des.length > 0 ){
							$des.removeClass('thmtxt');
						}
					}
				}
			});
		});
	}
	o.initialize();
}

orbitDesktop.prototype.themefolder = "themes";
orbitDesktop.prototype.widgetfolder = "desktop_widgets";
orbitDesktop.prototype.desktopId = "1";
orbitDesktop.prototype.notifyImgPath = "temp";
orbitDesktop.prototype.wallpaperPath = "/assets/stockBackground/";
orbitDesktop.prototype.iconPath = "/assets/icons/";
orbitDesktop.prototype.currentLanguage = "en";
orbitDesktop.prototype.currentUsername = "Harry";
var uselessfunction = function(){
	$.post("/desktop/temp_func",{sectionid:"4f83e7bbbd98eb041600001d"});
}