Orbit/app/assets/javascripts/orbitdesktop.js

1379 lines
49 KiB
JavaScript
Executable File

// 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":""};
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");
console.log(o.currenthtml);
console.log(target);
console.log(o.currentface);
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);
});
}
});
$(window).resize(function(){
var ww = $(window).width();
$("img#thmbackground").attr({"width":ww});
if( $('.tinycanvas') ){ $('.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');
}
}
});
$('div#desktop .tinycanvas')
.tinyscrollbar({ axis: 'x' })
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
// simple dropdown menu
var $sdm = $('.sdm');
if( !$sdm.children('.sdm_o') ){
return;
} else {
$sdm.hover(function(){
$(this).addClass('thmc2');
}, function(){
$(this).removeClass('thmc2');
});
}
$("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;
})
$('.tinycanvas')
.tinyscrollbar({ axis: 'x'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
}
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'
});
$('.tinycanvas')
.tinyscrollbar({ axis: 'x'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
var $sdm = $('.sdm');
if( !$sdm.children('.sdm_o') ){
return;
} else {
$sdm.hover(function(){$(this).addClass('thmc2');}, function(){$(this).removeClass('thmc2');});
}
};
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();
$(this)
.css({'height': h-sh-24})
.tinyscrollbar({ axis: 'y'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
});
$("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);
}
});
});
// 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');
}
}
}
});
});
$('.tinycanvas').each(function(){
var h = $(this).parent().height(),
sh = $(this).siblings('.s_tab').height();
$(this)
.css({'height': h-sh-24})
.tinyscrollbar({ axis: 'y'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
});
// 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();
$('.tinycanvas').tinyscrollbar_update();
return false;
});
});
$('.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);
$('.tinycanvas')
.tinyscrollbar({ axis: 'x'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
}
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";
console.log(o.currentface);
var bindHandlers = function(){
var timeline = new orbitTimeline("timeline");
timeline.initialize();
$('.tinycanvas').tinyscrollbar({ axis: 'x'});
}
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();
// fill width for tiny scroll bar
var e = $('.list_t'),
count = e.length,
baseWidth = e.eq(1).outerWidth(true);
e.parents('.overview').width( baseWidth * count );
$('.tinycanvas')
.tinyscrollbar({ axis: 'x'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
$("#journal_p div.toolbar ul#journal_selection_options a").click(function(){
switch($(this).attr("href")){
case "all":
$("#journal_p div#paper_list a.item_check_status").addClass("checked");
break;
case "none":
$("#journal_p div#paper_list a.item_check_status").removeClass("checked");
break;
}
return false;
})
$("#journal_p div.toolbar ul#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("item_check_status")){
$(this).toggleClass("checked");
}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="item_check_status"><span class="icon-ok"></span></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="item_check_status"><span class="icon-ok"></span></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="item_check_status"><span class="icon-ok"></span></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="item_check_status"><span class="icon-ok"></span></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();
// fill width for tiny scroll bar
var e = $('.s_grid_con'),
count = e.length,
baseWidth = e.eq(1).outerWidth(true);
e.parents('.overview').width( baseWidth * count );
$('.tinycanvas')
.tinyscrollbar({ axis: 'x'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
}
$("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;
}
$('.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;
});
// fill width for tiny scroll bar
var e = $('.list_t'),
count = e.length,
baseWidth = e.eq(1).outerWidth(true);
e.parents('.overview').width( baseWidth * count );
$('.tinycanvas')
.tinyscrollbar({ axis: 'x'})
.find('.scrollbar')
.delay(1500)
.addClass('op00', 500);
}
$("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();
})
})
}
if(!o.desktopData[o.currentface]){
$(o.contentHolder).empty().load("/desktop_appstore/"+target,function(){
widgets();
bindHandlers();
});
}else{
$(o.contentHolder).html(o.desktopData[o.currentface]);
widgets();
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.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');
});
}
}
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"});
}