
// DOM ready!

site.user = {};
site.update_session_status = function () {};
site.check_session_status = function () { };
site.close_edit_popup = function () {
    $j('#simplemodal-container').find('.simplemodal-close').click();
    if( window.on_popup_close )
        on_popup_close();
        
    return;
};
site.open_url = function (href, hide_frames) {
    /* If help frame is showing, hide it. 
    if( $('frm_help') ) {
        if( $('frm_help').style.display=='block' ) {
            $('frm_help').style.display = 'none';
        }
    }*/

    if( !$('frmwa') ) {
        document.location = href;
        return false;
    }


    /* Should we hide any other frames */
    if( hide_frames ) {
        var divs = getChildren($('frm_workarea'), 'gtype', 'frm_container');
        for( var i = 0; i<divs.length; i++ ) {
            divs[i].style.display = 'none';
        }

        var frames = getChildren(document.body, 'frm_type');
        for (var f=0; f<frames.length; f++) {
           frames[f].className = frames[f].className.split(' ')[0];
           frames[f].style.display = 'none';
           if (frames[f].nextSibling.nodeType == 1) frames[f].nextSibling.style.display = 'none';
        }
    }

    $('frmwa').style.display = 'block';
    if( !site.tab_body ) {
        site.tab_body = $('frmwa');
    }
    if( !$('iSrc') ) {
        $('frmwa').innerHTML = '<iframe frameborder="0" name="frmiSrc" id="iSrc" src="'+ href +'"/>';
    }else{
       var ifrm = getChildren(site.tab_body, 'nodeName', 'IFRAME');
       if (!ifrm.length) {
            return;
       }
       ifrm[0].src = href;
    }
};


//<div class="widget movable collapsable removable editable closeconfirm" id="calendarWidget"><div class="widget-header" style="cursor: move;"><strong>KALENDER</strong><span class="widget-menu"><a class="widget-collapselink" title="Collapse this widget" href="#"><img alt="Close" src="/images/widget_arrow_down.png"/></a><a class="widget-editlink" title="Edit this widget" href="#"><img height="16" width="16" alt="Edit" src="/easywidget/edit.png"/></a><a class="widget-closelink" title="Close this widget" href="#"/></span></div><div class="widget-editbox" style="display: none;">Edit the widget here</div><div class="widget-content" id="calendarWidgetContent"><br/></div><div class="widget-bottom"> </div></div>


/* Update family member list on first page */
function updateFamilyMembers() {
    var req = xdbc.addQue(xdbc.cmd('family_03'));
    xdbc.exec(listFamilyMembers);      

    var req = xdbc.addQue(xdbc.cmd('message_02'));
    req.setAttribute('sys:fetch_mailbox', 'new');
    xdbc.exec(updateMailbox);      

};

function listFamilyMembers(resp) {
    var members = resp.selectNodes('//Family/members');
    $j('.familyMembersList').empty();
    for( var i = 0; i<members.length; i++ ) {
        if( members[i].getAttribute('id')!=site.user.id ) {
            
            if( members[i].getAttribute('avatar_type')!='' )
                var img = '<img height="50" src="/?get=image&action=view&prefix=avatar_&y=50&id='+members[i].getAttribute('id')+'" border="0" />';
            else
                var img = '';
                
            if( members[i].getAttribute('lastmove')>0 )
                var login_status = 'Senast inloggad '+eDate.date('Y-m-d H:i', members[i].getAttribute('lastmove'));
            else
                var login_status = 'Har ej loggat in ännu...';
            
            if( site.user.family_creator && site.user.family_creator==1 )
                var edit_button = '<img src="/include/images/16/edit.png" title="Redigera profil" onclick="editFamilyProfile(\'Redigera profil\', \'/?get=family&action=edit_user&oid=4-'+members[i].getAttribute('id')+'\');" class="message" />';
            else
                var edit_button = '';
                
            $j('.familyMembersList').append('<div class="member" uid="'+members[i].getAttribute('id')+'">'+
                                            '<span class="avatar"><a href="?get=profile&action=view&id='+members[i].getAttribute('id')+'">'+img+'</a></span>'+
                                            '<span class="name"><a href="?get=profile&action=view&id='+members[i].getAttribute('id')+'"><b>'+members[i].getAttribute('first_name')+'</b></a></span>'+
                                            '<span class="actions">'+
                                            '<img src="/include/images/16/email.png" title="Skicka meddelande" onclick="sendMessage('+members[i].getAttribute('id')+', \''+members[i].getAttribute('first_name')+'\');" class="message" />'+
                                            edit_button+
                                            '</span><span class="lastlogin"><i>'+login_status+'</i></span></div>');
        }        
    }
};

