diff --git a/view/theme/frost-mobile/TODO b/view/theme/frost-mobile/TODO
new file mode 100644
index 000000000..296370d18
--- /dev/null
+++ b/view/theme/frost-mobile/TODO
@@ -0,0 +1,16 @@
+Photo album display?
+
+- The "lock" icon for private items
+ - change it to black?
+ - when clicked, the popup window displays poorly
+
+- Edit photo page: bottom buttons are off-center in Dolphin Mini
+
+- Pager: looks weird when only "prev" is there
+
+- BB code buttons for status updates
+
+- Get "add contact" back on contacts page
+
+- Admin: access to more pages than summary?
+
diff --git a/view/theme/frost-mobile/admin_aside.tpl b/view/theme/frost-mobile/admin_aside.tpl
new file mode 100644
index 000000000..b17addda3
--- /dev/null
+++ b/view/theme/frost-mobile/admin_aside.tpl
@@ -0,0 +1,42 @@
+
+
+{{ for $contacts as $contact }}
+ {{ inc contact_template.tpl }}{{ endinc }}
+{{ endfor }}
+
+
+ {{ for $thread.items as $item }}
+ {{if $item.comment_firstcollapsed}}
+
+ {{endif}}
+
+ {{ inc $item.template }}{{ endinc }}
+
+
+ {{ endfor }}
+
+{{ endfor }}
+
+').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack
+ var notifications_mark = unescape($('
').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack
+ var notifications_empty = unescape($("#nav-notifications-menu").html());
+
+ /* nav update event */
+ $('nav').bind('nav-update', function(e,data){;
+ var invalid = $(data).find('invalid').text();
+ if(invalid == 1) { window.location.href=window.location.href }
+
+ var net = $(data).find('net').text();
+ if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') }
+ $('#net-update').html(net);
+
+ var home = $(data).find('home').text();
+ if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
+ $('#home-update').html(home);
+
+ var intro = $(data).find('intro').text();
+ if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') }
+ $('#intro-update').html(intro);
+
+ var mail = $(data).find('mail').text();
+ if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') }
+ $('#mail-update').html(mail);
+
+ var intro = $(data).find('intro').text();
+ if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') }
+ $('#intro-update-li').html(intro);
+
+ var mail = $(data).find('mail').text();
+ if(mail == 0) { mail = ''; $('#mail-update-li').removeClass('show') } else { $('#mail-update-li').addClass('show') }
+ $('#mail-update-li').html(mail);
+
+ var eNotif = $(data).find('notif')
+
+ if (eNotif.children("note").length==0){
+ $("#nav-notifications-menu").html(notifications_empty);
+ } else {
+ nnm = $("#nav-notifications-menu");
+ nnm.html(notifications_all + notifications_mark);
+ //nnm.attr('popup','true');
+ eNotif.children("note").each(function(){
+ e = $(this);
+ text = e.text().format("
"+e.attr('name')+" ");
+ html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen'));
+ nnm.append(html);
+ });
+ }
+ notif = eNotif.attr('count');
+ if (notif>0){
+ $("#nav-notifications-linkmenu").addClass("on");
+ } else {
+ $("#nav-notifications-linkmenu").removeClass("on");
+ }
+ if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') }
+ $('#notify-update').html(notif);
+
+ var eSysmsg = $(data).find('sysmsgs');
+ eSysmsg.children("notice").each(function(){
+ text = $(this).text();
+ $.jGrowl(text, { sticky: true, theme: 'notice', life: 1000 });
+ });
+ eSysmsg.children("info").each(function(){
+ text = $(this).text();
+ $.jGrowl(text, { sticky: false, theme: 'info', life: 1000 });
+ });
+
+ });
+
+
+ NavUpdate();
+ // Allow folks to stop the ajax page updates with the pause/break key
+/* $(document).keydown(function(event) {
+ if(event.keyCode == '8') {
+ var target = event.target || event.srcElement;
+ if (!/input|textarea/i.test(target.nodeName)) {
+ return false;
+ }
+ }
+ if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) {
+ event.preventDefault();
+ if(stopped == false) {
+ stopped = true;
+ if (event.ctrlKey) {
+ totStopped = true;
+ }
+ $('#pause').html('
');
+ } else {
+ unpause();
+ }
+ } else {
+ if (!totStopped) {
+ unpause();
+ }
+ }
+ });*/
+
+
+ });
+
+ function NavUpdate() {
+
+ if(! stopped) {
+ var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : '');
+ $.get(pingCmd,function(data) {
+ $(data).find('result').each(function() {
+ // send nav-update event
+ $('nav').trigger('nav-update', this);
+
+
+ // start live update
+
+
+
+ if($('#live-network').length) { src = 'network'; liveUpdate(); }
+ if($('#live-profile').length) { src = 'profile'; liveUpdate(); }
+ if($('#live-community').length) { src = 'community'; liveUpdate(); }
+ if($('#live-notes').length) { src = 'notes'; liveUpdate(); }
+ if($('#live-display').length) {
+ if(liking) {
+ liking = 0;
+ window.location.href=window.location.href
+ }
+ }
+ if($('#live-photos').length) {
+ if(liking) {
+ liking = 0;
+ window.location.href=window.location.href
+ }
+ }
+
+
+
+
+ });
+ }) ;
+ }
+ timer = setTimeout(NavUpdate,updateInterval);
+ }
+
+ function liveUpdate() {
+ if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; }
+ if(($('.comment-edit-text-full').length) || (in_progress)) {
+ if(livetime) {
+ clearTimeout(livetime);
+ }
+ livetime = setTimeout(liveUpdate, 10000);
+ return;
+ }
+ if(livetime != null)
+ livetime = null;
+
+ prev = 'live-' + src;
+
+ in_progress = true;
+ var udargs = ((netargs.length) ? '/' + netargs : '');
+ var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0);
+
+ $.get(update_url,function(data) {
+ in_progress = false;
+ // $('.collapsed-comments',data).each(function() {
+ // var ident = $(this).attr('id');
+ // var is_hidden = $('#' + ident).is(':hidden');
+ // if($('#' + ident).length) {
+ // $('#' + ident).replaceWith($(this));
+ // if(is_hidden)
+ // $('#' + ident).hide();
+ // }
+ //});
+
+ // add a new thread
+
+ $('.tread-wrapper',data).each(function() {
+ var ident = $(this).attr('id');
+
+ if($('#' + ident).length == 0 && profile_page == 1) {
+ $('img',this).each(function() {
+ $(this).attr('src',$(this).attr('dst'));
+ });
+ $('#' + prev).after($(this));
+ }
+ else {
+ $('img',this).each(function() {
+ $(this).attr('src',$(this).attr('dst'));
+ });
+ $('#' + ident).replaceWith($(this));
+ }
+ prev = ident;
+ });
+
+ // reset vars for inserting individual items
+
+ /*prev = 'live-' + src;
+
+ $('.wall-item-outside-wrapper',data).each(function() {
+ var ident = $(this).attr('id');
+
+ if($('#' + ident).length == 0 && prev != 'live-' + src) {
+ $('img',this).each(function() {
+ $(this).attr('src',$(this).attr('dst'));
+ });
+ $('#' + prev).after($(this));
+ }
+ else {
+ $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago'));
+ if($('#' + ident + ' ' + '.comment-edit-text-empty').length)
+ $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper'));
+ $('#' + ident + ' ' + '.hide-comments-total').replaceWith($(this).find('.hide-comments-total'));
+ $('#' + ident + ' ' + '.wall-item-like').replaceWith($(this).find('.wall-item-like'));
+ $('#' + ident + ' ' + '.wall-item-dislike').replaceWith($(this).find('.wall-item-dislike'));
+ $('#' + ident + ' ' + '.my-comment-photo').each(function() {
+ $(this).attr('src',$(this).attr('dst'));
+ });
+ }
+ prev = ident;
+ });*/
+
+ $('.like-rotator').hide();
+ if(commentBusy) {
+ commentBusy = false;
+ $('body').css('cursor', 'auto');
+ }
+ /* autocomplete @nicknames */
+ $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl");
+ });
+ }
+
+ function imgbright(node) {
+ $(node).removeClass("drophide").addClass("drop");
+ }
+
+ function imgdull(node) {
+ $(node).removeClass("drop").addClass("drophide");
+ }
+
+ // Since our ajax calls are asynchronous, we will give a few
+ // seconds for the first ajax call (setting like/dislike), then
+ // run the updater to pick up any changes and display on the page.
+ // The updater will turn any rotators off when it's done.
+ // This function will have returned long before any of these
+ // events have completed and therefore there won't be any
+ // visible feedback that anything changed without all this
+ // trickery. This still could cause confusion if the "like" ajax call
+ // is delayed and NavUpdate runs before it completes.
+
+ function dolike(ident,verb) {
+ unpause();
+ $('#like-rotator-' + ident.toString()).show();
+ $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate );
+// if(timer) clearTimeout(timer);
+// timer = setTimeout(NavUpdate,3000);
+ liking = 1;
+ }
+
+ function dostar(ident) {
+ ident = ident.toString();
+ //$('#like-rotator-' + ident).show();
+ $.get('starred/' + ident, function(data) {
+ if(data.match(/1/)) {
+ $('#starred-' + ident).addClass('starred');
+ $('#starred-' + ident).removeClass('unstarred');
+ $('#star-' + ident).addClass('hidden');
+ $('#unstar-' + ident).removeClass('hidden');
+ }
+ else {
+ $('#starred-' + ident).addClass('unstarred');
+ $('#starred-' + ident).removeClass('starred');
+ $('#star-' + ident).removeClass('hidden');
+ $('#unstar-' + ident).addClass('hidden');
+ }
+ //$('#like-rotator-' + ident).hide();
+ });
+ }
+
+ function getPosition(e) {
+ var cursor = {x:0, y:0};
+ if ( e.pageX || e.pageY ) {
+ cursor.x = e.pageX;
+ cursor.y = e.pageY;
+ }
+ else {
+ if( e.clientX || e.clientY ) {
+ cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
+ cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
+ }
+ else {
+ if( e.x || e.y ) {
+ cursor.x = e.x;
+ cursor.y = e.y;
+ }
+ }
+ }
+ return cursor;
+ }
+
+ var lockvisible = false;
+
+ function lockview(event,id) {
+ event = event || window.event;
+ cursor = getPosition(event);
+ if(lockvisible) {
+ lockviewhide();
+ }
+ else {
+ lockvisible = true;
+ $.get('lockview/' + id, function(data) {
+ $('#panel').html(data);
+ $('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5});
+ $('#panel').show();
+ });
+ }
+ }
+
+ function lockviewhide() {
+ lockvisible = false;
+ $('#panel').hide();
+ }
+
+ function post_comment(id) {
+ unpause();
+ commentBusy = true;
+ $('body').css('cursor', 'wait');
+ $("#comment-preview-inp-" + id).val("0");
+ $.post(
+ "item",
+ $("#comment-edit-form-" + id).serialize(),
+ function(data) {
+ if(data.success) {
+ $("#comment-edit-wrapper-" + id).hide();
+ $("#comment-edit-text-" + id).val('');
+ var tarea = document.getElementById("comment-edit-text-" + id);
+ if(tarea)
+ commentClose(tarea,id);
+ if(timer) clearTimeout(timer);
+ timer = setTimeout(NavUpdate,10);
+ }
+ if(data.reload) {
+ window.location.href=data.reload;
+ }
+ },
+ "json"
+ );
+ return false;
+ }
+
+
+ function preview_comment(id) {
+ $("#comment-preview-inp-" + id).val("1");
+ $("#comment-edit-preview-" + id).show();
+ $.post(
+ "item",
+ $("#comment-edit-form-" + id).serialize(),
+ function(data) {
+ if(data.preview) {
+
+ $("#comment-edit-preview-" + id).html(data.preview);
+ $("#comment-edit-preview-" + id + " a").click(function() { return false; });
+ }
+ },
+ "json"
+ );
+ return true;
+ }
+
+
+
+ function preview_post() {
+ $("#jot-preview").val("1");
+ $("#jot-preview-content").show();
+ tinyMCE.triggerSave();
+ $.post(
+ "item",
+ $("#profile-jot-form").serialize(),
+ function(data) {
+ if(data.preview) {
+ $("#jot-preview-content").html(data.preview);
+ $("#jot-preview-content" + " a").click(function() { return false; });
+ }
+ },
+ "json"
+ );
+ $("#jot-preview").val("0");
+ return true;
+ }
+
+
+ function unpause() {
+ // unpause auto reloads if they are currently stopped
+ totStopped = false;
+ stopped = false;
+ $('#pause').html('');
+ }
+
+
+ function bin2hex(s){
+ // Converts the binary representation of data to hex
+ //
+ // version: 812.316
+ // discuss at: http://phpjs.org/functions/bin2hex
+ // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+ // + bugfixed by: Onno Marsman
+ // + bugfixed by: Linuxworld
+ // * example 1: bin2hex('Kev');
+ // * returns 1: '4b6576'
+ // * example 2: bin2hex(String.fromCharCode(0x00));
+ // * returns 2: '00'
+ var v,i, f = 0, a = [];
+ s += '';
+ f = s.length;
+
+ for (i = 0; i
' + data.desc + ' ' + data.version + '
' + data.credits + '
');
+ });
+
+}
diff --git a/view/theme/frost-mobile/js/theme.js b/view/theme/frost-mobile/js/theme.js
new file mode 100644
index 000000000..d3298d345
--- /dev/null
+++ b/view/theme/frost-mobile/js/theme.js
@@ -0,0 +1,224 @@
+$(document).ready(function() {
+
+/*$('html').click(function() { $("#nav-notifications-menu" ).hide(); });*/
+
+ $('.group-edit-icon').hover(
+ function() {
+ $(this).addClass('icon'); $(this).removeClass('iconspacer');},
+ function() {
+ $(this).removeClass('icon'); $(this).addClass('iconspacer');}
+ );
+
+ $('.sidebar-group-element').hover(
+ function() {
+ id = $(this).attr('id');
+ $('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');},
+
+ function() {
+ id = $(this).attr('id');
+ $('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');}
+ );
+
+
+ $('.savedsearchdrop').hover(
+ function() {
+ $(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');},
+ function() {
+ $(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');}
+ );
+
+ $('.savedsearchterm').hover(
+ function() {
+ id = $(this).attr('id');
+ $('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');},
+
+ function() {
+ id = $(this).attr('id');
+ $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');}
+ );
+
+ $(".popupbox").click(function () {
+ var parent = $( $(this).attr('href') ).parent();
+ if (parent.css('display') == 'none') {
+ parent.show();
+ } else {
+ parent.hide();
+ }
+ return false;
+ });
+
+});
+
+
+function insertFormatting(comment,BBcode,id) {
+
+ var tmpStr = $("#comment-edit-text-" + id).val();
+ if(tmpStr == comment) {
+ tmpStr = "";
+ $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
+ $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
+ openMenu("comment-edit-submit-wrapper-" + id);
+ $("#comment-edit-text-" + id).val(tmpStr);
+ }
+
+ textarea = document.getElementById("comment-edit-text-" +id);
+ if (document.selection) {
+ textarea.focus();
+ selected = document.selection.createRange();
+ if (BBcode == "url"){
+ selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
+ } else
+ selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
+ } else if (textarea.selectionStart || textarea.selectionStart == "0") {
+ var start = textarea.selectionStart;
+ var end = textarea.selectionEnd;
+ if (BBcode == "url"){
+ textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
+ } else
+ textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
+ }
+ return true;
+}
+
+function cmtBbOpen(id) {
+ $(".comment-edit-bb-" + id).show();
+}
+function cmtBbClose(id) {
+ $(".comment-edit-bb-" + id).hide();
+}
+
+
+
+
+// TinyMCE stuff
+// Needs to be in "jot-header.tpl" if the "$editselect" variable is used
+
+var editor=false;
+var textlen = 0;
+var plaintext = 'none';//'$editselect';
+
+function initEditor(cb){
+ if (editor==false){
+// $("#profile-jot-text-loading").show();
+ if(plaintext == 'none') {
+// $("#profile-jot-text-loading").hide();
+ $("#profile-jot-text").css({ 'height': 200, 'color': '#000' });
+ $("#profile-jot-text").contact_autocomplete(baseurl+"/acl");
+ editor = true;
+/* $("a#jot-perms-icon").fancybox({
+ 'transitionIn' : 'none',
+ 'transitionOut' : 'none'
+ });*/
+ $("a#jot-perms-icon, a#settings-default-perms-menu").click(function () {
+ var parent = $("#profile-jot-acl-wrapper").parent();
+ if (parent.css('display') == 'none') {
+ parent.show();
+ } else {
+ parent.hide();
+ }
+// $("#profile-jot-acl-wrapper").parent().toggle();
+ return false;
+ });
+ $(".jothidden").show();
+ if (typeof cb!="undefined") cb();
+ return;
+ }
+/* tinyMCE.init({
+ theme : "advanced",
+ mode : "specific_textareas",
+ editor_selector: $editselect,
+ auto_focus: "profile-jot-text",
+ plugins : "bbcode,paste,autoresize, inlinepopups",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_blockformats : "blockquote,code",
+ gecko_spellcheck : true,
+ paste_text_sticky : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ convert_urls: false,
+ content_css: "$baseurl/view/custom_tinymce.css",
+ theme_advanced_path : false,
+ file_browser_callback : "fcFileBrowser",
+ setup : function(ed) {
+ cPopup = null;
+ ed.onKeyDown.add(function(ed,e) {
+ if(cPopup !== null)
+ cPopup.onkey(e);
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ var txt = tinyMCE.activeEditor.getContent();
+ match = txt.match(/@([^ \n]+)$/);
+ if(match!==null) {
+ if(cPopup === null) {
+ cPopup = new ACPopup(this,baseurl+"/acl");
+ }
+ if(cPopup.ready && match[1]!==cPopup.searchText) cPopup.search(match[1]);
+ if(! cPopup.ready) cPopup = null;
+ }
+ else {
+ if(cPopup !== null) { cPopup.close(); cPopup = null; }
+ }
+
+ textlen = txt.length;
+ if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
+ $('#profile-jot-desc').html(ispublic);
+ }
+ else {
+ $('#profile-jot-desc').html(' ');
+ }
+
+ //Character count
+
+ if(textlen <= 140) {
+ $('#character-counter').removeClass('red');
+ $('#character-counter').removeClass('orange');
+ $('#character-counter').addClass('grey');
+ }
+ if((textlen > 140) && (textlen <= 420)) {
+ $('#character-counter').removeClass('grey');
+ $('#character-counter').removeClass('red');
+ $('#character-counter').addClass('orange');
+ }
+ if(textlen > 420) {
+ $('#character-counter').removeClass('grey');
+ $('#character-counter').removeClass('orange');
+ $('#character-counter').addClass('red');
+ }
+ $('#character-counter').text(textlen);
+ });
+
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ $("#profile-jot-text-loading").hide();
+ $(".jothidden").show();
+ if (typeof cb!="undefined") cb();
+ });
+
+ }
+ });
+ editor = true;
+ // setup acl popup
+ $("a#jot-perms-icon").fancybox({
+ 'transitionIn' : 'elastic',
+ 'transitionOut' : 'elastic'
+ }); */
+ } else {
+ if (typeof cb!="undefined") cb();
+ }
+}
+
+function enableOnUser(){
+ if (editor) return;
+ $(this).val("");
+ initEditor();
+}
+
diff --git a/view/theme/frost-mobile/js/theme.js.old b/view/theme/frost-mobile/js/theme.js.old
new file mode 100644
index 000000000..03ee67622
--- /dev/null
+++ b/view/theme/frost-mobile/js/theme.js.old
@@ -0,0 +1,121 @@
+$(document).ready(function() {
+
+ $.ajaxSetup({
+ cache: false
+ });
+
+
+ $('.system-menu-link').click(function() {
+ handleNavMenu('#system-menu-list');
+ return false;
+ });
+
+ $('.contacts-menu-link').click(function() {
+ handleNavMenu('#contacts-menu-list');
+ return false;
+ });
+
+ $('.network-menu-link').click(function() {
+ handleNavMenu('#network-menu-list');
+ return false;
+ });
+
+/* $('.nav-load-page-link').click(function() {
+ getPageContent( $(this).attr('href') );
+ hideNavMenu( '#' + $(this).closest('ul').attr('id') );
+ return false;
+ });*/
+
+/* $('#nav-network-link').click(function() {
+ getPageContent('/network', '#network-menu-list');
+ return false;
+ });
+
+ $('#nav-home-link').click(function() {
+
+ var username = $('#site-location').text();
+ username = username.substring(0, username.indexOf('@'));
+
+ getPageContent('/profile/' + username, '#network-menu-list');
+
+ return false;
+ });
+
+ $('#nav-community-link').click(function() {
+ getPageContent('/community', '#network-menu-list');
+ return false;
+ });
+
+ $('#nav-messages-link').click(function() {
+ getPageContent('/message');
+ return false;
+ });
+
+ $('#nav-contacts-link').click(function() {
+ getPageContent('/contacts', '#contacts-menu-list');
+ return false;
+ });*/
+
+});
+
+$(document).mouseup(function (clickPos) {
+
+ var sysMenu = $("#system-menu-list");
+ var sysMenuLink = $(".system-menu-link");
+ var contactsMenu = $("#contacts-menu-list");
+ var contactsMenuLink = $(".contacts-menu-link");
+ var networkMenu = $("#network-menu-list");
+ var networkMenuLink = $(".network-menu-link");
+
+ if( !sysMenu.is(clickPos.target) && !sysMenuLink.is(clickPos.target) && sysMenu.has(clickPos.target).length === 0) {
+ hideNavMenu("#system-menu-list");
+ }
+ if( !contactsMenu.is(clickPos.target) && !contactsMenuLink.is(clickPos.target) && contactsMenu.has(clickPos.target).length === 0) {
+ hideNavMenu("#contacts-menu-list");
+ }
+ if( !networkMenu.is(clickPos.target) && !networkMenuLink.is(clickPos.target) && networkMenu.has(clickPos.target).length === 0) {
+ hideNavMenu("#network-menu-list");
+ }
+});
+
+
+function getPageContent(url) {
+
+ var pos = $('.main-container').position();
+
+ $('.main-container').css('margin-left', pos.left);
+ $('.main-content-container').hide(0, function () {
+ $('.main-content-loading').show(0);
+ });
+
+ $.get(url, function(html) {
+ console.log($('.main-content-container').html());
+ $('.main-content-container').html( $('.main-content-container', html).html() );
+ console.log($('.main-content-container').html());
+ $('.main-content-loading').hide(function() {
+ $('.main-content-container').fadeIn(800,function() {
+ $('.main-container').css('margin-left', 'auto'); // This sucks -- if the CSS specification changes, this will be wrong
+ });
+ });
+ });
+}
+
+function handleNavMenu(menuID) {
+ if( $(menuID).hasClass('menu-visible') ) {
+ hideNavMenu(menuID);
+ }
+ else {
+ showNavMenu(menuID);
+ }
+}
+
+function showNavMenu(menuID) {
+ $(menuID).show();
+ $(menuID).addClass('menu-visible');
+}
+
+function hideNavMenu(menuID) {
+ $(menuID).hide();
+ $(menuID).removeClass('menu-visible');
+}
+
diff --git a/view/theme/frost-mobile/lang_selector.tpl b/view/theme/frost-mobile/lang_selector.tpl
new file mode 100644
index 000000000..e777a0a86
--- /dev/null
+++ b/view/theme/frost-mobile/lang_selector.tpl
@@ -0,0 +1,10 @@
+
+
+
+
diff --git a/view/theme/frost-mobile/lock.cur b/view/theme/frost-mobile/lock.cur
new file mode 100644
index 000000000..892c5e851
Binary files /dev/null and b/view/theme/frost-mobile/lock.cur differ
diff --git a/view/theme/frost-mobile/login-bg.gif b/view/theme/frost-mobile/login-bg.gif
new file mode 100644
index 000000000..cde836c89
Binary files /dev/null and b/view/theme/frost-mobile/login-bg.gif differ
diff --git a/view/theme/frost-mobile/login-style.css b/view/theme/frost-mobile/login-style.css
new file mode 100644
index 000000000..5283c584b
--- /dev/null
+++ b/view/theme/frost-mobile/login-style.css
@@ -0,0 +1,131 @@
+html {
+ width: 100%;
+}
+
+body {
+ font-family: helvetica,arial,freesans,clean,sans-serif;
+ font-size: 16px;
+ background-color: #ffffff;
+ color: #505050;/* ZP Change*/
+ margin: 0px;
+}
+
+a, a:visited, a:link { color: #3465a4; text-decoration: none; }
+a:hover {text-decoration: underline; }
+
+img { border :0px; }
+
+.login-button {
+ margin-top: 90px;
+ margin-left: auto;
+ margin-right: auto;
+
+}
+
+img.login-button-image {
+ max-width: 300px;
+}
+
+.section-wrapper {
+ position: relative;
+ width: 300px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.login-form {
+ margin-top: 40px;
+}
+
+.field {
+ position: relative;
+ margin-bottom: 15px;
+}
+
+.field label {
+ margin-left: 25px;
+ font-weight: 700;
+}
+
+.field input {
+ font-size: 18px;
+ width: 200px;
+ margin-left: 50px;
+}
+
+#login_openid {
+ margin-top: 50px;
+}
+
+#login_openid input {
+ background: url(login-bg.gif) no-repeat;
+ background-position: 0 50%;
+ width: 182px;
+ padding-left: 18px;
+}
+
+#login-footer {
+ margin-top: 10px;
+ text-align: center;
+}
+
+.login-extra-links, .agreement {
+ font-size: 14px;
+}
+
+#login-submit-button, #register-submit-button, #lostpass-submit-button {
+ font-size: 20px;
+ padding: 0.5em 1em;
+}
+
+#register-link {
+ margin-right: 100px;
+}
+
+.register-form {
+ margin-top: 15px;
+}
+
+.register-form h2, .lostpass-form h2 {
+ text-align: center;
+}
+
+.error-message {
+ width: 270px;
+ color: #FF0000;
+ font-size: 1.1em;
+ text-align: justify;
+ border: 1px solid #FF8888;
+ background-color: #FFEEEE;
+ padding: 10px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.register-explain-wrapper {
+ width: 290px;
+ text-align: justify;
+ font-size: 14px;
+ margin-left: 5px;
+}
+
+#register-footer {
+ margin-top: 60px;
+ text-align: center;
+}
+
+.lostpass-form {
+ margin-top: 100px;
+}
+
+#lostpass-desc {
+ width: 290px;
+ margin-left: 5px;
+ margin-bottom: 30px;
+ text-align: justify;
+ font-size: 14px;
+}
+
+#login-submit-wrapper {
+ text-align: center;
+}
diff --git a/view/theme/frost-mobile/login.tpl b/view/theme/frost-mobile/login.tpl
new file mode 100644
index 000000000..c611989df
--- /dev/null
+++ b/view/theme/frost-mobile/login.tpl
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/view/theme/frost-mobile/lostpass.tpl b/view/theme/frost-mobile/lostpass.tpl
new file mode 100644
index 000000000..583e3dbaf
--- /dev/null
+++ b/view/theme/frost-mobile/lostpass.tpl
@@ -0,0 +1,21 @@
+
diff --git a/view/theme/frost-mobile/moderated_comment.tpl b/view/theme/frost-mobile/moderated_comment.tpl
new file mode 100755
index 000000000..b0451c8c6
--- /dev/null
+++ b/view/theme/frost-mobile/moderated_comment.tpl
@@ -0,0 +1,61 @@
+
diff --git a/view/theme/frost-mobile/msg-header.tpl b/view/theme/frost-mobile/msg-header.tpl
new file mode 100644
index 000000000..003c86922
--- /dev/null
+++ b/view/theme/frost-mobile/msg-header.tpl
@@ -0,0 +1,97 @@
+
+
+
+
+
+
diff --git a/view/theme/frost-mobile/nav.tpl b/view/theme/frost-mobile/nav.tpl
new file mode 100644
index 000000000..8b5fd8911
--- /dev/null
+++ b/view/theme/frost-mobile/nav.tpl
@@ -0,0 +1,131 @@
+
+
+
+
+
+ {{ if $nav.login }}$nav.login.1 {{ endif }}
+
+
+
+
+
+
+ {{ if $nav.notifications }}
+
+
+ {{ endif }}
+
+
+
+
+ {{ if $nav.messages }}
+
+
+ {{ endif }}
+
+
+
+
+ {{ if $nav.register }}$nav.register.1 {{ endif }}
+
+ {{ if $nav.manage }}$nav.manage.1 {{ endif }}
+
+
+ $banner
+
+
+
diff --git a/view/theme/frost-mobile/photo_edit.tpl b/view/theme/frost-mobile/photo_edit.tpl
new file mode 100644
index 000000000..5631b2eba
--- /dev/null
+++ b/view/theme/frost-mobile/photo_edit.tpl
@@ -0,0 +1,53 @@
+
+
+
+
diff --git a/view/theme/frost-mobile/photo_view.tpl b/view/theme/frost-mobile/photo_view.tpl
new file mode 100644
index 000000000..92e115487
--- /dev/null
+++ b/view/theme/frost-mobile/photo_view.tpl
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ {{ if $prevlink }}
{{ endif }}
+ {{ if $nextlink }}
{{ endif }}
+
+
+
+
$desc
+{{ if $tags }}
+
$tags.0
+
$tags.1
+{{ endif }}
+{{ if $tags.2 }}
{{ endif }}
+
+{{ if $edit }}
+$edit
+{{ else }}
+
+{{ if $likebuttons }}
+
+ $likebuttons
+ $like
+ $dislike
+
+{{ endif }}
+
+$comments
+
+$paginate
+{{ endif }}
+
diff --git a/view/theme/frost-mobile/photos_upload.tpl b/view/theme/frost-mobile/photos_upload.tpl
new file mode 100644
index 000000000..4b8bd90d2
--- /dev/null
+++ b/view/theme/frost-mobile/photos_upload.tpl
@@ -0,0 +1,50 @@
+
$pagename
+
+
$usage
+
+