ua = $.browser status_editor = { active: false, menu_active: false, status_text: '', status_blur: false, status_reblur: false, setup: function(initial_status) { this.status_text=initial_status; }, reset: function() { $('#edit_status_text').val(''); return false; }, show: function() { if(!this.active) { $('#profile_status').hide(); $('#profile_empty_status').hide(); this.hide_menu(); $('#status_editor').show(); if($('#status_text').text() != '') { this.status_text = $('#status_text').text(); } var prefix = $('#edit_status_text').attr('statusprefix'); $('#edit_status_text').val(this.status_text); if($('#edit_status_text').val() == '' && prefix) { $('#edit_status_text').val(prefix); } if(prefix && $('#edit_status_text').val().substring(0,prefix.length)==prefix) { obj = $('#edit_status_text') obj.caret(prefix.length,obj.val().length) } else { $('#edit_status_text').select(); } this.status_blur=true; this.active=true; } else { $('#edit_status_text').focus(); } return false; }, hide: function(){ if(!this.active) { return; } this.active=false; this.status_blur=false; $('#status_editor').hide(); $((this.status_text!='')?'#profile_status':'#profile_empty_status').show(); return false; }, toggle_menu: function(event) { if(ua.safari||ua.msie) { this.status_reblur=true; } if(this.menu_active) { return this.hide_menu(); } else { return this.show_menu(); } }, show_menu: function(event) { this.menu_active=true; $('#edit_status_select > div').mouseover(this.menuitem_mouseover); $('#edit_status_select > div').mouseout(this.menuitem_mouseout); $('#edit_status_select > div').mousedown(this.menuitem_mousedown); $('#edit_status_text').css({ borderBottomColor: '#fff' }); $('#edit_status_toggle').css({ backgroundImage: 'url(/images/icons/status_on.gif)', backgroundColor: '#fff', borderBottomColor: '#fff' }); $('#edit_status_select').css({ display: 'block' }); return false; }, hide_menu: function() { this.menu_active=false; $('#edit_status_text').css({ borderBottom: '1px solid #D0D8E0' }); $('#edit_status_toggle').css({ backgroundImage: 'url(/images/icons/status_off.gif)', backgroundColor: '#D8DFEA', borderBottom: '1px solid #D0D8E0' }); $('#edit_status_select').hide(); return false; }, status_select: function(text) { if(ua.safari||ua.msie) { this.status_reblur=true; } this.hide_menu(); $('#edit_status_text').val(text); $('#edit_status_text').focus(); $('#edit_status_text').select(); }, blur: function() { if(this.status_reblur) { $('#edit_status_text').focus(); this.status_reblur = false; return false; } if(this.status_blur) { var obj=$('#edit_status_text'); if(obj.val()!=this.status_text&&obj.attr('statusprefix')!=obj.val()) { this.submit_status_set($('#edit_status_text').val()); } else { this.hide(); } } if (this.menu_active) { this.hide_menu(); } return true; }, onfocus: function(obj) { var prefix=obj.getAttribute('statusprefix')||''; if(obj.value==prefix||obj.value=='') { obj.value=prefix; $(obj).caret(prefix.length); } }, status_set: function(status,markup) { this.status_text = status.replace(//, "")||''; this.reset(); this.hide(); if(status!=null&&status!='') { $('#status_text').html(markup); $('#status_time').html(status_string_table.sp01); } else { $('#status_text').html(status_string_table.sp02); } }, submit_status_set: function(status) { if(status==null||status=='') { return; } $.ajax({ type: "POST", url: "ajax-saveuserstatus.html", data: {userstatus: status}, dataType: "xml", error: this.submit_status_set_error, success: this.submit_status_set_success, seobj: this}); return false; }, submit_status_set_error: function (XMLHttpRequest, textStatus, errorThrown) { this.seobj.status_set(null); }, submit_status_set_success: function (data) { if ($("status", data).text() == "ok") { this.seobj.status_set($("status", data).text(),$("statustext", data).text()); this.seobj.hide(); } else if ($(data).find('status')[0].firstChild.data == "error") { alert("Unfortunately an error occured (" + $(data).find('message')[0].firstChild.data + ")!"); return; } }, status_cleared: function() { this.status_text=''; $('#status_text').html(''); this.hide(); $('#status_blank_nag').html(status_string_table.sp03); setTimeout(function() { $('#status_blank_nag').html(status_string_table.sp04); }.bind(this),2500); }, submit_status_clear: function() { this.status_blur = false; $.ajax({ type: "POST", url: "ajax-saveuserstatus.html", data: {clear: '1'}, error: this.submit_status_clear_error, success: this.submit_status_clear_success, seobj: this}); return false; }, submit_status_clear_error: function() { this.seobj.status_cleared(); this.seobj.status_set(null); }, submit_status_clear_success: function() { this.seobj.status_cleared(); }, handle_key_press: function(event) { event=event||window.event; key_code=event.keyCode||event.which; if(key_code==13) { if($('#edit_status_text').val()!='') this.submit_status_set($('#edit_status_text').val()); return false; } if(key_code==27){ this.hide(); return false; } return true; }, menuitem_mouseover: function () { $(this).addClass('selected'); }, menuitem_mouseout: function () { $(this).removeClass('selected'); }, menuitem_mousedown: function () { // status_editor.status_reblur=true; status_editor.status_select($(this).text()); return false; } } function copy_properties(u,v){for(var k in v){u[k]=v[k];} if(v.hasOwnProperty&&v.hasOwnProperty('toString')&&(v.toString!==undefined)&&(u.toString!==v.toString)){u.toString=v.toString;} return u;} function click_trampoline() { return status_editor.hide_menu(); } var status_page_editor = copy_properties({},status_editor); copy_properties(status_page_editor,{ parent:status_editor, setup: function(initial_text){ this.parent.setup.bind(this)(initial_text); if(this.status_text == '' && ge('friendspro_user_status')){ add_css_class_name($('friendspro_user_status'),'user_status_editing'); } }, hide:function(){ this.parent.hide.bind(this)(); if((this.status_text!='') && ge('friendspro_user_status')){ remove_css_class_name($('friendspro_user_status'),'user_status_editing'); } $('friendspro_user_status').onclick=function(){ status_page_editor.show(); return false; }; }, show:function(){ if(this.mouse_down==true){ this.mouse_down=false; return false; } this.parent.show.bind(this)(); if(this.active){ if(ge('friendspro_user_status')){ add_css_class_name($('friendspro_user_status'),'user_status_editing'); $('friendspro_user_status').onclick=null; } } return false; }, status_set:function(status,markup){ this.parent.status_set.bind(this)(status,markup); remove_css_class_name($('friendspro_user_status'),'mobile_status'); }, blur:function(event) { this.mouse_down=true; this.parent.blur.bind(this)(); setTimeout(function(){ this.mouse_down=false; }.bind(this),500); } }) var edit_status_visible=false; var edit_select_visible=false; var status_set=true; var status_cleared=true; var status_blur=false; var status_reblur=false; var status_init=false; var status_keepopen=false; var status_text=''; var status_id_prefix=''; var status_hide_on_blur=true; function editStatus(prefix, do_not_hide_on_blur, no_focus) { status_id_prefix = prefix ? prefix : ''; status_hide_on_blur = do_not_hide_on_blur ? false : true; edit_status_visible = false; status_blur = false; if(!edit_status_visible){ var obj=$('#'+status_id_prefix+'edit_status_text'); obj.val(status_text); hideEditStatusSelect(); $('#'+status_id_prefix+'status_editor').show(); if (!no_focus) { obj.focus(); var prefix=obj.attr('statusprefix')||''; if(prefix&&obj.val().substring(0,prefix.length)==prefix){ obj.caret(prefix.length,obj.val().length); } else { obj.select(); } } status_blur=true; edit_status_visible=true; } else { $(status_id_prefix+'edit_status_text').focus(); } } function hideEditStatus(){ edit_status_visible=false; status_blur=false; status_init=false; status_keepopen=false; hideEditStatusSelect(); $('#'+status_id_prefix+'status_editor').hide(); $('#'+status_id_prefix+'status_body').show(); } function editStatusBlur(){ if(status_reblur){ $('#' + status_id_prefix+'edit_status_text').focus(); status_reblur=false; return false; } if(status_blur){ if($('#'+status_id_prefix+'edit_status_text').val()&&$('#'+status_id_prefix+'edit_status_text').val()!=status_text&&$('#'+status_id_prefix+'edit_status_text').val()!=$('#'+status_id_prefix+'edit_status_text').attr('statusprefix')&&$('#'+status_id_prefix+'edit_status_text').val()!=status_text.replace(/^is /,'')) { submitStatus($('#'+status_id_prefix+'edit_status_text').val()); } else { if(status_keepopen){ status_init=true; if (status_hide_on_blur) { $('#'+status_id_prefix+'edit_status_text').val(''); } hideEditStatusSelect(); } else { if (status_hide_on_blur) { hideEditStatus(); } } } } return true; } function toggleEditStatusSelect(){ if(status_init){ if(ua.safari){ status_reblur=true; } status_init=false; $('#'+status_id_prefix+'edit_status_text').focus() } else if(ua.safari||ua.msie) { status_reblur=true; } edit_select_visible = !edit_select_visible; if(edit_select_visible){ showEditStatusSelect(); } else { hideEditStatusSelect(); } } function showEditStatusSelect(){ edit_select_visible=true; $('#'+status_id_prefix+'edit_status_select').css({ display: 'block' }); $('#'+status_id_prefix+'edit_status_toggle').css({ backgroundImage: 'url(/images/icons/status_on.gif)', backgroundColor: '#fff' }); } function hideEditStatusSelect(){ edit_select_visible=false; $('#'+status_id_prefix+'edit_status_select').hide(); $('#'+status_id_prefix+'edit_status_toggle').css({ backgroundImage: 'url(/images/icons/status_off.gif)', backgroundColor: '#D8DFEA' }); } function statusSelect(){ toggleEditStatusSelect(); $('#'+status_id_prefix+'edit_status_text').val($(this).text()); $('#'+status_id_prefix+'edit_status_text').focus(); $('#'+status_id_prefix+'edit_status_text').select(); return false; } function statusSelectOver() { $(this).addClass('selected'); } function statusSelectOut() { $(this).removeClass('selected'); } function clearStatus(){ status_cleared=false; status_keepopen=false; window.setTimeout('showClearingMessage()',200); hideEditStatus(); $.ajax({ type: "POST", url: "ajax-saveuserstatus.html", data: {clear: '1'}, error: function() {statusCleared();statusUpdated(null,'');}, success: statusCleared}); } function showClearingMessage(){ if(!status_cleared){ $('#'+status_id_prefix+'su_name').hide(); $('#'+status_id_prefix+'su_text').html(''+status_string_table.sp05+''); $('#su_name').hide(); $('#su_text').html(''+status_string_table.sp05+''); } } function statusCleared(){ status_cleared=true; status_text=''; $('#'+status_id_prefix+'su_name').hide(); $('#'+status_id_prefix+'su_placeholder').html(status_string_table.sp06); $('#'+status_id_prefix+'su_placeholder').show(); $('#'+status_id_prefix+'su_edit').hide(); $('#'+status_id_prefix+'su_text').html(''); $('#'+status_id_prefix+'su_time').html(''); $('#su_name').hide(); $('#su_placeholder').html(status_string_table.sp06); $('#su_placeholder').show(); $('#su_edit').hide(); $('#su_text').html(''); $('#su_time').html(''); $('#middle_su_name').hide(); $('#middle_su_placeholder').html(status_string_table.sp06); $('#middle_su_placeholder').show(); $('#middle_su_edit').hide(); $('#middle_su_text').html(''); $('#middle_su_time').html(''); $('#middle_status_body').show(); $('#middle_status_editor').hide(); } function submitStatus(status){ if(status==null||status==''){ return; } status_keepopen=false; status_set=false; window.setTimeout('showUpdatingMessage()',200); hideEditStatus(); $.ajax({ type: "POST", url: "ajax-saveuserstatus.html", data: {userstatus: status}, dataType: "xml", error: this.submit_status_set_error, success: submitStatusSuccess}); } function submitStatusError(){ statusUpdated(null,''); } function submitStatusSuccess(data){ if ($("status", data).text() == "ok") { statusUpdated($("status", data).text(),$("statustext", data).text()); } else if ($(data).find('status')[0].firstChild.data == "error") { alert("Unfortunately an error occured (" + $(data).find('message')[0].firstChild.data + ")!"); return; } } function showUpdatingMessage(){ if(!status_set){ $('#middle_status_body').show(); $('#middle_status_editor').hide(); $('#'+status_id_prefix+'su_name').hide(); $('#'+status_id_prefix+'su_placeholder').hide(); $('#'+status_id_prefix+'su_text').html(''+status_string_table.sp07+''); $('#su_name').hide(); $('#su_placeholder').hide(); $('#su_text').html(''+status_string_table.sp07+''); $('#middle_su_name').hide(); $('#middle_su_placeholder').hide(); $('#middle_su_text').html(''+status_string_table.sp07+''); } } function statusUpdated(status,markup){ status_set=true; if(status!=null&&status!=''){ status_text=markup.replace(//, ""); $('#'+status_id_prefix+'su_name').show(); $('#'+status_id_prefix+'su_edit').show(); $('#'+status_id_prefix+'su_placeholder').hide(); $('#'+status_id_prefix+'su_text').html(markup); $('#'+status_id_prefix+'su_time').html(status_string_table.sp08); $('#'+status_id_prefix+'edit_status_text').val(''); $('#su_name').show(); $('#su_edit').show(); $('#su_placeholder').hide(); $('#su_text').html(markup); $('#su_time').html(status_string_table.sp08); $('#edit_status_text').val(''); $('#middle_su_name').show(); $('#middle_su_edit').show(); $('#middle_su_placeholder').hide(); $('#middle_su_text').html(markup); $('#middle_su_time').html(status_string_table.sp08); $('#middle_edit_status_text').val(''); } else if(status==null){ status_text=''; $('#'+status_id_prefix+'su_name').hide(); $('#'+status_id_prefix+'su_placeholder').html(status_string_table.sp09); $('#'+status_id_prefix+'su_placeholder').show(); $('#'+status_id_prefix+'su_edit').hide(); $('#'+status_id_prefix+'su_text').html(''); $('#'+status_id_prefix+'su_time').html(''); $('#su_name').hide(); $('#su_placeholder').html(status_string_table.sp09); $('#su_placeholder').show(); $('#su_edit').hide(); $('#su_text').html(''); $('#su_time').html(''); $('#su_name').hide(); $('#middle_su_placeholder').html(status_string_table.sp09); $('#middle_su_placeholder').show(); $('#middle_su_edit').hide(); $('#middle_su_text').html(''); $('#middle_su_time').html(''); } $('#middle_status_body').show(); $('#middle_status_editor').hide(); } function statusTextKeyPress(event){ if(!event){ event=window.event; } if(event.keyCode){ keyPressed=event.keyCode; }else if(event.which){ keyPressed=event.which; } if(keyPressed==9){ return false; } if(keyPressed==13){ submitStatus($('#'+status_id_prefix+'edit_status_text').val()); return false; } if(keyPressed==27){ hideEditStatus(); return false; } return true; }