function calendarFamilyMembers() {
    
    
}

/* Update mailbox list */
function updateMailbox (resp) {
    var msgs = resp.selectNodes('//Quick_Message/mailbox');
    $j('#mailbox').empty();
    if( msgs.length>0 ) {
        for( var i = 0; i<msgs.length; i++ ) {
            if( msgs[i].getAttribute('avatar_type')!='' )
                var img = '<img src="/?get=image&action=view&prefix=avatar_&x=50&id='+msgs[i].getAttribute('creator_uid')+'" />';
            else
                var img = '';
            var message = msgs[i].getAttribute('message');
            $j('#mailbox').append('<div class="message" message_id="'+msgs[i].getAttribute('id')+'">'+
                                            '<span class="avatar" style="width: 50px; height: 50px; overflow: hidden;margin-right: 5px;"><a href="/?get=profile&action=view&id='+msgs[i].getAttribute('creator_uid')+'">'+img+'</a></span>'+
                                            '<span class="name">Fr&aring;n <a href="/?get=profile&action=view&id='+msgs[i].getAttribute('creator_uid')+'">'+msgs[i].getAttribute('first_name')+'</a></span>'+
                                            '<span class="date">'+eDate.date('Y-m-d H:i', msgs[i].getAttribute('created'))+'</span><br />'+
                                            '<span class="message_type"><img title="Meddelande" src="/include/images/16/email.png"></span>'+
                                            '<span class="message">'+message.substring(0, 75)+'... <a href="/?get=quick_message&action=mailbox&id=26-'+msgs[i].getAttribute('id')+'">Läs mer &raquo;</a></span><br style="clear: both;" /></div>');
        }
    }else{
        $j('#mailbox').html('<span class="no_messages">Du har inga nya meddelanden.</span>');
    }
};


function sendMessageRecipients() {
    $j('#recipient').val('');
    $j('.message_recipients').each(function () {
        if( $j(this).attr('checked') ) {
            $j('#recipient').val($j('#recipient').val()+$j(this).val()+',');
        }
    });
}

/* Send a message, first show the modal send message form  */
function sendMessage(uid, name) {
    
    modalLayer('modalSendMessage', true, 380);
    //$j('#recipient').val(uid);
    window.setTimeout(function (){
        $j('.message_recipients').each(function () {
            $j('#recipient').val(uid+',');
            if( $j(this).attr('value')==uid ) {
                this.checked = true;
            } else {
                $j(this).checked = false;
            }
        });
    }, 550);
    
}

function sendMessageForm() { /* And when clicked send, send it(!) */
    var uids = $j('#recipient').val().split(",");
    for( var i = 0; i<uids.length; i++ ) {
        if( uids[i]!="" ) {
            var req = xdbc.addQue(xdbc.cmd('message_01'));
            req.setAttribute('sys:set_force_sms', $j('#force_sms[checked]').val());
            req.setAttribute('sys:set_recipient_uid', uids[i]);
            req.setAttribute('sys:set_message', $j('#message').val());
            xdbc.exec(function () {
                $j('#simplemodal-container').find('.simplemodal-close').click();
            });
        }
    }
}

function PresentWidget(widget) {
    $j.modal($j('widget-description-'+widget), {
        position: ["15%"],
        persist: false,
        containerCss: {
            height: 350,
            width: 400,
            backgroundColor: '#fff'
        },
        overlayCss: {
            backgroundColor: '#000',
            cursor: 'wait'
        },
        onOpen: function (dialog) {
            dialog.container.addClass('widget-description');
            dialog.container.html($j('#'+dialog.data.selector).html());
            dialog.overlay.show();
            dialog.container.show();
        },
        onClose: function (dialog) {
            $j.modal.close(); /* Needed to clean up the dialog elements */
        }
    });
    return false;
};


