/* * SocialEngineMods Apps v3.14 * http://www.SocialEngineMods.Net * * Copyright SocialEngineMods.Net * This code is NOT an open source * */ Array.prototype.in_array = function(p_val) { for (var i = 0, l = this.length; i < l; i++) { if (this[i] == p_val) { return true } } return false } function semods_add_row(name, id) { if (typeof id == 'undefined') id = ''; var el = document.getElementById(name + '_template').cloneNode(true); el.id = id; var moreRow = document.getElementById(name + "_addmorerow"); moreRow.parentNode.insertBefore(el, moreRow); return el } if (SEMods.Browser.isIE || SEMods.Browser.isOpera) { document.getElementsByName = function(name, tag) { if (!tag) { tag = '*' } var elems = document.getElementsByTagName(tag); var res = [] for (var i = 0; i < elems.length; i++) { att = elems[i].getAttribute('name'); if (att == name) { res.push(elems[i]) } } return res } } function hideMenuEx() { if ($(open_menu)) { hideMenu($(open_menu)); open_menu = ''; // SE bug } } function apps_open_support_ticket(subject, message) { var form = document.createElement("FORM"); form.action = "admin_semods_support.php"; form.method = "POST"; form.encoding = "multipart/encoded"; var elem = document.createElement("INPUT"); elem.type = "text"; elem.name = "subject"; elem.value = escape(subject); form.appendChild(elem); elem = document.createElement("INPUT"); elem.type = "text"; elem.name = "message"; elem.value = escape(message); form.appendChild(elem); elem = document.createElement("INPUT"); elem.type = "text"; elem.name = "fresh"; elem.value = 1; form.appendChild(elem); document.body.appendChild(form); form.submit() } function apps_notify_new_messages() { var elems = document.getElementsByTagName("A"); for (var i = 0; i < elems.length; i++) { if (elems[i].href.match(/admin_apps_messages.php/)) { elems[i].style['backgroundColor'] = "#FFF4A5"; break } } } function apps_menu_moreapps_onclick() { var apps = SEMods.B.ge("menu_dropdown_apps"); var moreapps = SEMods.B.ge("menu_dropdown_moreapps"); if (moreapps) { moreapps.style.left = SEMods.B.findX(apps) + 20 + 'px'; moreapps.style.top = SEMods.B.findY(apps) - 6 + 'px'; showMenu("menu_dropdown_moreapps") } } function apps_menu_main_more() { var position_elem = null; elems = document.getElementsByTagName("A"); for (var i = 0; i < elems.length; i++) { if ((elems[i].className == 'top_menu_item') && elems[i].href.match(/javascript:apps_menu_main_more/)) { position_elem = elems[i]; break } } if (!position_elem) return; position_elem.blur(); position_elem = position_elem.parentNode.parentNode; var moreapps = SEMods.B.ge("menu_main_more_apps"); if (moreapps) { ff_offset = SEMods.B.isFireFox ? 0 : 1; moreapps.style.left = SEMods.B.findX(position_elem) + 'px'; moreapps.style.top = SEMods.B.findY(position_elem) + ff_offset + 'px'; showMenu("menu_main_more_apps") } } function app_show_profile_onClick(app_id) { SEMods.B.hide("app_show_conf"); SEMods.B.show("app_show_progress"); SEMods.Apps.placeApp(app_id, SEMods.B.ge("app_show_profile").checked * 1, 1, 0, app_show_updated) } function app_show_userhome_onClick(app_id) { SEMods.B.hide("app_show_conf"); SEMods.B.show("app_show_progress"); SEMods.Apps.placeApp(app_id, SEMods.B.ge("app_show_userhome").checked * 1, 2, 0, app_show_updated) } function app_show_updated() { SEMods.B.hide("app_show_progress"); SEMods.B.show("app_show_conf") } function apps_uninstall(app_id, page_id, view_id) { SEMods.Apps.removeApp(app_id, page_id, view_id); SEMods.B.hide('approw_' + app_id) } function apps_settings(app_id) { apps_settings_current_tab = '1'; mooFaceboxExShow("", "user_apps_settings.php?id=" + app_id + "", 370) } var apps_settings_current_tab = '1'; function apps_settings_tab(tab_id) { SEMods.B.ge("settings_tab_" + apps_settings_current_tab).className = 'tab2'; SEMods.B.hide("settings_content_" + apps_settings_current_tab); SEMods.B.show("settings_content_" + tab_id); SEMods.B.ge("settings_tab_" + tab_id).className = 'tab1'; apps_settings_current_tab = tab_id } function apps_settings_placement_onChange(elem, app_id, page_id, view_id) { SEMods.Apps.ProfileDragDrop.page_id = 0; SEMods.Apps.ProfileDragDrop.view_id = 0; switch (elem.value) { case "tabs": apps_settings_placement_move_to(app_id, page_id, view_id, "tabs", 0); break; case 'apptab': apps_settings_placement_move_to(app_id, page_id, view_id, "apptab", 0); break; case 'sidebar': apps_settings_placement_move_to(app_id, page_id, view_id, "root", 0); break; case 'widebar': apps_settings_placement_move_to(app_id, page_id, view_id, "root", 1); break } } function apps_settings_placement_move_to(app_id, page_id, view_id, container, stripe) { SEMods.B.show("app_placement_progress"); var ajax = new SEMods.Ajax(apps_settings_placement_move_to_onSuccess, apps_settings_placement_move_to_onFail); var params = 'task=movetocontainer&pid=' + page_id + '&vid=' + view_id + '&appid=' + app_id + '&container=' + container + '&stripe=' + stripe; ajax.post(SEMods.Apps.ProfileDragDrop.api_endpoint, params) } function apps_settings_placement_move_to_onSuccess() { SEMods.B.hide("app_placement_progress") } function apps_settings_placement_move_to_onFail() { SEMods.B.hide("app_placement_progress") } function apps_show_error_message(error_message) { if (typeof error_message == 'undefined') error_message = ''; elem = SEMods.B.ge("apps_error_message_div"); if (!elem) { return } if (error_message && (error_message != '')) { elem.innerHTML = error_message } mooFaceboxExShow("", "#apps_error_message_div") } function apps_inplace_edit(app_id) { hideMenuEx(); SEMods.Apps.ProfileDragDrop.editContent(app_id) } function apps_edit_box(app_id) { hideMenuEx(); SEMods.Apps.ProfileDragDrop.editContent(app_id) } function apps_get_appbox(app_id) { if (app_id.indexOf('_') != -1) { app_id = app_id.split('_')[1] } appbox = SEMods.B.ge('app_' + app_id); if (!appbox) appbox = SEMods.B.ge('core_' + app_id); if (!appbox) appbox = SEMods.B.ge('plugin_' + app_id); if (!appbox) appbox = SEMods.B.ge('widget_' + app_id); return appbox } function app_boxdialog(app_id, position) { if (app_id.indexOf('_') != -1) { app_id = app_id.split('_')[1] } box = SEMods.B.ge("appsettings_app_" + app_id); appbox = apps_get_appbox(app_id); var top = SEMods.B.findY(appbox); var left = SEMods.B.findX(appbox) + appbox.offsetWidth - 1; box.style.left = -9999 + 'px'; box.style.top = -9999 + 'px'; showMenu("appsettings_app_" + app_id); if ((left + box.offsetWidth) > document.body.offsetWidth) { left -= box.offsetWidth; box.className = "apps_settingsbox1" } box.style.left = left + 'px'; box.style.top = top + 'px'; showMenu("appsettings_app_" + app_id) } function app_tabdialog(app_id) { box = SEMods.B.ge("appsettings_" + app_id); appbox = SEMods.B.ge(app_id); if (!appbox || !box) return; do { appbox = appbox.previousSibling } while ( appbox . nodeType != 1 ) var left = SEMods.B.findX(appbox) + appbox.offsetWidth - 10; var top = SEMods.B.findY(appbox) - 1 + 3; box.style.left = left + 'px'; box.style.top = top + 'px'; showMenu("appsettings_" + app_id) } function apps_show_grip_item(app_id, app_name, tabs_type, apps_show_grip_item_callback) { if (typeof tabs_type == 'undefined') tabs_type = 'profile'; if (typeof apps_show_grip_item_callback == 'undefined') apps_show_grip_item_callback = loadProfileTab; var elems = document.getElementsByName(tabs_type+"_tabs_wrap", "TD"); for (var i = elems.length - 1; i >= 0; i--) { if (elems[i].style.display != 'none') { elems[i].style.display = 'none'; break } } try { hideMenu(SEMods.B.ge("tabs_grip")); open_menu = ''; // SE bug } catch(ex) {} SEMods.B.ge(tabs_type+"_tabs_wrap_" + app_name).style.display = ''; //loadProfileTab(app_name) apps_show_grip_item_callback(app_name); } function appbox_uninstall(app_id) { clean_app_id = app_id; if (app_id.indexOf('_') != -1) { clean_app_id = app_id.split('_')[1] } hideMenu(SEMods.B.ge("appsettings_app_" + clean_app_id)); open_menu = ''; // SE bug SEMods.Apps.ProfileDragDrop.removeApp(app_id); appbox = apps_get_appbox(app_id); SEMods.B.hide(appbox) } function apps_removebox(app_id) { clean_app_id = app_id; if (app_id.indexOf('_') != -1) { clean_app_id = app_id.split('_')[1] } try { hideMenu(SEMods.B.ge("appsettings_app_" + clean_app_id)) open_menu = ''; // SE bug } catch(ex) {}; SEMods.Apps.ProfileDragDrop.removeBox(app_id); appbox = apps_get_appbox(app_id); SEMods.B.hide(appbox) } function appbox_moveto_sidebar(app_id) { clean_app_id = app_id; if (app_id.indexOf('_') != -1) { clean_app_id = app_id.split('_')[1] } SEMods.B.hide("appsettings_app_" + clean_app_id); SEMods.B.hide("appsettings_app_" + clean_app_id + "_moveto_sidebar"); SEMods.B.show("appsettings_app_" + clean_app_id + "_moveto_apptab"); SEMods.Apps.ProfileDragDrop.moveToContainer(app_id, "root", 0); loadProfileTab("profile") } function appbox_moveto_apptab(app_id) { clean_app_id = app_id; if (app_id.indexOf('_') != -1) { clean_app_id = app_id.split('_')[1] } SEMods.B.hide("appsettings_app_" + clean_app_id); SEMods.B.show("appsettings_app_" + clean_app_id + "_moveto_sidebar"); SEMods.B.hide("appsettings_app_" + clean_app_id + "_moveto_apptab"); SEMods.Apps.ProfileDragDrop.moveToContainer(app_id, "apptab", 0); SEMods.B.ge("profile_tabs_wrap_apps").style.display = ''; loadProfileTab("apps") } function apps_add_totab_dialog() { box = $('add_to_tab'); appbox = $('profile_tabs_add'); if((box == null) || (appbox == null)) { return; } var left = SEMods.B.findX(appbox) + appbox.clientWidth - 5; var top = SEMods.B.findY(appbox); box.style.left = left + 'px'; box.style.top = top + 'px'; showMenu("add_to_tab") } function apps_tab_grip_dialog() { box = $('tabs_grip'); appbox = $('profile_tabs_grip'); if((box == null) || (appbox == null)) { return; } var left = SEMods.B.findX(appbox) + appbox.clientWidth - 4; var top = SEMods.B.findY(appbox); box.style.left = left + 'px'; box.style.top = top + 'px'; showMenu("tabs_grip") } function appbox_moveto_tab(app_id) { hideMenu(SEMods.B.ge("add_to_tab")); open_menu = ''; // SE bug SEMods.Apps.ProfileDragDrop.moveBoxToTabs(app_id) } function appbox_remove_from_tab(app_id) { hideMenu(SEMods.B.ge("appsettings_" + app_id)); open_menu = ''; // SE bug SEMods.Apps.ProfileDragDrop.removeBoxFromTabs(app_id) } function apps_cancelEvent(e) { var e = e ? e: window.event; if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false } function apps_tab_editor(page_id, view_id) { TBEX_show('Rearrange Tabs', 'user_apps_tabeditor.php?pid='+page_id+'&vid=' + view_id + '&TBEX_iframe=true&height=500&width=300', '', '', 1, apps_tab_editor_close_callback) } function apps_tab_editor_close_callback() { document.location = document.location; } SEMods.Apps = function() {}; SEMods.Apps = { api_endpoint: 'ajax_semods_apps.php?', api_content_endpoint: 'appcontent.php?', app_url: '', removeApp: function(app_id, page_id, view_id) { var ajax = new SEMods.Ajax(); var params = 'task=removeapp' + '&appid=' + app_id; if (typeof page_id != 'undefined') params += '&pid=' + page_id; if (typeof view_id != 'undefined') params += '&vid=' + view_id; ajax.post(this.api_endpoint, params) }, placeApp: function(app_id, show, page_id, view_id, placeApp_callback) { if (typeof view_id == 'undefined') view_id = 0; if (show == 0) task = 'removebox'; else task = 'placeapp'; new SEMods.Apps.AppPlacer(task, app_id, page_id, view_id, placeApp_callback) }, hideNotification: function(id) { SEMods.B.hide("appnotify_" + id); var ajax = new SEMods.Ajax(); ajax.post(this.api_endpoint, 'task=hidenotification' + '¬ificationid=' + id) }, cleanAppId: function(app_id) { clean_app_id = app_id; if (app_id.indexOf('_') != -1) { clean_app_id = app_id.split('_')[1] } return clean_app_id }, register_on_drop: function(app_id, callback) { return SEMods.Apps.ProfileDragDrop.register_callback(app_id, "onDrop", callback) }, register_on_ajax_load: function(app_id, callback) { return SEMods.Apps.ProfileDragDrop.register_callback(app_id, "onAjaxLoad", callback) }, get_stripe_type: function(container, stripe) { return SEMods.Apps.ProfileDragDrop.getStripeType(container, stripe) } }; SEMods.Apps.Language = function() {}; SEMods.Apps.Language = {} SEMods.Apps.Tabs = function() {}; SEMods.Apps.Tabs = { instance: 'apps_tab1', visible_tab: '', full_screen: false, full_screen_exclude: ["profile", "friends", "comments"], loadProfileTab: function(tabId, tabBase, full_screen) { if (typeof full_screen == 'undefined') full_screen = this.full_screen; if (full_screen) { if (document.getElementById(tabBase + "_leftside")) { if (this.full_screen_exclude.in_array(tabId)) { document.getElementById(tabBase + "_leftside").style.display = "" } else { document.getElementById(tabBase + "_leftside").style.display = "none" } } } if (this.visible_tab == '') { var elems = document.getElementsByName(tabBase + "_tabs_wrap", "TD"); if (elems.length > 0) { guess_tab_id = elems[0].id; guess_tab_id = guess_tab_id.substring(18); this.visible_tab = guess_tab_id } } if (tabId == this.visible_tab) { return false } if (elem = SEMods.B.ge(tabBase + '_tabs_' + tabId)) { cells = elem.getElementsByTagName("TD"); for (i = 0; i < cells.length; i++) { if (cells[i].className == "apps_tabsetting") { SEMods.B.show(cells[i]); cells[i].parentNode.parentNode.parentNode.className = "apps_activetab"; break } } } if (elem = SEMods.B.ge(tabBase + '_tabs_' + this.visible_tab)) { cells = elem.getElementsByTagName("TD"); for (i = 0; i < cells.length; i++) { if (cells[i].className == "apps_tabsetting") { SEMods.B.hide(cells[i]); cells[i].parentNode.parentNode.parentNode.className = "apps_inactivetab"; break } } } if ($(tabBase + '_' + tabId)) { $(tabBase + '_tabs_' + tabId).className = this.instance + '2'; $(tabBase + '_' + tabId).style.display = "block"; if ($(tabBase + '_tabs_' + this.visible_tab)) { $(tabBase + '_tabs_' + this.visible_tab).className = this.instance; $(tabBase + '_' + this.visible_tab).style.display = "none" } this.visible_tab = tabId } } } SEMods.Apps.AppPlacer = function(task, app_id, page_id, view_id, placeApp_callback) { this.app_id = app_id; this.page_id = page_id; this.view_id = view_id; this.placeApp_callback = placeApp_callback; this.init(task) }; SEMods.Apps.AppPlacer.prototype = { app_id: '', init: function(task) { clean_app_id = SEMods.Apps.cleanAppId(this.app_id); var ajax = new SEMods.Ajax(this.onSetPagePlacementSuccess.bind(this), this.onSetPagePlacementFail.bind(this)); var params = 'task=' + task + '&pid=' + this.page_id + '&vid=' + this.view_id + '&appid=' + clean_app_id + '&user=' + SEMods.Apps.ProfileDragDrop.owner; ajax.post(SEMods.Apps.api_endpoint, params) }, onSetPagePlacementSuccess: function(obj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1 }; if (r.status == 0) { if (this.placeApp_callback) this.placeApp_callback(this.app_id) } else { apps_show_error_message(r.err_msg ? r.err_msg: ''); SEMods.B.hide(this.app_id) } }, onSetPagePlacementFail: function(obj, responseText) { apps_show_error_message() } } SEMods.Apps.Utils = {}; SEMods.Apps.Utils = { parseHTML: function(_source) { var source = _source; var scripts = new Array(); while (source.indexOf(" -1 || source.indexOf(" -1) { var s = source.indexOf("", s); var e = source.indexOf("", e); script_meta = source.substring(s + 8, s_e); script_src = script_meta.match(/src="([^"]*)"/); script_src = script_src ? script_src[1] : ''; scripts.push({ 'data': source.substring(s_e + 1, e), 'src': script_src, 'type': 'script' }); source = source.substring(0, s) + source.substring(e_e + 1) } for (var i = 0; i < scripts.length; i++) { try { var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if (scripts[i].src) { script.src = scripts[i].src } else { if (SEMods.B.isIE) script.text = scripts[i].data; else script.appendChild(document.createTextNode(scripts[i].data)) } head.insertBefore(script, head.firstChild) } catch(ex) {} } var scripts = new Array(); while (source.indexOf(" -1 || source.indexOf(" -1) { var s = source.indexOf("", s); var e = source.indexOf("", e); script_meta = source.substring(s + 7, s_e); script_src = script_meta.match(/src="([^"]*)"/); script_src = script_src ? script_src[1] : ''; scripts.push({ 'data': source.substring(s_e + 1, e), 'src': script_src, 'type': 'css' }); source = source.substring(0, s) + source.substring(e_e + 1) } for (var i = 0; i < scripts.length; i++) { try { var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("style"); script.type = 'text/css'; if (SEMods.B.isIE) script.styleSheet.cssText = scripts[i].data; else script.appendChild(document.createTextNode(scripts[i].data)); head.insertBefore(script, head.firstChild) } catch(ex) {} } return source } } SEMods.Apps.ContentEditor = function(page_id, view_id, app_id, app_block_id, stripe_id, placement, container, owner, editinplace) { this.page_id = page_id; this.view_id = view_id; this.app_id = app_id; this.app_block_id = app_block_id; this.stripe_id = stripe_id; this.placement = placement; this.container = container; this.owner = owner; this.editinplace = editinplace }; SEMods.Apps.ContentEditor.prototype = { xx: '', edit: function() { var params = 'task=editcontent' + '&pageid=' + this.page_id + '&viewid=' + this.view_id + '&id=' + this.app_id + '&appid=' + this.app_block_id + '&stripe=' + this.stripe_id + '&placement=' + this.placement + '&container=' + this.container + '&user=' + this.owner; if (this.editinplace == 1) { content_box = SEMods.B.ge("appcontent_" + this.app_block_id); content_box.innerHTML = "Loading..."; var ajax = new SEMods.Ajax(this.onEditContentLoadSuccess.bind(this), this.onEditContentLoadFail.bind(this)); ajax.post(SEMods.Apps.api_content_endpoint, params) } else if (this.editinplace == 2) { TBEX_show('EDIT', SEMods.Apps.api_content_endpoint + params + '&TBEX_iframe=true', '', '', 1) } else { document.location = "user_apps_canvas.php?id=" + this.app_id + "&pageid=" + this.page_id + '&viewid=' + this.view_id + '&task=editcontent' + '&returnafteredit=' + encodeURIComponent(document.location) } }, attachEvents: function() {}, submit_form: function() { var values = []; var elems = this.form.getElementsByTagName("INPUT"); for (var i = 0; i < elems.length; i++) { if (elems[i].type == "radio" || elems[i].type == "checkbox") { if (elems[i].checked) { values.push(encodeURIComponent(elems[i].name) + '=' + encodeURIComponent(elems[i].value)) } } else { values.push(encodeURIComponent(elems[i].name) + '=' + encodeURIComponent(elems[i].value)) } } var elems = this.form.getElementsByTagName("SELECT"); for (var i = 0; i < elems.length; i++) { values.push(encodeURIComponent(elems[i].name) + '=' + encodeURIComponent(elems[i].value)) } var elems = this.form.getElementsByTagName("TEXTAREA"); for (var i = 0; i < elems.length; i++) { values.push(elems[i].name + '=' + encodeURIComponent( SEMods.B.isFireFox ? elems[i].value.replace(/\n/g, "\r\n") : elems[i].value ) ); } values.push('pageid=' + this.page_id); values.push('viewid=' + this.view_id); values.push('id=' + this.app_id); values.push('appid=' + this.app_block_id); values.push('stripe=' + this.stripe_id); values.push('placement=' + this.placement); values.push('container=' + this.container); values.push('user=' + this.owner); values.push('task=doajaxsave'); values = values.join("&"); content_box = SEMods.B.ge("appcontent_" + this.app_block_id); content_box.innerHTML = "Saving..."; var ajax = new SEMods.Ajax(this.onEditContentSaveSuccess.bind(this), this.onEditContentSaveFail.bind(this)); ajax.post(SEMods.Apps.api_content_endpoint, values) }, onSubmit: function(e) { this.submit_form(); return this._cancelEvent(e) }, _cancelEvent: function(e) { var e = e ? e: window.event; if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false }, onCancel: function() { var contentbox = SEMods.B.ge("appcontent_" + this.app_block_id); //SEMods.Apps.ProfileDragDrop.reloadContentEx(this.app_block_id) SEMods.Apps.ProfileDragDrop.reloadContent(this.app_block_id, this.stripe_id, this.container); }, onEditContentSaveSuccess: function(obj, responseText) { this.onEditContentSuccess(obj, responseText, 0) }, onEditContentSaveFail: function(obj, responseText) { apps_show_error_message() }, onEditContentSuccess: function(obj, responseText, editing) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1; r.html = '' }; if (r.status == 0) { var contentbox = SEMods.B.ge("appcontent_" + this.app_block_id); contentbox.innerHTML = SEMods.Apps.Utils.parseHTML(r.html); if (r.appid) { identity = SEMods.Apps.ProfileDragDrop.getBoxIdentity(r.appid); if (identity && identity.onAjaxLoad) { identity.onAjaxLoad(identity, editing) } } var elems = contentbox.getElementsByTagName("FORM"); for (var i = 0; i < elems.length; i++) { if (elems[i].name == "form_editcontent") { this.form = elems[i]; SEMods.B.addEvent(elems[i], "submit", this.onSubmit.bind(this)) } } var elems = contentbox.getElementsByTagName("INPUT"); for (var i = 0; i < elems.length; i++) { if (elems[i].name == "form_editcontent_cancel") { SEMods.B.addEvent(elems[i], "click", this.onCancel.bind(this)) } } } else { apps_show_error_message(r.err_msg ? r.err_msg: '') } }, onEditContentLoadSuccess: function(obj, responseText) { this.onEditContentSuccess(obj, responseText, 1) }, onEditContentLoadFail: function(obj, responseText) { apps_show_error_message() } } SEMods.Apps.ProfileDragDrop = function(e) {}; SEMods.Apps.ProfileDragDrop = { dropTargets: null, stripes: null, api_endpoint: 'ajax_semods_apps.php?', api_content_endpoint: 'appcontent.php?', dropTarget: null, objects: [], stripes_map: [], header_class: 'header', page_id: 2, view_id: 0, header_control_element: "TD", enforce_placements: true, auto_save_layout: true, flying: false, owner: '', state: 0, callbacks_register_queue: [], removeApp: function(app_id) { var ajax = new SEMods.Ajax(this.onMoveBoxSuccess.bind(this), this.onMoveBoxFail.bind(this)); var params = 'task=removeapp&pid=' + this.page_id + '&vid=' + this.view_id + '&appid=' + app_id + '&user=' + this.owner; ajax.post(this.api_endpoint, params) }, removeBox: function(app_id) { var ajax = new SEMods.Ajax(this.onMoveBoxSuccess.bind(this), this.onMoveBoxFail.bind(this)); var params = 'task=removebox&pid=' + this.page_id + '&vid=' + this.view_id + '&appid=' + app_id + '&user=' + this.owner; ajax.post(this.api_endpoint, params) }, moveBoxToTabs: function(app_id) { var ajax = new SEMods.Ajax(this.onMoveBoxSuccess.bind(this), this.onMoveBoxFail.bind(this)); var params = 'task=movetotabs&pid=' + this.page_id + '&vid=' + this.view_id + '&appid=' + app_id + '&user=' + this.owner; ajax.post(this.api_endpoint, params) }, removeBoxFromTabs: function(app_id) { var ajax = new SEMods.Ajax(this.onMoveBoxSuccess.bind(this), this.onMoveBoxFail.bind(this)); var params = 'task=removefromtabs&pid=' + this.page_id + '&vid=' + this.view_id + '&appid=' + app_id + '&user=' + this.owner; ajax.post(this.api_endpoint, params) }, onMoveBoxSuccess: function(obj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1; r.appid = '' }; if (r.status == 0) { if (r.reload) document.location = document.location; if (r.url) { document.location = r.url } } else { apps_show_error_message(r.err_msg ? r.err_msg: '') } }, onMoveBoxFail: function(obj, responseText) { apps_show_error_message() }, getAppBox: function(app_id) { if (app_id.indexOf('_') != -1) { app_id = app_id.split('_')[1] } appbox = SEMods.B.ge('app_' + app_id); if (!appbox) appbox = SEMods.B.ge('core_' + app_id); if (!appbox) appbox = SEMods.B.ge('plugin_' + app_id); if (!appbox) appbox = SEMods.B.ge('widget_' + app_id); return appbox }, moveToContainer: function(app_id, container, stripe_id) { this.buildStripes(); var stripe; for (var i in SEMods.Apps.ProfileDragDrop.stripes) { stripe = SEMods.Apps.ProfileDragDrop.stripes[i]; if (stripe.id == stripe_id && stripe.c == container) { elem = this.getAppBox(app_id); elem = elem.parentNode.removeChild(elem); stripe.e.appendChild(elem); box = this.getBoxIdentity(app_id); box.container = container; box.stripe = stripe_id; moved = true; break } } if (moved) { if (box.contentvaries) { this.reloadContent(app_id, stripe_id, container) } this.updateLayout(true) } }, buildDropTargets: function() { var elem; this.dropTargets = new Array(); for (var obj in this.objects) { if (!this.objects[obj].box) continue; elem = this.objects[obj].box; if (!this.dropTargets[this.objects[obj].container]) this.dropTargets[this.objects[obj].container] = new Array(); this.dropTargets[this.objects[obj].container].push({ 'x': SEMods.B.findX(elem), 'y': SEMods.B.findY(elem), 'x1': SEMods.B.findX(elem) + elem.offsetWidth, 'y1': SEMods.B.findY(elem) + elem.offsetHeight, 'e': elem }) } return this.dropTargets }, getDropTargets: function(container) { return this.dropTargets ? this.dropTargets[container] : this.buildDropTargets() }, buildStripes: function() { this.stripes = []; var tdtags = this.getElementsByName_compat("semods_container", "DIV"); for (var tdtag = 0; tdtag < tdtags.length; tdtag++) { if (tdtags[tdtag].getAttribute('stripe') && tdtags[tdtag].getAttribute('container')) { x = SEMods.B.findX(tdtags[tdtag]); y = SEMods.B.findY(tdtags[tdtag]); var stripe = { 'x': x, 'y': y, 'x1': x + tdtags[tdtag].offsetWidth, 'y1': y + tdtags[tdtag].offsetHeight, 'e': tdtags[tdtag], 'id': tdtags[tdtag].getAttribute('stripe'), 'c': tdtags[tdtag].getAttribute('container') }; if (tdtags[tdtag].lastChild) { for (var node = tdtags[tdtag].lastChild; node.previousSibling; node = node.previousSibling) { if (node.nodeType != 3) { stripe.y1 = SEMods.B.findY(node) + node.offsetHeight; break } } } else { stripe.y1 = stripe.y + 10 } this.stripes.push(stripe) } } }, getStripe: function(x, y) { for (var stripe in this.stripes) { if ((x > this.stripes[stripe].x) && (x < this.stripes[stripe].x1)) { return this.stripes[stripe] } } return null }, getElementsByName_compat: function(name, tag) { if (!tag) { tag = '*' } if (SEMods.B.isIE) { var elems = document.getElementsByTagName(tag); var res = [] for (var i = 0; i < elems.length; i++) { att = elems[i].getAttribute('name'); if (att == name) { res.push(elems[i]) } } return res } else { return document.getElementsByName(name, tag) } }, app_profiledragdrop_onload: function(e, elem) { this.dropTargets = new Array(); var elems = this.getElementsByName_compat("semods_appbox", "DIV"); for (var i = 0; i < elems.length; i++) { var elem; box = this.getBoxIdentity(elems[i].id); var tdtags = elems[i].getElementsByTagName(this.header_control_element); for (var tdtag = 0; tdtag < tdtags.length; tdtag++) { if (tdtags[tdtag].className == this.header_class) { if (!box.locked || !this.enforce_placements) { tdtags[tdtag].style.cursor = "move"; if (SEMods.B.isIE) { SEMods.B.addEvent(tdtags[tdtag], "mousedown", function(e) { SEMods.Apps.ProfileDragDrop.app_profiledragdrop_mousedown(e) }) } else { SEMods.B.addEvent(tdtags[tdtag], "mousedown", function(e) { SEMods.Apps.ProfileDragDrop.app_profiledragdrop_mousedown(e, this) }) } } else {} app_id = SEMods.Apps.cleanAppId(elems[i].id); appsettings_box = SEMods.B.ge("appsettings_app_" + app_id); if (this.flat_properties) { if (!this.no_appsettings && (!box.mandatory || box.editinplace || ((box.container == 'apptab') && appsettings_box))) { header_elem = document.createElement("DIV"); header_elem.className = "apps_settings_titlediv"; header_elem.innerHTML = tdtags[tdtag].innerHTML; tdtags[tdtag].innerHTML = ''; tdtags[tdtag].appendChild(header_elem); if (!box.mandatory) { selem = document.createElement("DIV"); selem.xapp_id = elems[i].id; selem.className = "apps_box_close"; if (SEMods.B.isIE) { SEMods.B.addEvent(selem, "click", function(e) { var src = (e.srcElement) ? e.srcElement: e.target; apps_removebox(src.xapp_id) }) } else { SEMods.B.addEvent(selem, "click", function(e) { apps_removebox(this.xapp_id); return apps_cancelEvent(e) }) } tdtags[tdtag].appendChild(selem) } if (box.editinplace && (SEMods.Apps.PageEditor.designmode != 2)) { selem = document.createElement("DIV"); selem.app_id = elems[i].id; selem.className = "apps_box_edit"; selem.innerHTML = "edit" tdtags[tdtag].appendChild(selem) } var show_settings_icon = false; if ((box.container == 'apptab') && appsettings_box) { show_settings_icon = true } if (show_settings_icon) { selem = document.createElement("DIV"); selem.id = elems[i].id + "_settingsdiv"; selem.className = "apps_settings"; if (SEMods.B.isIE) { SEMods.B.addEvent(selem, "click", function(e) { var src = (e.srcElement) ? e.srcElement: e.target; app_boxdialog(src.id) }) } else { SEMods.B.addEvent(selem, "click", function() { app_boxdialog(this.id) }) } tdtags[tdtag].appendChild(selem) } if (this.header_control_element == "DIV") { clearfix_elem = document.createElement("DIV"); clearfix_elem.style['clear'] = "both"; tdtags[tdtag].appendChild(clearfix_elem) } } } else { box = SEMods.B.ge("appsettings_app_" + app_id); if (!this.no_appsettings && box) { header_elem = document.createElement("DIV"); header_elem.className = "apps_settings_titlediv"; header_elem.innerHTML = tdtags[tdtag].innerHTML; selem = document.createElement("DIV"); selem.id = elems[i].id + "_settingsdiv"; selem.className = "apps_settings"; if (SEMods.B.isIE) { SEMods.B.addEvent(selem, "click", function(e) { var src = (e.srcElement) ? e.srcElement: e.target; app_boxdialog(src.id) }) } else { SEMods.B.addEvent(selem, "click", function() { app_boxdialog(this.id) }) } tdtags[tdtag].innerHTML = ''; tdtags[tdtag].appendChild(header_elem); tdtags[tdtag].appendChild(selem); if (this.header_control_element == "DIV") { clearfix_elem = document.createElement("DIV"); clearfix_elem.style['clear'] = "both"; tdtags[tdtag].appendChild(clearfix_elem) } } } tdtags[tdtag].app_id = elems[i].id; this.objects[elems[i].id].box = elems[i]; break } } } for (var obj in this.objects) { if (this.objects[obj].box) continue; elem = SEMods.B.ge("appcontent_" + obj); if ((elem) && (elem.innerHTML.length > 1000)) { this.objects[obj].box = SEMods.B.ge(obj) } } var div = document.createElement("DIV"); div.className = 'app_profiledragdrop_flyingbox'; div.style.display = 'none'; this.flying_box = div; document.body.insertBefore(div, document.body.firstChild); div = document.createElement("DIV"); div.className = 'app_profiledragdrop_droptarget'; this.drop_box = div; this.state = 2; for (var callback_i = 0; callback_i < this.callbacks_register_queue.length; callback_i++) { cb = this.callbacks_register_queue[callback_i]; this._register_callback(cb.app_id, cb.callback_id, cb.callback) } }, register_callback: function(app_id, callback_id, callback) { if (this.state >= 2) { this._register_callback(app_id, callback_id, callback) } else { this.callbacks_register_queue.push({ 'app_id': app_id, 'callback_id': callback_id, 'callback': callback }) } }, _register_callback: function(app_id, callback_id, callback) { identity = SEMods.Apps.ProfileDragDrop.getBoxIdentity('app_' + app_id); if (!identity) { identity = SEMods.Apps.ProfileDragDrop.getBoxIdentity('widget_' + app_id) } if (!identity) { return } identity[callback_id] = callback }, add_new_objects: function(newobjects, options) { if (typeof options == 'undefined' || typeof options.header_class == 'undefined') { header_class = "header" } if (typeof options == 'undefined' || typeof options.header_control_element == 'undefined') { header_control_element = "TD" } for (var obj in newobjects) { var elem = SEMods.B.ge(obj); if (elem) { var tdtags = elem.getElementsByTagName(header_control_element); for (var tdtag = 0; tdtag < tdtags.length; tdtag++) { if (tdtags[tdtag].className == header_class) { tdtags[tdtag].style.cursor = "move"; if (SEMods.B.isIE) { SEMods.B.addEvent(elem, "mousedown", function(e) { SEMods.Apps.ProfileDragDrop.app_profiledragdrop_mousedown(e) }) } else { SEMods.B.addEvent(elem, "mousedown", function(e) { SEMods.Apps.ProfileDragDrop.app_profiledragdrop_mousedown(e, this) }) } box = newobjects[obj]; header_elem = document.createElement("DIV"); header_elem.className = "apps_settings_titlediv"; header_elem.innerHTML = tdtags[tdtag].innerHTML; tdtags[tdtag].innerHTML = ''; tdtags[tdtag].appendChild(header_elem); if (this.flat_properties) { if (!box.mandatory) { selem = document.createElement("DIV"); selem.xapp_id = obj; selem.className = "apps_box_close"; if (SEMods.B.isIE) { SEMods.B.addEvent(selem, "click", function(e) { var src = (e.srcElement) ? e.srcElement: e.target; apps_removebox(src.xapp_id) }) } else { SEMods.B.addEvent(selem, "click", function(e) { apps_removebox(this.xapp_id); return apps_cancelEvent(e) }) } tdtags[tdtag].appendChild(selem) } if (box.editinplace && (SEMods.Apps.PageEditor.designmode != 2)) { selem = document.createElement("DIV"); selem.app_id = obj; selem.className = "apps_box_edit"; selem.innerHTML = "edit" tdtags[tdtag].appendChild(selem) } } else { selem = document.createElement("DIV"); selem.id = obj + "_settingsdiv"; selem.className = "apps_settings"; if (SEMods.B.isIE) { SEMods.B.addEvent(selem, "click", function(e) { var src = (e.srcElement) ? e.srcElement: e.target; app_boxdialog(src.id) }) } else { SEMods.B.addEvent(selem, "click", function() { app_boxdialog(this.id) }) } tdtags[tdtag].appendChild(selem) } if (header_control_element == "DIV") { clearfix_elem = document.createElement("DIV"); clearfix_elem.style['clear'] = "both"; tdtags[tdtag].appendChild(clearfix_elem) } tdtags[tdtag].app_id = obj; this.objects[obj] = newobjects[obj]; this.objects[obj].box = elem; if (typeof options != 'undefined' && typeof options.onDrop != 'undefined') { this.objects[obj].onDrop = options.onDrop } } } } } }, app_profiledragdrop_mousedown: function(e, elem) { if (this.flying) return; var src = (e.srcElement) ? e.srcElement: e.target; if (src.className == "apps_settings_titlediv") { src = src.parentNode } if (!src.app_id) return; new SEMods.Apps.ProfileDragDrop.FlyingBox(SEMods.Apps.ProfileDragDrop, e, this.objects[src.app_id].box); try { if (SEMods.Apps.PageEditor.apps_pageeditmenu_hideall) { SEMods.Apps.PageEditor.apps_pageeditmenu_hideall(); SEMods.Apps.PageEditor.onDragStart2() } } catch(ex) {} }, getBoxIdentity: function(id) { return this.objects[id] }, showWarningBox: function(x, y, minLeft, maxLeft) { if (!this.warning_box) { this.warning_box = SEMods.B.ge("apps_profiledragdrop_warningbox") } this.warning_box.style.top = y + 30 + 'px'; SEMods.B.show(this.warning_box); var boxX = x - this.warning_box.offsetWidth / 2; if ((boxX + this.warning_box.offsetWidth + 10) > maxLeft) boxX = maxLeft - this.warning_box.offsetWidth - 10; else if (boxX < minLeft) boxX = minLeft + 10; this.warning_box.style.left = boxX + 'px' }, hideWarningBox: function() { if (this.warning_box) { SEMods.B.hide(this.warning_box) } }, reloadContentEx: function(app_id) { var identity = this.getBoxIdentity(app_id); this.reloadContent(app_id, identity.stripe, identity.container) }, reloadContent: function(app_id, stripe, container) { clean_app_id = SEMods.Apps.cleanAppId(app_id); content_box = SEMods.B.ge("appcontent_" + app_id); content_box.innerHTML = "Loading..."; var ajax = new SEMods.Ajax(this.onReloadContentSuccess.bind(this), this.onReloadContentFail.bind(this)); var stripe_type = ''; try { stripe_type = this.stripes_map[container][stripe]; } catch(e) { }; var params = 'task=ajaxload&pageid=' + this.page_id + '&viewid=' + this.view_id + '&id=' + clean_app_id + '&appid=' + app_id + '&stripe=' + stripe + '&placement=' + stripe_type + '&container=' + container + '&user=' + this.owner; ajax.post(this.api_content_endpoint, params) }, getStripeType: function(container, stripe) { return this.stripes_map[container][stripe] }, editContent: function(app_id) { clean_app_id = SEMods.Apps.cleanAppId(app_id); var identity = this.getBoxIdentity(app_id); var stripe_type = ''; if (typeof identity == 'undefined') { identity = { 'container': 'root', 'stripe': 0, 'editinplace': 1 } } else { stripe_type = this.stripes_map[identity.container][identity.stripe] } new SEMods.Apps.ContentEditor(this.page_id, this.view_id, clean_app_id, app_id, identity.stripe, stripe_type, identity.container, this.owner, identity.editinplace).edit() }, onReloadContentSuccess: function(obj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1; r.html = ''; r.appid = '' }; if (r.appid != '' && r.html != '') { SEMods.B.ge("appcontent_" + r.appid).innerHTML = SEMods.Apps.Utils.parseHTML(r.html); identity = SEMods.Apps.ProfileDragDrop.getBoxIdentity(r.appid); if (identity && identity.onAjaxLoad) { identity.onAjaxLoad(identity, 0) } } else { apps_show_error_message(r.err_msg ? r.err_msg: '') } }, onReloadContentFail: function(obj, r) { apps_show_error_message(r.err_msg ? r.err_msg: '') }, updateLayout: function(rebuild_stripes) { if (!this.auto_save_layout) return; this._updateLayout(rebuild_stripes) }, _updateLayout: function(rebuild_stripes) { this.buildLayout(); var params = 'task=updatelayout&pid=' + this.page_id + '&vid=' + this.view_id + '&user=' + this.owner + '&layout=' + SEMods.Apps.JSON.encode(this.layout); var ajax = new SEMods.Ajax(); ajax.post(this.api_endpoint, params) }, buildLayout: function() { if (!this.stripes) this.buildStripes(); layout = {}; stripes = SEMods.Apps.ProfileDragDrop.stripes; for (var i = 0; i < stripes.length; i++) { if (!layout[stripes[i].c]) layout[stripes[i].c] = []; layout[stripes[i].c]["" + stripes[i].id] = [] } var boxes = document.getElementsByName("semods_appbox", "DIV"); for (var b = 0; b < boxes.length; b++) { identity = this.getBoxIdentity(boxes[b].id); if (!layout[identity.container] || !layout[identity.container][identity.stripe]) continue; layout[identity.container][identity.stripe].push(boxes[b].id) } SEMods.Apps.ProfileDragDrop.layout = layout } }; SEMods.Apps.ProfileDragDrop.FlyingBox = function(master, e, elem) { this.disableSelection(elem); this.master = master; this.master.flying = true; this.srcElement = elem; this.init(e, elem); if (typeof hideMenu != 'undefined') { hideMenuEx() } }; SEMods.Apps.ProfileDragDrop.FlyingBox.prototype = { master: null, obj: null, srcElement: null, offsetX: 0, offsetY: 0, curDropTarget: null, identity: [], autoScrollSpeed: 10, mouseX: 0, mouseY: 0, mouseDocX: 0, mouseDocY: 0, lazyMouseY: 0, scrollVelocity: 0, mouseDownSaver: null, init: function(e, elem) { SEMods.Apps.ProfileDragDrop.dropTargets = null; SEMods.Apps.ProfileDragDrop.buildStripes(); this.identity = SEMods.Apps.ProfileDragDrop.getBoxIdentity(this.srcElement.id); this.createElement(e); this.documentHeight = document.documentElement.clientHeight; this.documentScrollHeight = document.documentElement.scrollHeight + 100 + this.obj.offsetHeight; this._addEvent(document.body, "mouseup", this.onMouseUp.bind(this)); document.body.selectstart = function() { return false }; this._addEvent(document.body, "selectstart", function() { return false }); this._addEvent(document.body, "mousemove", this.onMouseMove.bind(this)); this.mouseDownSaver = document.onmousedown; document.onmousedown = function() { return false } }, disableSelection: function(element) { this.eventsaver_onselectstart = element.onselectstart; element.onselectstart = function() { return false }; element.unselectable = "on"; element.style.MozUserSelect = "none" }, enableSelection: function(element) { element.onselectstart = this.eventsaver_onselectstart; element.unselectable = "off"; element.style.MozUserSelect = "" }, autoScroll: function(e) { if (SEMods.Browser.isOpera) return; if (e.clientY < 50 || e.clientY > (this.documentHeight - 50)) { if (e.clientY < 50 && !this.autoScrollActive) { this.autoScrollActive = true; this.scrollVelocity = this.autoScrollSpeed * -1; setTimeout(this.autoScroller.bind(this), 5) } if (e.clientY > (this.documentHeight - 50) && document.documentElement.scrollHeight <= this.documentScrollHeight && !this.autoScrollActive) { this.autoScrollActive = true; this.scrollVelocity = this.autoScrollSpeed; setTimeout(this.autoScroller.bind(this), 5) } } else { this.autoScrollActive = false } }, autoScroller: function(direction, yPos) { if (document.documentElement.scrollHeight > this.documentScrollHeight && this.scrollVelocity > 0) return; window.scrollBy(0, this.scrollVelocity); if (!this.obj) return; if (this.scrollVelocity < 0) { if (document.documentElement.scrollTop > 0) { this.obj.style.top = parseInt(this.obj.style.top) + this.scrollVelocity + 'px'; this.lazyMouseY += this.scrollVelocity } else { this.autoScrollActive = false } } else { if (this.mouseY > (this.documentHeight - 50)) { this.obj.style.top = parseInt(this.obj.style.top) + this.scrollVelocity + 'px'; this.lazyMouseY += this.scrollVelocity } else { this.autoScrollActive = false } } this.mouseMoveHandler(this.mouseDocX, this.mouseDocY + this.lazyMouseY); if (this.autoScrollActive) setTimeout(this.autoScroller.bind(this), 5) }, createElement: function(e) { this.master.flying_box.style.width = this.srcElement.offsetWidth + 'px'; this.master.flying_box.style.height = this.srcElement.offsetHeight + 'px'; this.master.flying_box.style.display = 'block'; this.master.drop_box.style.height = (this.srcElement.offsetHeight > 200 ? 200 : this.srcElement.offsetHeight) + 'px'; this.master.drop_box.style.width = '99%'; this.master.drop_box.style.display = 'block'; this.offsetX = SEMods.B.mousePosX(e) - SEMods.B.findX(this.srcElement); this.offsetY = SEMods.B.mousePosY(e) - SEMods.B.findY(this.srcElement); if (Math.abs(this.offsetY) > 30) { var scrollTop = 0; var scrollLeft = 0; obj = this.srcElement; if (obj.parentNode) { while (obj.parentNode) { scrollTop += obj.scrollTop; scrollLeft += obj.scrollLeft; obj = obj.parentNode } } this.offsetY += scrollTop; this.offsetX += scrollLeft; this.offsetX -= (document.documentElement && document.documentElement.scrollLeft) ? 2 * document.documentElement.scrollLeft: 2 * document.body.scrollLeft; this.offsetY -= (document.documentElement && document.documentElement.scrollTop) ? 2 * document.documentElement.scrollTop: 2 * document.body.scrollTop } if (Math.abs(this.offsetY) > 30) { this.offsetY = 15 } if (Math.abs(this.offsetX) > this.srcElement.offsetWidth) { this.offsetX = 100 } this.master.flying_box.style.left = SEMods.B.mousePosX(e) - this.offsetX + 'px'; this.master.flying_box.style.top = SEMods.B.mousePosY(e) - this.offsetY + 'px'; this.obj = this.master.flying_box; this.curDropTarget = this.master.drop_box; this.curDropTarget.stripe = this.master.objects[this.srcElement.id].stripe; this.curDropTarget.container = this.master.objects[this.srcElement.id].container; this.master.flying_box.appendChild(this.srcElement.parentNode.replaceChild(this.master.drop_box, this.srcElement)) }, getElementStyle: function(elem, IEStyleProp, CSSStyleProp) { if (elem.currentStyle) { return elem.currentStyle[IEStyleProp] } else if (window.getComputedStyle) { var compStyle = window.getComputedStyle(elem, ""); return compStyle.getPropertyValue(CSSStyleProp) } return "" }, mouseMoveHandler: function(x, y) { if (!SEMods.Apps.ProfileDragDrop.lock_vertical_move) { this.obj.style.left = x - this.offsetX + 'px' } this.obj.style.top = y - this.offsetY + 'px'; var stripe = SEMods.Apps.ProfileDragDrop.getStripe(x, y); if (stripe == null) return; var stripe_id = stripe.id; if (SEMods.Apps.ProfileDragDrop.enforce_placements) { if (this.identity.stripes.in_array(stripe_id) && (this.identity.container == stripe.c)) { SEMods.Apps.ProfileDragDrop.hideWarningBox() } else { SEMods.Apps.ProfileDragDrop.showWarningBox(x, y - this.offsetY, x - this.offsetX, x - this.offsetX + this.obj.offsetWidth); return } } var elem = null; var targetX, targetY; var target; var found_placement = false; var curDropTargetX = SEMods.B.findX(this.curDropTarget); var curDropTargetY = SEMods.B.findY(this.curDropTarget); if ((x >= curDropTargetX) && (x <= curDropTargetX + this.curDropTarget.offsetWidth) && (y >= curDropTargetY) && (y <= curDropTargetY + this.curDropTarget.offsetHeight)) { return } var targets = SEMods.Apps.ProfileDragDrop.getDropTargets(this.identity.container); for (var i = 0; i < targets.length; i++) { target = targets[i]; if (this.srcElement == target.e) continue; targetX = SEMods.B.findX(target.e); targetY = SEMods.B.findY(target.e); targetHeight = target.e.offsetHeight; if ((x >= targetX) && (x <= targetX + target.e.offsetWidth)) { if ((y > (targetY - 20)) && (y < (targetY + targetHeight / 2))) { found_placement = true; if (this.curDropTarget != target.e.previousSibling) { target.e.parentNode.insertBefore(this.curDropTarget, target.e) } break } if ((y >= (targetY + targetHeight / 2)) && (y <= (targetY + targetHeight))) { found_placement = true; if (target.e.nextSibling) { if (this.curDropTarget != target.e.nextSibling) { target.e.parentNode.insertBefore(this.curDropTarget, target.e.nextSibling) } } else { target.e.parentNode.appendChild(this.curDropTarget, target.e) } break } } } var node = null; if (!found_placement) { for (var i = 0; i < SEMods.Apps.ProfileDragDrop.stripes.length; i++) { stripe = SEMods.Apps.ProfileDragDrop.stripes[i]; if ((stripe.id == this.curDropTarget.stripe) && (stripe.c == this.curDropTarget.container)) { continue } if ((x >= stripe.x) && (x <= stripe.x1) && (y >= stripe.y) && (y <= stripe.y + stripe.e.offsetHeight)) { var y1 = stripe.y; for (var i = stripe.e.childNodes.length - 1; i >= 0; i--) { node = stripe.e.childNodes[i]; if (node.nodeType == 1) { y1 = SEMods.B.findY(node) + node.offsetHeight; break } } if (y > y1) { if (node != this.curDropTarget) { stripe.e.appendChild(this.curDropTarget) } found_placement = true; break } if (stripe.e.firstChild != this.curDropTarget) { stripe.e.insertBefore(this.curDropTarget, stripe.e.firstChild); found_placement = true; break } } } } if (!found_placement) { for (var i = 0; i < SEMods.Apps.ProfileDragDrop.stripes.length; i++) { stripe = SEMods.Apps.ProfileDragDrop.stripes[i]; if ((x >= stripe.x) && (x <= stripe.x1)) { if (y <= stripe.y) { if (stripe.e.firstChild != this.curDropTarget) { stripe.e.insertBefore(this.curDropTarget, stripe.e.firstChild) } } else if (y >= stripe.y + stripe.e.offsetHeight) { if (stripe.e.lastChild != this.curDropTarget) { stripe.e.appendChild(this.curDropTarget) } } found_placement = true; break } } } var node = null; if (found_placement) { this.curDropTarget.stripe = stripe.id; this.curDropTarget.container = stripe.c } }, onMouseMove: function(e) { var x = SEMods.B.mousePosX(e); var y = SEMods.B.mousePosY(e); this.lazyMouseY = 0; this.mouseX = e.clientX; this.mouseY = e.clientY; this.mouseDocX = x; this.mouseDocY = y; this.mouseMoveHandler(x, y); this.autoScroll(e); return this._cancelEvent(e) }, onMouseUp: function(e) { if (!e) var e = window.event; var src = (e.srcElement) ? e.srcElement: e.target; if (this.curDropTarget) { if (this.identity.stripe != this.curDropTarget.stripe) { stripe_switched = true } else { stripe_switched = false } this.curDropTarget.parentNode.replaceChild(this.srcElement, this.curDropTarget); this.master.flying_box.style.display = 'none'; this.master.drop_box.style.display = 'none'; this.identity.stripe = this.curDropTarget.stripe; this.identity.container = this.curDropTarget.container } SEMods.Apps.ProfileDragDrop.hideWarningBox(); this.master.flying = false; this._removeEvent(document.body, "mouseup"); this._removeEvent(document.body, "dragend"); this._removeEvent(document.body, "mousemove"); this._removeEvent(document.body, "drag"); this._removeEvent(document.body, "selectstart"); this.enableSelection(this.srcElement); document.onmousedown = this.mouseDownSaver; var success = true; if (this.identity.onDrop) { success = this.identity.onDrop(this.identity) } if (success != false) { if (stripe_switched && this.identity.contentvaries) { SEMods.Apps.ProfileDragDrop.reloadContent(this.srcElement.id, this.identity.stripe, this.identity.container) } SEMods.Apps.ProfileDragDrop.updateLayout() } }, _addEvent: function($obj, $event, $handler) { var fn = $handler; if (!$obj.attachedEvents) $obj.attachedEvents = new Array(); if ($obj.attachedEvents[$event]) this._removeEvent($obj, $event); $obj.attachedEvents[$event] = fn; if (typeof $obj.addEventListener != 'undefined') $obj.addEventListener($event, $handler, false); else if (typeof $obj.attachEvent != 'undefined') $obj.attachEvent('on' + $event, $handler) }, _removeEvent: function($obj, $event) { if (!$obj.attachedEvents || !$obj.attachedEvents[$event]) return; if (typeof $obj.removeEventListener != 'undefined') $obj.removeEventListener($event, $obj.attachedEvents[$event], false); else if (typeof $obj.detachEvent != 'undefined') $obj.detachEvent('on' + $event, $obj.attachedEvents[$event]) }, _cancelEvent: function(e) { var e = e ? e: window.event; if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false } } SEMods.Apps.JSON = new function() { this.encode = function() { var self = arguments.length ? arguments[0] : this, result, tmp; if (self === null) result = "null"; else if (self !== undefined && (tmp = $[typeof self](self))) { switch (tmp) { case Array: result = []; for (var i = 0, j = 0, k = self.length; j < k; j++) { if (self[j] !== undefined && (tmp = JSON.encode(self[j]))) result[i++] = tmp }; result = "[".concat(result.join(","), "]"); break; case Boolean: result = String(self); break; case Date: result = '"'.concat(self.getFullYear(), '-', d(self.getMonth() + 1), '-', d(self.getDate()), 'T', d(self.getHours()), ':', d(self.getMinutes()), ':', d(self.getSeconds()), '"'); break; case Function: break; case Number: result = isFinite(self) ? String(self) : "null"; break; case String: result = '"'.concat(self.replace(rs, s).replace(ru, u), '"'); break; default: var i = 0, key; result = []; for (key in self) { if (self[key] !== undefined && (tmp = JSON.encode(self[key]))) result[i++] = '"'.concat(key.replace(rs, s).replace(ru, u), '":', tmp) }; result = "{".concat(result.join(","), "}"); break } }; return result }; this.toDate = function() { var self = arguments.length ? arguments[0] : this, result; if (rd.test(self)) { result = new Date; result.setHours(i(self, 11, 2)); result.setMinutes(i(self, 14, 2)); result.setSeconds(i(self, 17, 2)); result.setMonth(i(self, 5, 2) - 1); result.setDate(i(self, 8, 2)); result.setFullYear(i(self, 0, 4)) } else if (rt.test(self)) result = new Date(self * 1000); return result }; var c = { "\b": "b", "\t": "t", "\n": "n", "\f": "f", "\r": "r", '"': '"', "\\": "\\", "/": "/" }, d = function(n) { return n < 10 ? "0".concat(n) : n }, e = function(c, f, e) { e = eval; delete eval; if (typeof eval === "undefined") eval = e; f = eval("" + c); eval = e; return f }, i = function(e, p, l) { return 1 * e.substr(p, l) }, p = ["", "000", "00", "0", ""], rc = null, rd = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/, rs = /(\x5c|\x2F|\x22|[\x0c-\x0d]|[\x08-\x0a])/g, rt = /^([0-9]+|[0-9]+[,\.][0-9]{1,3})$/, ru = /([\x00-\x07]|\x0b|[\x0e-\x1f])/g, s = function(i, d) { return "\\".concat(c[d]) }, u = function(i, d) { var n = d.charCodeAt(0).toString(16); return "\\u".concat(p[n.length], n) }, v = function(k, v) { return $[typeof result](result) !== Function && (v.hasOwnProperty ? v.hasOwnProperty(k) : v.constructor.prototype[k] !== v[k]) }, $ = { "boolean": function() { return Boolean }, "function": function() { return Function }, "number": function() { return Number }, "object": function(o) { return o instanceof o.constructor ? o.constructor: null }, "string": function() { return String }, "undefined": function() { return null } }, $$ = function(m) { function $(c, t) { t = c[m]; delete c[m]; try { e(c) } catch(z) { c[m] = t; return 1 } }; return $(Array) && $(Object) }; try { rc = new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$') } catch(z) { rc = /^(true|false|null|\[.*\]|\{.*\}|".*"|\d+|\d+\.\d+)$/ } }; SEMods.Apps.PageEditor = function() {}; SEMods.Apps.PageEditor = { apps_pagemenu_active: null, apps_pagemenu2_active: null, layout: {}, page_id: 0, view_id: 0, editor_elem: null, editor_elem_html: '', editor_elem_slide_direction: 0, slide_timer: 0, slide_chain: [], status: 0, designmode: 0, pageeditor_slide: function() { var m = parseInt(this.editor_elem.style.top); var delta = Math.round(Math.max(2, Math.min(12, Math.abs(m) / 3))); if (this.editor_elem_slide_direction == 0) { if (m >= 0) { this.slide_timer = 0; next = this.slide_chain.pop(); if (next) { next() } return } } else { if (m <= -this.editor_elem.offsetHeight) { this.slide_timer = 0; next = this.slide_chain.pop(); if (next) { next() } return } delta = -delta } this.editor_elem.style.top = m + delta + "px"; this.slide_timer = setTimeout(this.pageeditor_slide.bind(this), 50) }, load_page_editor: function(page_id, view_id) { if (this.status > 0) return; this.status = 1; this.editor_elem = document.createElement("DIV"); this.editor_elem.id = "pageeditor_wrapper"; this.editor_elem.innerHTML = "
Loading...
"; this.editor_elem.style.top = -100 + 'px'; document.body.appendChild(this.editor_elem); this.editor_elem.style.top = -this.editor_elem.offsetHeight + 'px'; this.slide_timer = setTimeout(this.pageeditor_slide.bind(this), 50); this.page_id = page_id; this.view_id = view_id; var ajax = new SEMods.Ajax(this.onLayoutPageEditorSuccess.bind(this), this.onLayoutPageEditorFail.bind(this)); var params = 'task=loadpageeditor&pid=' + this.page_id + '&vid=' + this.view_id + '&user=' + SEMods.Apps.ProfileDragDrop.owner; ajax.post(SEMods.Apps.api_endpoint, params) }, load_page_editor2: function(page_id, view_id, default_section) { if (this.status == 2) { this.show_page_editor2(); return; } if (!$("apps_overlay")) { new Element('div').setProperty('id', 'apps_overlay').inject(document.body); $('apps_overlay').setOpacity(0.6) } if (!$("apps_load")) { new Element('div').setProperty('id', 'apps_load').inject(document.body); $('apps_load').innerHTML = "Loading" } $('apps_load').setStyle('display', 'block'); this.editor_elem = document.createElement("DIV"); this.editor_elem.id = "pageeditor2_wrapper"; this.editor_elem.style.display = "none"; document.body.appendChild(this.editor_elem); this.editor_elem_iframe = document.createElement("IFRAME"); this.editor_elem_iframe.id = "pageeditor2_wrapper_iframe"; this.editor_elem_iframe.style.display = "none"; this.editor_elem_iframe.frameBorder = 0; document.body.appendChild(this.editor_elem_iframe); this.page_id = page_id; this.view_id = view_id; this.default_section = default_section; var ajax = new SEMods.Ajax(this.onLayoutPageEditor2Success.bind(this), this.onLayoutPageEditor2Fail.bind(this)); var params = 'task=loadpageeditor2&pid=' + this.page_id + '&vid=' + this.view_id + '&user=' + SEMods.Apps.ProfileDragDrop.owner; ajax.post(SEMods.Apps.api_endpoint, params) }, show_page_editor2 : function() { // adjust to screen height // pageeditmenu2_left (550), pageeditmenu2_right(550), pageeditor2_scroller_widgets(max-height: 480), pageeditor2_scroller_blocks(480), custom css textarea(450) var window_height = window.getHeight(); var pageeditormenu2_height = 640; if(window_height < 700) { var height_shift = 100; $('pageeditmenu2_left').setStyle('height', 550 - height_shift + 'px'); $('pageeditmenu2_right').setStyle('height', 550 - height_shift + 'px'); $('pageeditor2_scroller_widgets').setStyle('max-height', 480 - height_shift + 'px'); if($('pageeditor2_scroller_blocks') != null) { $('pageeditor2_scroller_blocks').setStyle('height', 480 - height_shift + 'px'); } if($('pageeditor2_style_customcss') != null) { $('pageeditor2_style_customcss').setStyle('height', 450 - height_shift + 'px'); } pageeditormenu2_height -= height_shift; } $('pageeditor2_wrapper').setStyle('left', (window.getWidth() - 700) / 2 + 'px'); $('pageeditor2_wrapper').setStyle('top', (window.getHeight() - pageeditormenu2_height) / 2 + 'px'); $('pageeditor2_wrapper').setStyle('display', 'block'); $('pageeditor2_wrapper_iframe').setStyle('height', pageeditormenu2_height + 'px'); $('pageeditor2_wrapper_iframe').setStyle('left', (window.getWidth() - 700) / 2 + 'px'); $('pageeditor2_wrapper_iframe').setStyle('top', (window.getHeight() - pageeditormenu2_height) / 2 + 'px'); $('pageeditor2_wrapper_iframe').setStyle('display', 'block'); $('apps_overlay').setStyle('display', 'block'); }, onAppPlaceCallback: function(identity) { if (identity.stripe == -1) { return } if (identity.placed) { return } identity.placed = true; SEMods.Apps.placeApp(identity.id, 1, SEMods.Apps.ProfileDragDrop.page_id, SEMods.Apps.ProfileDragDrop.view_id, SEMods.Apps.PageEditor.onAppPlaceFinished); return false }, onAppPlaceFinished: function(app_id) { $('appcontent_' + app_id).highlight('#FFFFCC'); SEMods.Apps.ProfileDragDrop.updateLayout(); if (SEMods.Apps.PageEditor.designmode == 1) { SEMods.B.show('appcontent_' + app_id); SEMods.Apps.ProfileDragDrop.reloadContentEx(app_id) } }, onDragStart2: function() { SEMods.Apps.PageEditor.padeeditor2_close() }, padeeditor2_close: function() { $('pageeditor2_wrapper').setStyle('display', 'none'); $('pageeditor2_wrapper_iframe').setStyle('display', 'none'); $('apps_overlay').setStyle('display', 'none') }, onLayoutPageEditor2Success: function(obj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1 }; $('apps_load').setStyle('display', 'none'); if (r.status == 0) { this.layout = r.layout; this.page_id = r.layout.page_id; this.view_id = r.layout.view_id; this.status = 2; this.designmode = 1; this.editor_elem_html = r.html; this.editor_elem.innerHTML = this.editor_elem_html; SEMods.Apps.ProfileDragDrop.add_new_objects(this.layout.newobjects, { 'onDrop': SEMods.Apps.PageEditor.onAppPlaceCallback, 'onDragStart': SEMods.Apps.PageEditor.onDragStart2.bind(this) }); var elem = SEMods.B.ge("pageeditor2_appsettings"); if (elem) { document.body.appendChild(elem.parentNode.removeChild(elem)) } this.show_page_editor2(); if (this.default_section) { SEMods.Apps.PageEditor.apps_pageeditmenu2_onclick(this.default_section) } else { SEMods.Apps.PageEditor.apps_pageeditmenu2_onclick('layout') } } else { this.status = 0; $('apps_overlay').setStyle('display', 'none'); apps_show_error_message(r.err_msg ? r.err_msg: '') } }, onLayoutPageEditorSuccess: function(obj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1 }; this.slide_chain.unshift(function() { this.editor_elem_slide_direction = 1; this.slide_timer = setTimeout(this.pageeditor_slide.bind(this), 50) }.bind(this)); if (r.status == 0) { this.layout = r.layout; this.page_id = r.layout.page_id; this.view_id = r.layout.view_id; this.status = 2; this.editor_elem_html = r.html; this.slide_chain.unshift(function() { this.editor_elem_slide_direction = 0; this.editor_elem.innerHTML = this.editor_elem_html; SEMods.Apps.ProfileDragDrop.add_new_objects(this.layout.newobjects, { 'onDrop': SEMods.Apps.PageEditor.onAppPlaceCallback }); this.slide_timer = setTimeout(this.pageeditor_slide.bind(this), 50) }.bind(this)); this.slide_chain.unshift(function() { var elem = SEMods.B.ge("pageeditor_appsettings"); if (elem) { document.body.appendChild(elem.parentNode.removeChild(elem)) } }.bind(this)) } else { this.status = 0; apps_show_error_message(r.err_msg ? r.err_msg: '') } if (this.slide_timer == 0) { var func = this.slide_chain.pop(); func() } }, onLayoutPageEditor2Fail: function(obj, responseText) { $('apps_load').setStyle('display', 'none'); $('apps_overlay').setStyle('display', 'none'); apps_show_error_message() }, onLayoutPageEditorFail: function(obj, responseText) { apps_show_error_message() }, save_layout: function() { if((this.layout.style_custom == 1) && ($('pageeditor2_style_customcss') != null)){ //params += '&style_css=' + $('pageeditor2_style_customcss').value; this.layout.style_css = $('pageeditor2_style_customcss').value.replace(/"/g, "jsedq"); } else { this.layout.style_css = ''; } var ajax = new SEMods.Ajax(this.onSaveLayoutSuccess.bind(this), this.onSaveLayoutFail.bind(this)); var params = 'task=savepagelayout&pid=' + this.page_id + '&vid=' + this.view_id + '&user=' + SEMods.Apps.ProfileDragDrop.owner; params += '&layout=' + SEMods.Apps.JSON.encode(this.layout); ajax.post(SEMods.Apps.api_endpoint, params) }, onSaveLayoutSuccess: function(obj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1 }; if (r.status == 0) { document.location = document.location } else { apps_show_error_message(r.err_msg ? r.err_msg: '') } }, onSaveLayoutFail: function(obj, responseText) { apps_show_error_message() }, apps_layoutmenu_onclick: function(id) { if (!SEMods.B.ge('widget_' + id).disabled) { SEMods.B.ge('widget_' + id).checked = !SEMods.B.ge('widget_' + id).checked; this.layout.widgets[id] = SEMods.B.ge('widget_' + id).checked * 1 } }, apps_pageeditmenu_onclick: function(id) { var apps_pagemenu_wasactive = this.apps_pagemenu_active; this.apps_pageeditmenu_hideall(); if (apps_pagemenu_wasactive != id) { SEMods.B.ge("menubutton_" + id).className = "pageeditor_button_active"; SEMods.B.show("pageeditor_menu_" + id); this.apps_pagemenu_active = id } }, apps_pageeditmenu2_onclick: function(id) { var apps_pagemenu_wasactive = this.apps_pagemenu2_active; this.apps_pageeditmenu2_hideall(); SEMods.B.ge("editor2_" + id).className = "pageeditor2_button_active"; SEMods.B.show("pageeditor2_menu_" + id); this.apps_pagemenu2_active = id }, apps_pageeditmenu2_hideall: function() { if (this.apps_pagemenu2_active) { SEMods.B.hide("pageeditor2_menu_" + this.apps_pagemenu2_active); SEMods.B.ge("editor2_" + this.apps_pagemenu2_active).className = ''; this.apps_pagemenu2_active = null } }, apps_pageeditmenu_hideall: function() { if (this.apps_pagemenu_active) { var elem = SEMods.B.ge("menubutton_" + this.apps_pagemenu_active); if (elem) elem.className = "pageeditor_button"; SEMods.B.hide("pageeditor_menu_" + this.apps_pagemenu_active); this.apps_pagemenu_active = null } }, apps_layout_select: function(id) { var elems = SEMods.Apps.ProfileDragDrop.getElementsByName_compat("apps_layout_selector", "A"); for (var i = 0; i < elems.length; i++) { elems[i].className = "ymenu_item layout_unselected" } SEMods.B.ge("apps_layout_selector_" + id).className = "ymenu_item layout_selected"; this.layout.layout_id = id }, apps_theme_select: function(id) { var elems = SEMods.Apps.ProfileDragDrop.getElementsByName_compat("apps_style_selector", "A"); for (var i = 0; i < elems.length; i++) { elems[i].className = "smenu_item style_unselected" } SEMods.B.ge("apps_style_selector_" + id).className = "smenu_item style_selected"; this.layout.style_id = id }, add_app: function(app_id) { this.onDragStart2(); SEMods.Apps.ProfileDragDrop.buildStripes(); identity = SEMods.Apps.ProfileDragDrop.getBoxIdentity(app_id); app_block_id = app_id; curDropTarget = SEMods.B.ge(app_block_id); stripe = SEMods.Apps.ProfileDragDrop.stripes[0]; stripe.e.insertBefore(curDropTarget, stripe.e.firstChild); identity.stripe = stripe.id; identity.container = stripe.c; if (identity.onDrop) { identity.onDrop(identity) } }, choose_style : function() { $('pageeditor2_style_choose').className = "active_style_tab"; $('pageeditor2_style_custom').className = ""; $('pageeditor2_style_custom_showroom').style.display = "none"; $('pageeditor2_style_choose_showroom').style.display = "block"; this.layout.style_custom = 0 }, custom_style : function() { $('pageeditor2_style_custom').className = "active_style_tab"; $('pageeditor2_style_choose').className = ""; $('pageeditor2_style_custom_showroom').style.display = "block"; $('pageeditor2_style_choose_showroom').style.display = "none"; this.layout.style_custom = 1 }, _cancelEvent: function(e) { var e = e ? e: window.event; if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false } } SEMods.Paginator = function(ajax_endpoint, total_items, nohide) { this.ajax_endpoint = ajax_endpoint; this.total_items = total_items; if (nohide) this.nohide = true } SEMods.Paginator.prototype = { obj: null, ajax_endpoint: '', current_page: 1, total_items: 1, last_visible_item: 1, ajaxProgressElem: 'paginator_ajax_progress', ajaxContentElem: 'ajax_content', nohide: false, params: '', onError_callback: null, onComplete_callback: null, set_url: function(url) { this.ajax_endpoint = url }, set_params: function(params) { this.params = params }, paginate_left: function() { SEMods.B.ge("left_paginator").blur(); if (this.current_page == 1) return false; this.paginate(this.current_page - 1) }, paginate_right: function() { SEMods.B.ge("right_paginator").blur(); if (this.total_items == this.last_visible_item) return false; this.paginate(this.current_page + 1) }, paginate: function(page) { SEMods.B.toggle(this.ajaxProgressElem, this.ajaxContentElem); var ajax = new SEMods.Ajax(this.onPaginateSuccess.bind(this), this.onPaginateFail.bind(this)); var params = "task=getitems" + "&p=" + page + this.params; ajax.post(this.ajax_endpoint, params) }, refresh: function() { this.paginate(this.current_page) }, hideAll: function() { SEMods.B.hide(this.ajaxProgressElem, this.ajaxContentElem, "paginator") }, showAll: function() { SEMods.B.show(this.ajaxContentElem); if ((this.current_page == 1) && (this.last_visible_item == this.total_items)) {} else SEMods.B.show("paginator") }, onPaginateSuccess: function(ajaxObj, responseText) { var r = []; try { r = eval('(' + responseText + ')') } catch(e) { r.status = 1; r.html = 'Error loading content.' }; if (typeof r != 'object') { r = []; r.status = 1; r.html = 'Error loading content.' } if (r.status == 0) { this.current_page = r.page; this.total_items = r.total; this.last_visible_item = r.to; SEMods.B.ge("page_from").innerHTML = r.from; SEMods.B.ge("page_to").innerHTML = r.to; SEMods.B.ge("total_items").innerHTML = r.total; if (this.total_items == 0) {} else { if ((this.current_page == 1) && (this.last_visible_item == this.total_items)) { if (!this.nohide) SEMods.B.hide("paginator") } else { SEMods.B.show("paginator") } } if (this.current_page == 1) { SEMods.B.ge("left_paginator").className = "paginator_disabled" } else { SEMods.B.ge("left_paginator").className = "" } if (r.total == r.to) { SEMods.B.ge("right_paginator").className = "paginator_disabled" } else { SEMods.B.ge("right_paginator").className = "" } } else if (this.onError_callback) { this.onError_callback() } SEMods.B.ge(this.ajaxContentElem).innerHTML = r.html; SEMods.B.toggle(this.ajaxProgressElem, this.ajaxContentElem) if (this.onComplete_callback) { this.onComplete_callback(); } }, onPaginateFail: function(ajaxObj, respText) { SEMods.B.ge(this.ajaxContentElem).innerHTML = "Error"; SEMods.B.toggle(this.ajaxProgressElem, this.ajaxContentElem); if (this.onError_callback) { this.onError_callback() } } } function SEModsBase() {}; SEModsBase.version = "1.0.1"; SEModsBase.prototype = { extend: function(source, value) { var extend = SEModsBase.prototype.extend; if (arguments.length == 2) { var ancestor = this[source]; if ((ancestor instanceof Function) && (value instanceof Function) && ancestor.valueOf() != value.valueOf() && /\b_super\b/.test(value)) { var method = value; value = function() { var previous = this._super; this._super = ancestor; var returnValue = method.apply(this, arguments); this._super = previous; return returnValue }; value.valueOf = function() { return method }; value.toString = function() { return String(method) } } return this[source] = value } else if (source) { var _prototype = { toSource: null }; var _protected = ["toString", "valueOf"]; if (SEModsBase._prototyping) _protected[2] = "constructor"; for (var i = 0; (name = _protected[i]); i++) { if (source[name] != _prototype[name]) { extend.call(this, name, source[name]) } } for (var name in source) { if (!_prototype[name]) { extend.call(this, name, source[name]) } } } return this }, _super: function() {} }; SEModsBase.extend = function(_instance, _static) { var extend = SEModsBase.prototype.extend; if (!_instance) _instance = {}; if (_instance.constructor == Object) { _instance.constructor = new Function } SEModsBase._prototyping = true; var _prototype = new this; extend.call(_prototype, _instance); var constructor = _prototype.constructor; _prototype.constructor = this; delete SEModsBase._prototyping; var klass = function() { if (!SEModsBase._prototyping) constructor.apply(this, arguments); this.constructor = klass }; klass.prototype = _prototype; klass.extend = this.extend; klass.toString = function() { return String(constructor) }; extend.call(klass, _static); var object = constructor ? klass: _prototype; if (object.constructor instanceof Function) object.constructor(); return object }; var semods_app = SEModsBase.extend({ app_id: '', page_id: '', view_id: '', instance_id: '', stripe: '', container: '', placement: '', app_block_id: '', owner: '', timer: null, timer_period: 60 * 1000, APPS_PAGE_PROFILE: 1, APPS_PAGE_USERHOME: 2, APPS_PAGE_MYPAGE: 3, APPS_PAGE_GROUP: 4, APPS_PAGE_HOME: 5, APPS_PAGE_EVENT: 6, APPS_PAGE_NETWORK: 7, APPS_PAGE_CANVAS: 100, constructor: function(app_id, page_id, view_id, instance_id, stripe_id, container, placement) { this.app_id = app_id; this.page_id = page_id; this.view_id = view_id; this.instance_id = instance_id; this.stripe_id = stripe_id; this.container = container; this.placement = placement; this.app_block_id = 'app_' + app_id }, request: function(params, onDone, onFail) { var ajax = new SEMods.Ajax(onDone, onFail); var ajax_params = 'pageid=' + this.page_id + '&viewid=' + this.view_id + '&appid=' + this.app_id + '&instanceid=' + this.instance_id; if (this.stripe_id) { ajax_params += '&stripe=' + this.stripe_id } if (this.container) { ajax_params += '&container=' + this.container } if (this.placement) { ajax_params += '&placement=' + this.placement } if (params) { ajax_params += '&' + params } ajax.post(SEMods.Apps.ProfileDragDrop.api_content_endpoint, ajax_params) }, set_timer_period_in_seconds: function(timer_period) { this.timer_period = timer_period * 1000 }, start_timer: function(timer_period) { if (typeof timer_period == 'undefined') timer_period = this.timer_period; if (timer_period == 0) return; if (this.on_timer) { this.timer = setTimeout(this.on_timer.bind(this), timer_period) } }, stop_timer: function() { clearTimeout(this.timer) }, register_on_drop: function() { if (this.on_drop) { SEMods.Apps.register_on_drop(this.app_id, this.on_drop.bind(this)) } }, register_on_ajax_load: function() { if (this.on_ajax_load) { SEMods.Apps.register_on_ajax_load(this.app_id, this.on_ajax_load.bind(this)) } }, submit_form: function(form_id) { var elem = SEMods.B.ge(form_id); if (!elem) { return } var editinplace = 1; var editor = new SEMods.Apps.ContentEditor(this.page_id, this.view_id, this.app_id, this.app_block_id, this.stripe_id, this.placement, this.container, this.owner, editinplace); editor.form = elem; editor.submit_form() }, load_content: function() { SEMods.Apps.ProfileDragDrop.reloadContentEx(this.app_block_id) } }); SEMods.Apps.RssFeedReader = {}; SEMods.Apps.RssFeedReader = { feeds : [], status : 0, app_id : 0, item_id : 0, iframe_elem : null, iframe_wrapper_elem : null, iframe_active : false, position_save_y : 0, reader_hidden : true, unread_count : 0, content_window : null, current_feed_item_id : null, overlay_iframe : null, read_content_inline : false, setting_dock_to_menu : 1, setting_rssreader_enabled : 1, setting_show_bottom_ad : 0, setting_bottom_ad_height : 60, lang_feed_view : '', lang_web_view : '', browser_overlay_iframe : !SEMods.Browser.isOpera && !/Safari/i.test(navigator.userAgent), read_all : function() { $$('div.rss_feed_reader_headline').each( function(el) { el.removeClass('rss_feed_reader_headline_unread'); el.addClass('rss_feed_reader_headline_read');} ); var read_items = []; for (var i in this.feeds[this.app_id].items) { this.feeds[this.app_id].items[i].unread = false; read_items.push(i); } this.unread_count = 0; this.update_unread_counter(); read_items.join(','); var params = 'task=rss_feed_read_all&pid=' + SEMods.Apps.ProfileDragDrop.page_id+ '&vid=' + SEMods.Apps.ProfileDragDrop.view_id + '&appid=' + this.app_id + '&feed_read_items=' + read_items; new SEMods.Ajax().post(SEMods.Apps.ProfileDragDrop.api_endpoint, params) }, unread_all : function() { $$('div.rss_feed_reader_headline').each( function(el) { el.removeClass('rss_feed_reader_headline_read'); el.addClass('rss_feed_reader_headline_unread');} ); for (var i in this.feeds[this.app_id].items) { this.feeds[this.app_id].items[i].unread = true; } this.unread_count = $$('div.rss_feed_reader_headline').length; this.update_unread_counter(); var params = 'task=rss_feed_unread_all&pid=' + SEMods.Apps.ProfileDragDrop.page_id+ '&vid=' + SEMods.Apps.ProfileDragDrop.view_id + '&appid=' + this.app_id; new SEMods.Ajax().post(SEMods.Apps.ProfileDragDrop.api_endpoint, params) }, switch_content_view : function() { // iframe -> inline if(this.read_content_inline == 1) { $('rss_feed_reader_button_contentviewswitch').innerHTML = this.lang_feed_view; this.read_content_inline = 0; } else { $('rss_feed_reader_button_contentviewswitch').innerHTML = this.lang_web_view; this.read_content_inline = 1; this.iframe_active = 0; if(this.iframe_elem) { this.iframe_elem.parentNode.removeChild(this.iframe_elem); } } this.show_item(this.current_feed_item_id); }, update_unread_counter : function() { $('rss_feed_reader_unreadcount').innerHTML = this.unread_count; }, read_item : function (app_id,feed_item_id) { this.app_id = app_id; this.item_id = feed_item_id; this.current_feed_item_id = null; if(this.setting_rssreader_enabled == 1) { this.populate_items(); this.show_feed_reader(); this.show_item(feed_item_id); } else { this.show_item_in_new_window(feed_item_id); } }, show_item_in_new_window : function(feed_item_id) { var feed_item = this.feeds[this.app_id].items[feed_item_id]; if (typeof feed_item == 'undefined') { feed_item = this.current_feed_item_obj; } this.current_feed_item_id = feed_item_id; this.current_feed_item_obj = feed_item; if(feed_item.unread) { this.unread_count--; feed_item.unread = false; this.report_read_item(feed_item_id); } window.open(feed_item.link); }, set_feed : function(app_id, feed) { this.feeds[app_id] = feed; // TODO: make new items slide from top if(!this.reader_hidden && (this.app_id == app_id)) { this.populate_items(); } }, show_item : function(feed_item_id) { var feed_item = this.feeds[this.app_id].items[feed_item_id]; if (typeof feed_item == 'undefined') { // try to recover from current item feed_item = this.current_feed_item_obj; } this.current_feed_item_id = feed_item_id; this.current_feed_item_obj = feed_item; var src_elem = this.app_id + "_" + feed_item_id; try { $(src_elem).removeClass('rss_feed_reader_headline_unread'); $(src_elem).addClass('rss_feed_reader_headline_read'); } catch(ex) {} try { if(this.current_feed_item) { $(this.current_feed_item).removeClass('rss_feed_reader_headline_selected'); } } catch(ex) {} try { this.current_feed_item = src_elem; $(src_elem).addClass('rss_feed_reader_headline_selected'); } catch(ex) {} if(this.read_content_inline == 1) { $('rss_feed_reader_content_title_link').href = feed_item.link; $('rss_feed_reader_content_title_link').innerHTML = feed_item.title; $('rss_feed_reader_content_title_date').innerHTML = feed_item.date; $('rss_feed_reader_content_content').innerHTML = feed_item.content; $('rss_feed_reader_content_inline').style.display = 'block'; } else { $('rss_feed_reader_content_inline').style.display = 'none'; if(this.iframe_elem == null) { this.iframe_elem = document.createElement("IFRAME"); this.iframe_elem.id = "rss_feed_reader_content_iframe"; //var height_delta = 18; // offsets var height_delta = 2; // offsets $(this.iframe_elem).setStyle('height', $('rss_feed_reader_content').offsetHeight - height_delta + 'px'); //$(this.iframe_elem).setStyle('width', $('rss_feed_reader_content').offsetWidth - 4 + 'px'); $(this.iframe_elem).setStyle('width', $('rss_feed_reader_content').offsetWidth - 2 + 'px'); this.iframe_elem.frameBorder = 0; } if(!this.iframe_active) { $('rss_feed_reader_content').appendChild(this.iframe_elem); this.iframe_active = true; } this.iframe_elem.src = feed_item.link; } if(feed_item.unread) { this.unread_count--; feed_item.unread = false; this.report_read_item(feed_item_id); } this.update_unread_counter(); }, report_read_item : function(feed_item_id) { var feed_item = this.feeds[this.app_id].items[feed_item_id]; var ajax = new SEMods.Ajax(); var params = 'task=rss_feed_read_item&pid=' + SEMods.Apps.ProfileDragDrop.page_id+ '&vid=' + SEMods.Apps.ProfileDragDrop.view_id + '&appid=' + this.app_id + '&feed_item_id=' + feed_item_id + '&feed_item_link=' + escape(feed_item.link) + '&feed_item_title=' + encodeURIComponent(feed_item.title); ajax.post(SEMods.Apps.ProfileDragDrop.api_endpoint, params) }, populate_items : function() { items = ''; var unread_count = 0; for (var i in this.feeds[this.app_id].items) { readundreadclass = this.feeds[this.app_id].items[i].unread ? "rss_feed_reader_headline_unread" : "rss_feed_reader_headline_read"; if(this.feeds[this.app_id].items[i].unread) { unread_count++; } items += ""; } this.unread_count = unread_count; $('rss_feed_reader_headlines').innerHTML = items; }, show_feed_reader : function() { this.position_save_y = $(document.body).getScrollTop(); if(this.browser_overlay_iframe) { if(this.iframe_wrapper_elem == null) { this.iframe_wrapper_elem = document.createElement("IFRAME"); this.iframe_wrapper_elem.id = "rss_feed_reader_wrapper_iframe"; this.iframe_wrapper_elem.style.display = "none"; this.iframe_wrapper_elem.frameBorder = 0; document.body.appendChild(this.iframe_wrapper_elem); } } $('rss_feed_reader_wrapper').setStyle('display', 'block'); if(this.browser_overlay_iframe) { $('rss_feed_reader_wrapper_iframe').setStyle('display', 'block'); } $(document.body).setStyle('overflow', 'hidden'); document.body.scroll = "no"; this.adjust_to_screen(); new Fx.Scroll($(document.body)).set(0, 0); this.reader_hidden = false; if(!this.browser_overlay_iframe) { // hide "content" div var content_window = $$('div.content'); if(content_window && content_window.length > 0) { this.content_window = content_window[0]; if(SEMods.Browser.isIE) { this.content_window.setStyle('margin-left', '-9999px'); } else { this.content_window.style.display = "none"; } } } // ad if(this.setting_show_bottom_ad == 1) { $('rss_feed_reader_ads').setStyle('height', this.setting_bottom_ad_height + 'px'); $('rss_feed_reader_ads').setStyle('display', 'block'); } // feed title var feed = this.feeds[this.app_id]; $('rss_feed_reader_title_link').innerHTML = feed.title; this._addEvent(document.body, "resize", this.onResize.bind(this)); }, adjust_to_screen : function() { // adjust to screen height // pageeditmenu2_left (550), pageeditmenu2_right(550), pageeditor2_scroller_widgets(max-height: 480), pageeditor2_scroller_blocks(480) var window_height = window.getHeight(); var window_width = window.getWidth(); var height_shift = 0; if(this.setting_dock_to_menu == '1') { var content_window = $$('div.content'); if(content_window && content_window.length > 0) { content_window = content_window[0]; height_shift = SEMods.B.findY(content_window); } } var height_delta = 30 + 10 + 10 + 10 + 4*2; // header height+padding + border (4) var width_delta = 5*2 + 4*2; // margin + border // chat plugin var bottom_height_shift = 0; if($('seIM_tray') && ($$('td.seIMInvisible').length == 0) ) { bottom_height_shift = $('seIM_tray').getHeight(); } $('rss_feed_reader_headlines').setStyle('height', window_height - height_shift - bottom_height_shift - height_delta + 'px'); var content_height_shift = 0; if(this.setting_show_bottom_ad == 1) { content_height_shift += this.setting_bottom_ad_height; // ads //content_height_shift += 100; // ads } $('rss_feed_reader_content').setStyle('height', window_height - height_shift - bottom_height_shift - height_delta - content_height_shift + 'px'); $('rss_feed_reader_wrapper').setStyle('width', window_width - width_delta + 'px'); $('rss_feed_reader_wrapper').setStyle('left', '0px'); $('rss_feed_reader_wrapper').setStyle('top', height_shift + 'px'); $('rss_feed_reader_wrapper').setStyle('display', 'block'); if(this.browser_overlay_iframe) { $('rss_feed_reader_wrapper_iframe').setStyle('width', window_width - width_delta + 'px'); $('rss_feed_reader_wrapper_iframe').setStyle('left', '0px'); $('rss_feed_reader_wrapper_iframe').setStyle('top', height_shift + 'px'); $('rss_feed_reader_wrapper_iframe').setStyle('display', 'block'); $('rss_feed_reader_wrapper_iframe').setStyle('height', $('rss_feed_reader_wrapper').getHeight() + 'px' ); } if(!this.browser_overlay_iframe) { $('rss_feed_reader_wrapper').setStyle('z-index', '0'); } }, hide_feed_reader : function() { this._removeEvent(document.body, "resize"); this.reader_hidden = true; if(!this.browser_overlay_iframe) { if(this.content_window) { if(SEMods.Browser.isIE) { this.content_window.setStyle('margin-left', '0px'); } else { this.content_window.style.display = "block"; } } } new Fx.Scroll($(document.body)).set(0, this.position_save_y); $('rss_feed_reader_wrapper').setStyle('display', 'none'); if(this.browser_overlay_iframe) { $('rss_feed_reader_wrapper_iframe').setStyle('display', 'none'); } $(document.body).setStyle('overflow', 'auto'); document.body.scroll = "auto"; // also hide iframe if(this.iframe_elem) { this.iframe_elem.src = ""; } }, onResize : function() { this.adjust_to_screen(); }, load_feed_reader : function() { }, _addEvent: function($obj, $event, $handler) { var fn = $handler; if (!$obj.attachedEvents) $obj.attachedEvents = new Array(); if ($obj.attachedEvents[$event]) this._removeEvent($obj, $event); $obj.attachedEvents[$event] = fn; if (typeof $obj.addEventListener != 'undefined') $obj.addEventListener($event, $handler, false); else if (typeof $obj.attachEvent != 'undefined') $obj.attachEvent('on' + $event, $handler) }, _removeEvent: function($obj, $event) { if (!$obj.attachedEvents || !$obj.attachedEvents[$event]) return; if (typeof $obj.removeEventListener != 'undefined') $obj.removeEventListener($event, $obj.attachedEvents[$event], false); else if (typeof $obj.detachEvent != 'undefined') $obj.detachEvent('on' + $event, $obj.attachedEvents[$event]) }, _cancelEvent: function(e) { var e = e ? e: window.event; if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false } }