function AddWidget(widget, placeId, title, expanded){
    if( $j('#'+widget+'Widget').length>0 ) {
        $j('#'+widget+'Widget').show();
        return false;
    }
    
    if( expanded==0 && expanded!=null )
        var expanded_state = 'style="display: none;"';
    else
        var expanded_state = '';
    
    
    $j.fn.AddEasyWidget('<div id="'+widget+'Widget" class="widget movable collapsable removable editable closeconfirm">'
                        +'<div class="widget-header" style="cursor: move;"><strong>'+title+'</strong></div>'
                        +'<div class="widget-editbox" style="display: none;">Edit the widget here</div><div class="widget-content" id="'+widget+'WidgetContent" '+expanded_state+'>'
                        +'<span id="easy'+widget+'" style="position: relative;"><img src="/include/images/spinner.gif" class="widget-loader" align="absmiddle"/> Laddar...</span>'
                        +'</div><div class="widget-bottom">&#160;</div></div>', placeId, { });
    
    try {
        eval('e'+widget);
    } catch(e) {
        var xWdgt = xdbc.load('<data><widgets_e'+ widget +'/></data>');
        xdbc.transform(xWdgt, '/?get=gui&action=xsl_module&module=widgets&package=e'+widget+'&', $('easy'+widget));
    }

    /* Save to server, should really be enough to do this, at the end of the session */
    eDesktop.widget.update_positions();
    return false;
};


/**
 * TODO: modify the above method AddWidget() instead
 *
 */
function AddWidgetDyn(widget, element_id, placeId, title, expanded){
    /**
     * Save the TaskList to DB to achieve ID
     */
    if(element_id == null){
        var widget_id_dyn = widget;
        // Filter out the ID from the widget name
        var no_numbers = /\D/gi;
        element_id = widget_id_dyn.replace(no_numbers, function(sMatch) {
            return sMatch.replace(/./g, "");
        });
    } else {
        var widget_id_dyn = widget+'_'+element_id;
    }
    
    if( $j('#TaskList_'+element_id+'Widget').length>0 ) {
        $j('#TaskList_'+element_id+'Widget').show();
        return false;
    }
    
    if( expanded==0 && expanded!=null )
        var expanded_state = 'style="display: none;"';
    else
        var expanded_state = '';
    
    var todo_list = TodoList.content.selectSingleNode('//todo_list[@id="'+element_id+'"]');
    
    if(!todo_list){
        //console.debug('Hittade ingen TodoList med id: ' + element_id + ' i databasen');
        return;
    }
    var todo_list_title = todo_list.getAttribute('title');
    var todo_list_creator = todo_list.getAttribute('creator_uid');
    
    var items = TodoList.content.selectNodes('//todo_list[@id="'+element_id+'"]/item');
    
    //TodoItem.parent_list = element_id;
    
    var activities_html = "\n";
    if( items.length>0 ) {
        for( var j = 0; j < items.length; j++ ) {
            TodoItem.populate_object_from_xpath(items[j]);
            activities_html += TodoItem.get_html();
        }
    }
    
    
    var widget_properties = '';
    if(todo_list_creator == site.user.id){
        widget_properties += ' removable editable closeconfirm';
    }
    
    // Here goes all html for presenting the Todo List
    // Thsi maybe should be lifted out and put in the TodoList js object
    // FIXME: lift out the in-line css into .css file plz...
    $j.fn.AddEasyWidget('<div id="TaskList_'+element_id+'Widget" style="margin-bottom:8px;" class="widget movable collapsable'+widget_properties+'">'
                            +'<div class="widget-header" style="cursor: move;"><strong>'+todo_list_title + '</strong></div>'
                            +'<div class="widget-editbox" style="margin:0px; padding-left:13px; display: none;">&nbsp;</div>'
                            +'<div style="height:268px;" class="widget-content widget-content-tasklist" id="TaskList_'+element_id+'WidgetContent" '+expanded_state+'>'
                                +'<div id="easy'+widget_id_dyn+'" style="margin-left:12px; margin-top:0px; margin-right:10px; padding-left:4px; height:210px;overflow-y:auto; position: relative; background-color:#FDFDFD;">&nbsp;'+activities_html+'</div>'

                                +'<div style="padding:0px; padding-left:12px; padding-right:10px; margin-bottom:0px;background:#FDFDFD url(/images/widget_middle.gif) repeat-y;">'
                                    +'<form action="" style="margin:0px; margin-top:6px; padding:0px;background-color:#FDFDFD;" onsubmit="return TodoList.add_item(\''+element_id+'\');">'
                                        +'L&auml;gg till ny aktivitet<br>'
                                        +'<input id="todo_caption_'+element_id+'" type="text" style="width:200px;">'
                                        //+'<img onclick="TodoList.add_item(\''+element_id+'\');" src="/include/images/16/button_ok.png"/>'
                                    +'</form>'
                                    +'<div style="margin-top:3px;margin-bottom:0px;float:right;background-color:#FDFDFD;">'
                                        +'<a href="#" onclick="return TodoList.send_as('+element_id+',\'SMS\');"><img border="0" src="/images/site/filetypes.png" title="Skicka den här att-göra-listan som SMS"/></a>'
                                        +'&nbsp; <a href="#" onclick="return TodoList.send_as('+element_id+',\'email\');"><img border="0" src="/include/images/16/mail.png" title="Skicka den här att-göra-listan till din epost"/></a>'
                                    +'</div>'
                                    
                                +'</div>'
                            +'</div>'
                        +'<div class="widget-bottom" style="background:transparent url(/images/widget_bottom1.gif) repeat scroll 0 0;">&#160;</div></div>',
                        
                        placeId, { });


    if(todo_list_creator != site.user.id){
        $j('#TaskList_'+element_id+'Widget > .widget-header > .widget-menu > .widget-collapselink').css('left','-185px');
    }
    
    /* Save to server, should really be enough to do this, at the end of the session */
    // This will update on load time, which isnt really necesary
    //eDesktop.widget.update_positions();
    return false;
};


/**
 * Opens modal dialog containing an iframe.
 *
 * @param title title of window
 * @param url url to iframe content
 * @param full display fullscreen or not.
 * @param modified_height explicit nonstandard height.
 **/
function modalIframe(title, url, full, modified_height) {
    if( full ) {
        if( document.documentElement.clientHeight )
            var height = (document.documentElement.clientHeight-50);
        else
            var height = (document.body.clientHeight-50);
        var width =  (document.body.clientWidth-50);
        var position = ["25px"];
        var extra_class = 'full';
        var custom_style = 'style="height: '+height+';"';
    }else{
        var position = ["15%"];
        var height = 480;
        var width = 450;
        var extra_class = '';
        var custom_style = '';
    }
    
    if( modified_height )
        height = modified_height;
    
    
    $j.modal($j('#modalIframeContainer'), {
        position: position,
        persist: false,
        containerCss: {
            height: height,
            width: width,
            backgroundColor: '#fff'
        },
        overlayCss: {
            backgroundColor: '#000',
            cursor: 'wait'
        },
        onOpen: function (dialog) {
            dialog.container.addClass('widget-description');
                
            dialog.container.html('<div id="modalIframe" class="'+extra_class+'" '+custom_style+'>'
                +'<div class="header '+extra_class+'"><div class="collapse">&#160;</div><strong>'+title+'</strong><a href="#" class="simplemodal-close"><img src="/easywidget/close.png" border="0" /></a></div>'
                +'<iframe src="'+url+'" frameborder="0" class="'+extra_class+'" style="height: '+(height-50)+'px;">&#160;</iframe>'
                +'</div>');
            dialog.overlay.show();
            dialog.container.show();
        },
        onClose: function (dialog) {
            $j.modal.close(); /* Needed to clean up the dialog elements */
        }
    });
    
    return false;
}

function modalLayer(layer, closeable, modified_height) {
    
    if( !modified_height )
        modified_height = 480;
    
    $j.modal($j('#modalLayer'), {
        position: ["15%"],
        persist: false,
        containerCss: {
            height: modified_height,
            width: 450,
            backgroundColor: '#fff'
        },
        overlayCss: {
            backgroundColor: '#000',
            cursor: 'wait'
        },
        onOpen: function (dialog) {
            dialog.container.addClass('widget-description');
            dialog.container.addClass('modalLayer');
            
            dialog.container.html($j('#'+layer).html());
            

            /* Clearing the original container might eventually cause problem */
            $j('#'+layer).html('')
            dialog.overlay.show();
            dialog.container.show();
        },
        onClose: function (dialog) {
            $j('#'+layer).html(dialog.container.html());
            $j.modal.close(); /* Needed to clean up the dialog elements */
        }
    });
    return false;
}


var eDesktop = {
    updating_positions: false,
    container_id:'WidgetStatus',
    widget: {
        positions: false,
        changed: false,
        init: function (container_id) {

            eDesktop.widget.positions = xdbc.load('<data><widgets /></data>');
            
            if(container_id != null && container_id=='todo_lists'){
                var req = xdbc.addQue(xdbc.cmd('todolist_01'));
                req.setAttribute('sys:set_parent_id', family_id);
                //var req = xdbc.addQue(xdbc.cmd('pref_01'));
                req.setAttribute('sys:get_preference', 'TodoListStatus');
                eDesktop.container_id = 'TodoListStatus';
            } else {
                var req = xdbc.addQue(xdbc.cmd('pref_01'));
                eDesktop.container_id = 'WidgetStatus'; // put here for clarity
                req.setAttribute('sys:get_preference', 'WidgetStatus');
            }
            xdbc.exec(eDesktop.widget.init_desktop);
        },
        init_pos: function (widget) { /* First, get the settings from the server */
            if( widget && $(widget) ) {
                $(widget).style.top = '0px';
                $(widget).style.left = '0px';
            }
        },
        init_desktop: function (resp) { /* Draw the widgets onto the desktop */

            //var preferences = resp.selectSingleNode('//preferences[@preference="WidgetStatus"]');
            var preferences = resp.selectSingleNode('//preferences[@preference="'+eDesktop.container_id+'"]');
            
            if( preferences && preferences.getAttribute('value')  ) {
                var xVal = preferences.getAttribute('value')
                try {
                    eDesktop.widget.positions = xdbc.load(xVal);
                    if( !eDesktop.widget.positions.selectSingleNode('//widgets') )
                        eDesktop.widget.positions = xdbc.load('<data><widgets /></data>');
                } catch(e) { }

                
                var widgets = eDesktop.widget.positions.selectNodes('//widget');
                
                if( widgets.length>0 ) {
                    for( var i = 0; i<widgets.length; i++ ) {
                        var placing = 'widget-place-'+widgets[i].getAttribute('column');
                        var xid = widgets[i].getAttribute('xid').replace(/Widget/g, '');
                        
                        if( eDesktop.container_id == 'TodoListStatus'){
                            
                            AddWidgetDyn(xid, null, placing, 'Title', widgets[i].getAttribute('expanded') )
                        } else {
                            AddWidget(xid, 'widget-place-'+widgets[i].getAttribute('column'), $j('#trigger'+widgets[i].getAttribute('xid').replace(/Widget/g, '')).text(), widgets[i].getAttribute('expanded'));
                        }
                        
                        if( widgets[i].getAttribute('expanded')=="0" && widgets[i].getAttribute('expanded')!=null )
                            $j('#'+widgets[i].getAttribute('xid')).find('.widget-collapselink > img').attr('src', '/images/widget_arrow_right.png'); 
                    }
                }   
                
            }
        },
        
        /* Draw the widgets onto the desktop, and fill them with its dynamic content  */
        init_desktop_dyn_content: function (resp) {
            
        },
        
        save_pos: function () { /* Finally, store them to the server, called on unload */
            if( !eDesktop.widget.changed )
                return;

            var req = xdbc.addQue(xdbc.cmd('pref_02'));
            //req.setAttribute('sys:set_preference', 'WidgetStatus');
            req.setAttribute('sys:set_preference', eDesktop.container_id);
            
            if( eDesktop.widget.positions.xml && eDesktop.widget.positions.xml.indexOf('<data>')<0 ) 
                req.setAttribute('sys:set_preference_value', '<data>'+ eDesktop.widget.positions.xml+'</data>');
            else
                req.setAttribute('sys:set_preference_value', eDesktop.widget.positions.xml);
            xdbc.exec();
        },
        
        save_widget_settings: function(widget, column, sort_order, expanded ) { /* Store the widget settings inside a container during runtime. */
            var widgetNode = eDesktop.widget.positions.selectSingleNode('//widgets/widget[@xid="'+widget+'"]');
            if( !widgetNode ) { /* Creata a new node if it doesnt exist. */
                var widgetContainer = eDesktop.widget.positions.selectSingleNode('//widgets');
                if( widgetContainer ) {
                    var widgetNode=xdbc.createNode('widget');
                    widgetNode.setAttribute('xid', widget);
                    widgetContainer.appendChild(widgetNode);
                }else
                    return;
            }
            
            widgetNode.setAttribute('column', column);
            widgetNode.setAttribute('sort_order', sort_order);
            widgetNode.setAttribute('expanded', expanded);
            
        },
        
        update_positions: function () { /* Update Widgets sort order and position in columns */
            eDesktop.updating_positions = true;
            eDesktop.widget.changed = true;
            $j('#widgetContainer > div[column="1"]').attr('sort_order', 0);
            $j('#widgetContainer > div[column="2"]').attr('sort_order', 0);
            $j('#widgetContainer > div[column="3"]').attr('sort_order', 0);
            
            /* Append the widget-nodes to the storage */
            $j.each($j('#widgetContainer > div > div[class*="widget"]'), function (idx, str) {
                if( $j(str).css('display')!='none' ) {
                    
                    var expanded = ($j('#'+$j(str).attr('id')+'Content').css('display')=='none')?'0':'1';
                    eDesktop.widget.save_widget_settings(
                                                         $j(str).attr('id'),
                                                         $j(str).parent().attr('column'),
                                                         $j(str).parent().attr('sort_order'),
                                                         expanded
                                                         );
                    
                    $j(str).attr('sort_order', eDesktop.widget.positions[$j(str).parent().attr('column')]);
                    $j(str).parent().attr('sort_order', (parseInt($j(str).parent().attr('sort_order'))+1));
                }
            });

            /* Clean out the ones that dont exist anymore */
            if( $j(eDesktop.widget.positions).find('widgets > widget').length>0 ) {
                $j(eDesktop.widget.positions).find('widgets > widget').each(function() {
                    if( $j('#'+$j(this).attr('xid')).length==0 || $j('#'+$j(this).attr('xid')).css('display')=='none'  ) {
                        $j(this).remove();
                    }
                });
            }

            /* Save to server, should really be enough to do this, at the end of the session */         
            eDesktop.widget.save_pos();         
        }
    }
}


/* Document ready */
$j(function(){

  // Use i18n settins to show images instead text in menu links
  $j.fn.EasyWidgets({
        effects : {
            effectDuration : 200,
            widgetShow : 'fade',
            widgetHide : 'fade',
            widgetClose : 'fade',
            widgetExtend : 'fade',
            widgetCollapse : 'fade',
            widgetOpenEdit : 'fade',
            widgetCloseEdit : 'fade',
            widgetCancelEdit : 'fade'
        },
        i18n : {
          editText : '<img src="/easywidget/edit.png" alt="Edit" width="16" height="16" />',
          closeText : '<img src="/easywidget/close.png" alt="Close" width="16" height="16" />',
          collapseText : '<img src="/images/widget_arrow_down.png" alt="Close" />',
          cancelEditText : '<img src="/easywidget/edit.png" alt="Edit" width="16" height="16" />',
          extendText : '<img src="/images/widget_arrow_right.png" alt="Close"  />'
        },
        // Register some callbacks
        callbacks : {
            onDragStop: function (str) {
                window.setTimeout(function ()  {
                    eDesktop.widget.update_positions();                    
                },100);
            },
            onExtend: function (str) {
                window.setTimeout(function ()  {
                    eDesktop.widget.update_positions();                    
                },100);
            },
            onCollapse: function (str) {
                window.setTimeout(function ()  {
                    eDesktop.widget.update_positions();                    
                },100);
            },
            onChangePositions : function(str) {
                eDesktop.widget.update_positions();
            },
            onClose : function (str) {
                $j(str).parents('.widget').hide();
                eDesktop.widget.update_positions();
            }
        }
    });
    
    if( $j('#modalCreateFamily').length==1 ) {
        modalLayer('modalCreateFamily');
    }
    
});

function updateUnreadMsgs() {
    var req = xdbc.addQue(xdbc.cmd('message_02'));
    req.setAttribute('get_no_of_unread_msgs', '');
    xdbc.exec(function (resp) {
        unread = resp.selectSingleNode('//Quick_Message');
        if( unread && unread.getAttribute('unread_msgs')>0 ) {
            $j('#unread_msgs').html('('+unread.getAttribute('unread_msgs')+')');
        }
    });      

};

$j(window).ready(function () {
    xdbc.self_init();
    load_session();
    easy_init();
    eSchedule.init();
    initFiles();

    if( $j('#widgetContainer').length==1 && $j('#widgetContainer').attr('container_id')=='todo_lists' ) {
        init_todo_lists();
        TodoList.get_content();
        //eDesktop.widget.init($j('#widgetContainer').attr('container_id'));
        
    } else if( $j('#widgetContainer').length==1 ) {
        eDesktop.widget.init();
    }
    if( $j('.familyMembersList').length==1 ) {
        updateFamilyMembers();
    }
    if( $j('#friends_list').length==1 ) {
        eFriendsInit();
    }
    
    if( $j('#unread_msgs').length==1 ) {
        updateUnreadMsgs();
    }
});

$j(window).unload(function () {
    
    eDesktop.widget.save_pos();
    
});


//eRssInit();


  
  /* Mouse over on application icons */
$j('div.application').hover(
    function() { /* Onmouseover */
        $j(this).addClass('application_hover');
        $j(this).find('div > img').animate({"marginTop": "-10px"}, 250);
  },
  function() { /* Onmouseout */
        $j(this).removeClass('application_hover');
        $j(this).find('div > img').animate({"marginTop": "0px"}, 250);
  }
);

/* Edit family profile */
function editFamilyProfile(title, url) {
    window.on_popup_close = function () {
        updateFamilyMembers();
        window.on_popup_close = null;    
    }
    return modalIframe(title, url, false, 410);    
}


/* Init friends list */
function eFriendsInit() {
    $j.get("/index.php", { get: "family", action: "addressbook", favorites: "1", template: "include" },
    function(data){
        $j('#friends_list').html(data);
    });
}

/* Init RSS Widget */
function eRssInit() {
  var xMod = xdbc.load('<data><widgets_eRss/></data>');
  xdbc.transform(xMod, '/?get=gui&action=xsl_module&module=widgets&package=eRss&/package.xsl', 'newsWidgetContent', 'eRss.init()');
}

/* Init Forecast RSS Widget */
function eRssInit() {
  var xMod = xdbc.load('<data><widgets_eRss/></data>');
  xdbc.transform(xMod, '/?get=gui&action=xsl_module&module=widgets&package=eForecast&/package.xsl', 'ForecastContent', 'eForecast.init()');
}

/* Init Flickr Widget */
function eFlickrInit() {
  var xMod = xdbc.load('<data><widgets_eFlickr/></data>');
  xdbc.transform(xMod, '/?get=gui&action=xsl_module&module=widgets&package=eFlickr&/package.xsl', 'FlickrContent', 'eFlickr.init()');
}

/* Initi TV Widget */
function tvInit() {
  var xMod = xdbc.load('<data><widgets_eRss/></data>');
  xdbc.transform(xMod, '/?get=gui&action=xsl_module&module=widgets&package=eWebTv&/package.xsl', 'eWebTvContent', 'eWebTv.init()');
}


/* Initi TODAY Widget */
var eSchedule = {
    init : function() {
        if( $('calendarWidgetContent') || $('calendarFullContent') ) {
            eSchedule.update();    
        }
        
    },
    update: function () {
        if( $('calendarFullContent') ) {
            $('calendarFullContent').innerHTML = '<div id="eCalendar_base" style="margin-left: 20px; width: '+getDim($('calendarFullContent')).w+'px; height: '+getDim($('calendarFullContent')).h+'px;"><div id="calContainer" otype="drag_origo">&#160;</div></div><br clear="all" />';
            var xMod = xdbc.load('<data><calendar_eCalendar/></data>');
            xdbc.transform(xMod, '/?get=gui&action=xsl_module&module=calendar&package=eCalendar&/package.xsl', 'calContainer', 'eSchedule.calendarStart()');
        }        
    },
    print: function () {
         site.printWindow('', getChild($('eSchedule').parentNode, 'nodeName', 'STYLE').outerHTML, $('eSchedule').innerHTML, 350, 450);
    },
    calendarStart: function () {
        if( $j('#calendarFullContent').length==1 ) {
            if( $j('#calendarFullContent').hasClass('calendarFront') )
                calendar.cal_show.day();
            else
                calendar.cal_show.week();
            
        }
    }
}

function initFiles() {
    if( $('frm_workarea') ) {
        
        site.module = xdbc.ledger.selectSingleNode('//modules/module[@id="files"]');
        var tools = site.module.selectNodes('./toolbar/*');
        $('tool_bar').innerHTML = site.toolbar.render(tools);
        
        var tree = site.tree.xdata = site.module.selectSingleNode("./body/frame[@type='tree']");
        var list = site.list.xdata = site.module.selectSingleNode("./body/frame[@type='list']");

        var xMod = xdbc.load('<data><files_eFiles/></data>');
        xdbc.transform(xMod, '/?get=gui&action=xsl_module&module=files&package=eFiles&/package.xsl', 'frm_workarea', 'startFiles()');
    }        
}

function startFiles() {
    
}
