/* [Discuz!] (C)2001-2099 Comsenz Inc. This is NOT a freeware, use is subject to license terms $Id: common_diy.js 31093 2012-07-16 03:54:34Z zhangguosheng $ */ String.prototype.property2js = function(){ var t = this.replace(/-([a-z])/g, function($0, $1) {return $1.toUpperCase();}); return t; }; function styleCss(n) { if(typeof n == "number") { var _s = document.styleSheets[n]; } else { return false; } this.sheet = _s; this.rules = _s.cssRules ? _s.cssRules : _s.rules; }; styleCss.prototype.indexOf = function(selector) { for(var i = 0; i < this.rules.length; i++) { if (typeof(this.rules[i].selectorText) == 'undefined') continue; if(this.rules[i].selectorText == selector) { return i; } } return -1; }; styleCss.prototype.removeRule = function(n) { if(typeof n == "number") { if(n < this.rules.length) { this.sheet.removeRule ? this.sheet.removeRule(n) : this.sheet.deleteRule(n); } } else { var i = this.indexOf(n); if (i>0) this.sheet.removeRule ? this.sheet.removeRule(i) : this.sheet.deleteRule(i); } }; styleCss.prototype.addRule = function(selector, styles, n, porperty) { var i = this.indexOf(selector); var s = ''; var reg = ''; if (i != -1) { reg = new RegExp('^'+porperty+'.*;','i'); s = this.getRule(selector); if (s) { s = s.replace(selector,'').replace('{', '').replace('}', '').replace(/ /g, ' ').replace(/^ | $/g,''); s = (s != '' && s.substr(-1,1) != ';') ? s+ ';' : s; s = s.toLowerCase().replace(reg, ''); if (s.length == 1) s = ''; } this.removeRule(i); } s = s.indexOf('!important') > -1 || s.indexOf('! important') > -1 ? s : s.replace(/;/g,' !important;'); s = s + styles; if (typeof n == 'undefined' || !isNaN(n)) { n = this.rules.length; } if (this.sheet.insertRule) { this.sheet.insertRule(selector+'{'+s+'}', n); } else { if (s) this.sheet.addRule(selector, s, n); } }; styleCss.prototype.setRule = function(selector, attribute, value) { var i = this.indexOf(selector); if(-1 == i) return false; this.rules[i].style[attribute] = value; return true; }; styleCss.prototype.getRule = function(selector, attribute) { var i = this.indexOf(selector); if(-1 == i) return ''; var value = ''; if (typeof attribute == 'undefined') { value = typeof this.rules[i].cssText != 'undefined' ? this.rules[i].cssText : this.rules[i].style['cssText']; } else { value = this.rules[i].style[attribute]; } return typeof value != 'undefined' ? value : ''; }; styleCss.prototype.removeAllRule = function(noSearch) { var num = this.rules.length; var j = 0; for(var i = 0; i < num; i ++) { var selector = this.rules[this.rules.length - 1 - j].selectorText; if(noSearch == 1) { this.sheet.removeRule ? this.sheet.removeRule(this.rules.length - 1 - j) : this.sheet.deleteRule(this.rules.length - 1 - j); } else { j++; } } }; if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (element, index) { var length = this.length; if (index == null) { index = 0; } else { index = (!isNaN(index) ? index : parseInt(index)); if (index < 0) index = length + index; if (index < 0) index = 0; } for (var i = index; i < length; i++) { var current = this[i]; if (!(typeof(current) === 'undefined') || i in this) { if (current === element) return i; } } return -1; }; } if (!Array.prototype.filter){ Array.prototype.filter = function(fun , thisp){ var len = this.length; if (typeof fun != "function") throw new TypeError(); var res = new Array(); var thisp = arguments[1]; for (var i = 0; i < len; i++){ if (i in this){ var val = this[i]; if (fun.call(thisp, val, i, this)) res.push(val); } } return res; }; } var Util = { event: function(event){ Util.e = event || window.event; Util.e.aim = Util.e.target || Util.e.srcElement; if (!Util.e.preventDefault) { Util.e.preventDefault = function(){ Util.e.returnValue = false; }; } if (!Util.e.stopPropagation) { Util.e.stopPropagation = function(){ Util.e.cancelBubble = true; }; } if (typeof Util.e.layerX == "undefined") { Util.e.layerX = Util.e.offsetX; } if (typeof Util.e.layerY == "undefined") { Util.e.layerY = Util.e.offsetY; } if (typeof Util.e.which == "undefined") { Util.e.which = Util.e.button; } return Util.e; }, url: function(s){ var s2 = s.replace(/(\(|\)|\,|\s|\'|\"|\\)/g, '\\$1'); if (/\\\\$/.test(s2)) { s2 += ' '; } return "url('" + s2 + "')"; }, trimUrl : function(s){ var s2 = s.toLowerCase().replace(/url\(|\"|\'|\)/g,''); return s2; }, swapDomNodes: function(a, b){ var afterA = a.nextSibling; if (afterA == b) { swapDomNodes(b, a); return; } var aParent = a.parentNode; b.parentNode.replaceChild(a, b); aParent.insertBefore(b, afterA); }, hasClass: function(el, name){ return el && el.nodeType == 1 && el.className.split(/\s+/).indexOf(name) != -1; }, addClass: function(el, name){ el.className += this.hasClass(el, name) ? '' : ' ' + name; }, removeClass: function(el, name){ var names = el.className.split(/\s+/); el.className = names.filter(function(n){ return name != n; }).join(' '); }, getTarget: function(e, attributeName, value){ var target = e.target || e.srcElement; while (target != null) { if (attributeName == 'className') { if (this.hasClass(target, value)) { return target; } }else if (target[attributeName] == value) { return target; } target = target.parentNode; } return false; }, getOffset:function (el, isLeft) { var retValue = 0 ; while (el != null ) { retValue += el["offset" + (isLeft ? "Left" : "Top" )]; el = el.offsetParent; } return retValue; }, insertBefore: function (newNode, targetNode) { var parentNode = targetNode.parentNode; var next = targetNode.nextSibling; if (targetNode.id && targetNode.id.indexOf('temp')>-1) { parentNode.insertBefore(newNode,targetNode); } else if (!next) { parentNode.appendChild(newNode); } else { parentNode.insertBefore(newNode,targetNode); } }, insertAfter : function (newNode, targetNode) { var parentNode = targetNode.parentNode; var next = targetNode.nextSibling; if (next) { parentNode.insertBefore(newNode,next); } else { parentNode.appendChild(newNode); } }, getScroll: function () { var t, l, w, h; if (document.documentElement && document.documentElement.scrollTop) { t = document.documentElement.scrollTop; l = document.documentElement.scrollLeft; w = document.documentElement.scrollWidth; h = document.documentElement.scrollHeight; } else if (document.body) { t = document.body.scrollTop; l = document.body.scrollLeft; w = document.body.scrollWidth; h = document.body.scrollHeight; } return {t: t, l: l, w: w, h: h}; }, hide:function (ele){ if (typeof ele == 'string') {ele = $(ele);} if (ele){ele.style.display = 'none';ele.style.visibility = 'hidden';} }, show:function (ele){ if (typeof ele == 'string') {ele = $(ele);} if (ele) { this.removeClass(ele, 'hide'); ele.style.display = ''; ele.style.visibility = 'visible'; } }, cancelSelect : function () { window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); }, getSelectText : function () { var t = ''; if (window.getSelection) { t = window.getSelection(); } else if (document.getSelection) { t = document.getSelection(); } else if (document.selection) { t = document.selection.createRange().text; } else { t = ''; } return t; }, toggleEle : function (ele) { ele = (typeof ele !='object') ? $(ele) : ele; if (!ele) return false; var value = this.getFinallyStyle(ele,'display'); if (value =='none') { this.show(ele); this.hide($('uploadmsg_button')); } else { this.hide(ele); this.show($('uploadmsg_button')); } }, getFinallyStyle : function (ele,property) { ele = (typeof ele !='object') ? $(ele) : ele; var style = (typeof(ele['currentStyle']) == 'undefined') ? window.getComputedStyle(ele,null)[property] : ele['currentStyle'][property]; if (typeof style == 'undefined' && property == 'backgroundPosition') { style = ele['currentStyle']['backgroundPositionX'] + ' ' +ele['currentStyle']['backgroundPositionY']; } return style; }, recolored:function (){ var b = document.body; b.style.zoom = b.style.zoom=="1"?"100%":"1"; }, getRandom : function (len,type) { len = len < 0 ? 0 : len; type = type && type<=3? type : 3; var str = ''; for (var i = 0; i < len; i++) { var j = Math.ceil(Math.random()*type); if (j == 1) { str += Math.ceil(Math.random()*9); } else if (j == 2) { str += String.fromCharCode(Math.ceil(Math.random()*25+65)); } else { str += String.fromCharCode(Math.ceil(Math.random()*25+97)); } } return str; }, fade : function(obj,timer,ftype,cur,fn) { if (this.stack == undefined) {this.stack = [];} obj = typeof obj == 'string' ? $(obj) : obj; if (!obj) return false; for (var i=0;i= 100 || ftype == 'out' && cur <= 0) { clearTimeout(fadeTimer); for (i=0;i-1 || color.toLowerCase() == 'transparent' ? color : '#'+Util.rgb2hex(color); } }; (function(){ Frame = function(name, className, top, left, moveable){ this.name = name; this.top = top; this.left = left; this.moveable = moveable ? true : false; this.columns = []; this.className = className; this.titles = []; if (typeof Frame._init == 'undefined') { Frame.prototype.addColumn = function (column) { if (column instanceof Column) { this.columns[column.name] = column; } }; Frame.prototype.addFrame = function(columnId, frame) { if (frame instanceof Frame || frame instanceof Tab){ this.columns[columnId].children.push(frame); } }; Frame.prototype.addBlock = function(columnId, block) { if (block instanceof Block){ this.columns[columnId].children.push(block); } }; } Frame._init = true; }; Column = function (name, className) { this.name = name; this.className = className; this.children = []; }; Tab = function (name, className, top, left, moveable) { Frame.apply(this, arguments); }; Tab.prototype = new Frame(); Block = function(name, className, top, left) { this.name = name; this.top = top; this.left = left; this.className = className; this.titles = []; }; Drag = function () { this.data = []; this.scroll = {}; this.menu = []; this.data = []; this.allBlocks = []; this.overObj = ''; this.dragObj = ''; this.dragObjFrame = ''; this.overObjFrame = ''; this.isDragging = false; this.layout = 2; this.frameClass = 'frame'; this.blockClass = 'block'; this.areaClass = 'area'; this.moveableArea = []; this.moveableColumn = 'column'; this.moveableObject = 'move-span'; this.titleClass = 'title'; this.hideClass = 'hide'; this.titleTextClass = 'titletext'; this.frameTitleClass = 'frame-title', this.tabClass = 'frame-tab'; this.tabActivityClass = 'tabactivity'; this.tabTitleClass = 'tab-title'; this.tabContentClass = 'tb-c'; this.moving = 'moving'; this.contentClass = 'dxb_bc'; this.tmpBoxElement = null ; this.dargRelative = {}; this.scroll = {}; this.menu = []; this.rein = []; this.newFlag = false; this.isChange = false; this.fn = ''; this._replaceFlag = false; this.sampleMode = false; this.sampleBlocks = null; this.advancedStyleSheet = null; }; Drag.prototype = { getTmpBoxElement : function () { if (!this.tmpBoxElement) { this.tmpBoxElement = document.createElement("div"); this.tmpBoxElement.id = 'tmpbox'; this.tmpBoxElement.className = "tmpbox" ; this.tmpBoxElement.style.width = this.overObj.offsetWidth-4+"px"; this.tmpBoxElement.style.height = this.overObj.offsetHeight-4+"px"; } else if (this.overObj && this.overObj.offsetWidth > 0) { this.tmpBoxElement.style.width = this.overObj.offsetWidth-4+"px"; } return this.tmpBoxElement; }, getPositionStr : function (){ this.initPosition(); var start = ''; var end =""; var str = ""; for (var i in this.data) { if (typeof this.data[i] == 'function') continue; str += ''; for (var j in this.data[i]) { if (!(this.data[i][j] instanceof Frame || this.data[i][j] instanceof Tab)) continue; str += this._getFrameXML(this.data[i][j]); } str += ''; } return start + str + end; }, _getFrameXML : function (frame) { if (!(frame instanceof Frame || frame instanceof Tab) || frame.name.indexOf('temp') > 0) return ''; var itemId = frame instanceof Tab ? 'tab' : 'frame'; var Cstr = ""; var name = frame.name; var frameAttr = this._getAttrXML(frame); var columns = frame['columns']; for (var j in columns) { if (columns[j] instanceof Column) { var Bstr = ''; var colChildren = columns[j].children; for (var k in colChildren) { if (k == 'attr' || typeof colChildren[k] == 'function' || colChildren[k].name.indexOf('temp') > 0) continue; if (colChildren[k] instanceof Block) { Bstr += ''; Bstr += this._getAttrXML(colChildren[k]); Bstr += ''; } else if (colChildren[k] instanceof Frame || colChildren[k] instanceof Tab) { Bstr += this._getFrameXML(colChildren[k]); } } var columnAttr = this._getAttrXML(columns[j]); Cstr += '' + columnAttr + Bstr + ''; } } return '' + frameAttr + Cstr + ''; }, _getAttrXML : function (obj) { var attrXml = ''; var trimAttr = ['left', 'top']; var xml = ''; if (obj instanceof Frame || obj instanceof Tab || obj instanceof Block || obj instanceof Column) { for (var i in obj) { if (i == 'titles') { xml += this._getTitlesXML(obj[i]); } if (!(typeof obj[i] == 'object' || typeof obj[i] == 'function')) { if (trimAttr.indexOf(i) >= 0) continue; xml += ''; } } }else { xml += ''; } return attrXml + xml + ''; }, _getTitlesXML : function (titles) { var xml = ''; for (var i in titles) { if (typeof titles[i] == 'function') continue; xml += ''; for (var j in titles[i]) { if (typeof titles[i][j] == 'function') continue; xml += ''; } xml += ''; } xml += ''; return xml; }, getCurrentOverObj : function (e) { var _clientX = parseInt(this.dragObj.style.left); var _clientY = parseInt(this.dragObj.style.top); var max = 10000000; for (var i in this.data) { for (var j in this.data[i]) { if (!(this.data[i][j] instanceof Frame || this.data[i][j] instanceof Tab)) continue; var min = this._getMinDistance(this.data[i][j], max); if (min.distance < max) { var id = min.id; max = min.distance; } } } return $(id); }, _getMinDistance : function (ele, max) { if(ele.name==this.dragObj.id) return {"id":ele.name, "distance":max}; var _clientX = parseInt(this.dragObj.style.left); var _clientY = parseInt(this.dragObj.style.top); var id; var isTabInTab = Util.hasClass(this.dragObj, this.tabClass) && Util.hasClass($(ele.name).parentNode.parentNode, this.tabClass); if (ele instanceof Frame || ele instanceof Tab) { if (ele.moveable && !isTabInTab) { var isTab = Util.hasClass(this.dragObj, this.tabClass); var isFrame = Util.hasClass(this.dragObj, this.frameClass); var isBlock = Util.hasClass(this.dragObj, this.blockClass) && Util.hasClass($(ele.name).parentNode, this.moveableColumn); if ( isTab || isFrame || isBlock) { var _Y = ele['top'] - _clientY; var _X = ele['left'] - _clientX; var distance = Math.sqrt(Math.pow(_X, 2) + Math.pow(_Y, 2)); if (distance < max) { max = distance; id = ele.name; } } } for (var i in ele['columns']) { var column = ele['columns'][i]; if (column instanceof Column) { for (var j in column['children']) { if ((column['children'][j] instanceof Tab || column['children'][j] instanceof Frame || column['children'][j] instanceof Block)) { var min = this._getMinDistance(column['children'][j], max); if (min.distance < max) { id = min.id; max = min.distance; } } } } } return {"id":id, "distance":max}; } else { if (isTabInTab) return {'id': ele['name'], 'distance': max}; var _Y = ele['top'] - _clientY; var _X = ele['left'] - _clientX; var distance = Math.sqrt(Math.pow(_X, 2) + Math.pow(_Y, 2)); if (distance < max) { return {'id': ele['name'], 'distance': distance}; } else { return {'id': ele['name'], 'distance': max}; } } }, getObjByName : function (name, data) { if (!name) return false; data = data || this.data; if ( data instanceof Frame) { if (data.name == name) { return data; } else { var d = this.getObjByName(name,data['columns']); if (name == d.name) return d; } } else if (data instanceof Block) { if (data.name == name) return data; } else if (typeof data == 'object') { for (var i in data) { var d = this.getObjByName(name, data[i]); if (name == d.name) return d; } } return false; }, initPosition : function () { this.data = [],this.allBlocks = []; var blocks = $C(this.blockClass); for(var i = 0; i < blocks.length; i++) { if (blocks[i]['id'].indexOf('temp') < 0) { this.checkEdit(blocks[i]); this.allBlocks.push(blocks[i]['id'].replace('portal_block_','')); } } var areaLen = this.moveableArea.length; for (var j = 0; j < areaLen; j++ ) { var area = this.moveableArea[j]; var areaData = []; if (typeof area == 'object') { this.checkTempDiv(area.id); var frames = area.childNodes; for (var i in frames) { if (typeof(frames[i]) != 'object') continue; if (Util.hasClass(frames[i], this.frameClass) || Util.hasClass(frames[i], this.blockClass) || Util.hasClass(frames[i], this.tabClass) || Util.hasClass(frames[i], this.moveableObject)) { areaData.push(this.initFrame(frames[i])); } } this.data[area.id] = areaData; } } this._replaceFlag = true; }, removeBlockPointer : function(e) {this.removeBlock(e);}, toggleContent : function (e) { if ( typeof e !== 'string') { e = Util.event(e); var id = e.aim.id.replace('_edit_toggle',''); } else { id = e; } var obj = this.getObjByName(id); var display = ''; if (obj instanceof Block || obj instanceof Tab) { display = $(id+'_content').style.display; Util.toggleEle(id+'_content'); } else { var col = obj.columns; for (var i in col) { display = $(i).style.display; Util.toggleEle($(i)); } } if(display != '') { e.aim.src=STATICURL+'/image/common/fl_collapsed_no.gif'; } else { e.aim.src=STATICURL+'/image/common/fl_collapsed_yes.gif'; } }, checkEdit : function (ele) { if (!ele || Util.hasClass(ele, 'temp') || ele.getAttribute('noedit')) return false; var id = ele.id; var _method = this; if (!$(id+'_edit')) { var _method = this; var dom = document.createElement('div'); dom.className = 'edit hide'; dom.id = id+'_edit'; dom.innerHTML = '编辑'; ele.appendChild(dom); $(id+'_edit_menu').onclick = function (e){Drag.prototype.toggleMenu.call(_method, e, this);}; } ele.onmouseover = function (e) {Drag.prototype.showEdit.call(_method,e);}; ele.onmouseout = function (e) {Drag.prototype.hideEdit.call(_method,e);}; }, initFrame : function (frameEle) { if (typeof(frameEle) != 'object') return ''; var frameId = frameEle.id; if(!this.sampleMode) { this.checkEdit(frameEle); } var moveable = Util.hasClass(frameEle, this.moveableObject); var frameObj = ''; if (Util.hasClass(frameEle, this.tabClass)) { this._initTabActivity(frameEle); frameObj = new Tab(frameId, frameEle.className, Util.getOffset(frameEle,false), Util.getOffset(frameEle,true), moveable); } else if (Util.hasClass(frameEle, this.frameClass) || Util.hasClass(frameEle, this.moveableObject)) { if (Util.hasClass(frameEle, this.frameClass) && !this._replaceFlag) this._replaceFrameColumn(frameEle); frameObj = new Frame(frameId, frameEle.className, Util.getOffset(frameEle,false), Util.getOffset(frameEle,true), moveable); } this._initColumn(frameObj, frameEle); return frameObj; }, _initColumn : function (frameObj,frameEle) { var columns = frameEle.children; if (Util.hasClass(frameEle.parentNode.parentNode,this.tabClass)) { var col2 = $(frameEle.id+'_content').children; var len = columns.length; for (var i in col2) { if (typeof(col2[i]) == 'object') columns[len+i] = col2[i]; } } for (var i in columns) { if (typeof(columns[i]) != 'object') continue; if (Util.hasClass(columns[i], this.titleClass)) { this._initTitle(frameObj, columns[i]); } this._initEleTitle(frameObj, frameEle); if (Util.hasClass(columns[i], this.moveableColumn)) { var columnId = columns[i].id; var column = new Column(columnId, columns[i].className); frameObj.addColumn(column); this.checkTempDiv(columnId); var elements = columns[i].children; var eleLen = elements.length; for (var j = 0; j < eleLen; j++) { var ele = elements[j]; if (Util.hasClass(ele, this.frameClass) || Util.hasClass(ele, this.tabClass)) { var frameObj2 = this.initFrame(ele); frameObj.addFrame(columnId, frameObj2); } else if (Util.hasClass(ele, this.blockClass) || Util.hasClass(ele, this.moveableObject)) { var block = new Block(ele.id, ele.className, Util.getOffset(ele, false), Util.getOffset(ele, true)); for (var k in ele.children) { if (Util.hasClass(ele.children[k], this.titleClass)) this._initTitle(block, ele.children[k]); } this._initEleTitle(block, ele); frameObj.addBlock(columnId, block); } } } } }, _initTitle : function (obj, ele) { if (Util.hasClass(ele, this.titleClass)) { obj.titles['className'] = [ele.className]; obj.titles['style'] = {}; if (ele.style.backgroundImage) obj.titles['style']['background-image'] = ele.style.backgroundImage; if (ele.style.backgroundRepeat) obj.titles['style']['background-repeat'] = ele.style.backgroundRepeat; if (ele.style.backgroundColor) obj.titles['style']['background-color'] = ele.style.backgroundColor; if (obj instanceof Tab) { obj.titles['switchType'] = []; obj.titles['switchType'][0] = ele.getAttribute('switchtype') ? ele.getAttribute('switchtype') : 'click'; } var ch = ele.children; for (var k in ch) { if (Util.hasClass(ch[k], this.titleTextClass)){ this._getTitleData(obj, ch[k], 'first'); } else if (typeof ch[k] == 'object' && !Util.hasClass(ch[k], this.moveableObject)) { this._getTitleData(obj, ch[k]); } } } }, _getTitleData : function (obj, ele, i) { var shref = '',ssize = '',sfloat = '',scolor = '',smargin = '',stext = '', src = ''; var collection = ele.getElementsByTagName('a'); if (collection.length > 0) { shref = collection[0]['href']; scolor = collection[0].style['color'] + ' !important'; } collection = ele.getElementsByTagName('img'); if (collection.length > 0) { src = collection[0]['src']; } stext = Util.getText(ele); if (stext || src) { scolor = scolor ? scolor : ele.style['color']; sfloat = ele.style['styleFloat'] ? ele.style['styleFloat'] : ele.style['cssFloat'] ; sfloat = sfloat == undefined ? '' : sfloat; var margin_ = sfloat == '' ? 'left' : sfloat; smargin = parseInt(ele.style[('margin-'+margin_).property2js()]); smargin = smargin ? smargin : ''; ssize = parseInt(ele.style['fontSize']); ssize = ssize ? ssize : ''; var data = {'text':stext, 'href':shref,'color':scolor, 'float':sfloat, 'margin':smargin, 'font-size':ssize, 'className':ele.className, 'src':src}; if (i) { obj.titles[i] = data; } else { obj.titles.push(data); } } }, _initEleTitle : function (obj,ele) { if (Util.hasClass(ele, this.moveableObject)) { if (obj.titles['first'] && obj.titles['first']['text']) { var title = obj.titles['first']['text']; } else { var title = obj.name; } } }, showBlockName : function (ele) { var title = $C('block-name', ele, 'div'); if(title.length) { Util.show(title[0]); } }, hideBlockName : function (ele) { var title = $C('block-name', ele, 'div'); if(title.length) { Util.hide(title[0]); } }, showEdit : function (e) { e = Util.event(e); var targetObject = Util.getTarget(e,'className',this.moveableObject); if (targetObject) { Util.show(targetObject.id + '_edit'); targetObject.style.backgroundColor="#fffacd"; this.showBlockName(targetObject); } else { var targetFrame = Util.getTarget(e,'className',this.frameClass); if (typeof targetFrame == 'object') { Util.show(targetFrame.id + '_edit'); targetFrame.style.backgroundColor="#fffacd"; } } }, hideEdit : function (e) { e = Util.event(e); var targetObject = Util.getTarget(e,'className',this.moveableObject); var targetFrame = Util.getTarget(e,'className',this.frameClass); if (typeof targetFrame == 'object') { Util.hide(targetFrame.id + '_edit'); targetFrame.style.backgroundColor = ''; } if (typeof targetObject == 'object') { Util.hide(targetObject.id + '_edit'); targetObject.style.backgroundColor = ''; this.hideBlockName(targetObject); } }, toggleMenu : function (e, obj) { e = Util.event(e); e.stopPropagation(); var objPara = {'top' : Util.getOffset( obj, false),'left' : Util.getOffset( obj, true), 'width' : obj['offsetWidth'], 'height' : obj['offsetHeight']}; var dom = $('edit_menu'); if (dom) { if (objPara.top + objPara.height == Util.getOffset(dom, false) && objPara.left == Util.getOffset(dom, true)) { dom.parentNode.removeChild(dom); } else { dom.style.top = objPara.top + objPara.height + 'px'; dom.style.left = objPara.left + 'px'; dom.innerHTML = this._getMenuHtml(e, obj); } } else { var html = this._getMenuHtml(e, obj); if (html != '') { dom = document.createElement('div'); dom.id = 'edit_menu'; dom.className = 'edit-menu'; dom.style.top = objPara.top + objPara.height + 'px'; dom.style.left = objPara.left + 'px'; dom.innerHTML = html; document.body.appendChild(dom); var _method = this; document.body.onclick = function(e){Drag.prototype.removeMenu.call(_method, e);}; } } }, _getMenuHtml : function (e,obj) { var id = obj.id.replace('_edit_menu',''); var html = ''; return html == '' ? '' : html; }, _getMenuHtmlLi : function (id, cmds) { var li = ''; var len = cmds.length; for (var i=0; i'+cmds[i]['cmdName']+''; } return li; }, removeMenu : function (e) { var dom = $('edit_menu'); if (dom) dom.parentNode.removeChild(dom); document.body.onclick = ''; }, addMenu : function (objId,cmdName,cmd) { if (typeof this.menu[objId] == 'undefined') this.menu[objId] = []; this.menu[objId].push({'cmdName':cmdName, 'cmd':cmd}); }, setDefalutMenu : function () {}, setSampleMenu : function () {}, getPositionKey : function (n) { this.initPosition(); n = parseInt(n); var i = 0; for (var k in this.position) { if (i++ >= n) break; } return k; }, checkTempDiv : function (_id) { if(_id) { var id = _id+'_temp'; var dom = $(id); if (dom == null || typeof dom == 'undefined') { dom = document.createElement("div"); dom.className = this.moveableObject+' temp'; dom.id = id; $(_id).appendChild(dom); } } }, _setCssPosition : function (ele, value) { while (ele && ele.parentNode && ele.id != 'ct') { if (Util.hasClass(ele,this.frameClass) || Util.hasClass(ele,this.tabClass)) ele.style.position = value; ele = ele.parentNode; } }, initDragObj : function (e) { e = Util.event(e); var target = Util.getTarget(e,'className',this.moveableObject); if (!target) {return false;} if (this.overObj != target && target.id !='tmpbox') { this.overObj = target; this.overObj.style.cursor = 'move'; } }, dragStart : function (e) { e = Util.event(e); if (e.aim['id'] && e.aim['id'].indexOf && e.aim['id'].indexOf('_edit') > 0) return false; if(e.which != 1 ) {return false;} this.overObj = this.dragObj = Util.getTarget(e,'className',this.moveableObject); if (!this.dragObj || Util.hasClass(this.dragObj,'temp')) {return false;} if (!this.getTmpBoxElement()) return false; this.getRelative(); this._setCssPosition(this.dragObj.parentNode.parentNode, "static"); var offLeft = Util.getOffset( this.dragObj, true ); var offTop = Util.getOffset( this.dragObj, false ); var offWidth = this.dragObj['offsetWidth']; this.dragObj.style.position = 'absolute'; this.dragObj.style.left = offLeft + "px"; this.dragObj.style.top = offTop - 3 + "px"; this.dragObj.style.width = offWidth + 'px'; this.dragObj.lastMouseX = e.clientX; this.dragObj.lastMouseY = e.clientY; Util.insertBefore(this.tmpBoxElement,this.overObj); Util.addClass(this.dragObj,this.moving); this.dragObj.style.zIndex = 500 ; this.scroll = Util.getScroll(); var _method = this; document.onscroll = function(){Drag.prototype.resetObj.call(_method, e);}; window.onscroll = function(){Drag.prototype.resetObj.call(_method, e);}; document.onmousemove = function (e){Drag.prototype.drag.call(_method, e);}; }, getRelative : function () { this.dargRelative = {'up': this.dragObj.previousSibling, 'down': this.dragObj.nextSibling}; }, resetObj : function (e) { if (this.dragObj){ e = Util.event(e); var p = Util.getScroll(); var _t = p.t - this.scroll.t; var _l = p.l - this.scroll.l; var t = parseInt(this.dragObj.style.top); var l = parseInt(this.dragObj.style.left); t += _t; l += _l; this.dragObj.style.top =t+'px'; this.dragObj.style.left =l+'px'; this.scroll = Util.getScroll(); } }, drag : function (e) { e = Util.event(e); if(!this.isDragging) { this.dragObj.style.filter = "alpha(opacity=60)" ; this.dragObj.style.opacity = 0.6 ; this.isDragging = true ; } var _clientX = e.clientX; var _clientY = e.clientY; if (this.dragObj.lastMouseX == _clientX && this.dragObj.lastMouseY == _clientY) return false ; var _lastY = parseInt(this.dragObj.style.top); var _lastX = parseInt(this.dragObj.style.left); _lastX = isNaN(_lastX) ? 0 :_lastX; _lastY = isNaN(_lastY) ? 0 :_lastY; var newX, newY; newY = _lastY + _clientY - this.dragObj.lastMouseY; newX = _lastX + _clientX - this.dragObj.lastMouseX; this.dragObj.style.left = newX +"px "; this.dragObj.style.top = newY + "px "; this.dragObj.lastMouseX = _clientX; this.dragObj.lastMouseY = _clientY; var obj = this.getCurrentOverObj(e); if (obj && this.overObj != obj) { this.overObj = obj; this.getTmpBoxElement(); Util.insertBefore(this.tmpBoxElement, this.overObj); this.dragObjFrame = this.dragObj.parentNode.parentNode; this.overObjFrame = this.overObj.parentNode.parentNode; } Util.cancelSelect(); }, _pushTabContent : function (tab, ele){ if (Util.hasClass(ele, this.frameClass) || Util.hasClass(ele, this.tabClass)) { var dom = $(ele.id+'_content'); if (!dom) { dom = document.createElement('div'); dom.id = ele.id+'_content'; dom.className = Util.hasClass(ele, this.frameClass) ? this.contentClass+' cl '+ele.className.substr(ele.className.lastIndexOf(' ')+1) : this.contentClass+' cl'; } var frame = this.getObjByName(ele.id); if (frame) { for (var i in frame['columns']) { if (frame['columns'][i] instanceof Column) dom.appendChild($(i)); } } else { var children = ele.childNodes; var arrDom = []; for (var i in children) { if (typeof children[i] != 'object') continue; if (Util.hasClass(children[i],this.moveableColumn) || Util.hasClass(children[i],this.tabContentClass)) { arrDom.push(children[i]); } } var len = arrDom.length; for (var i = 0; i < len; i++) { dom.appendChild(arrDom[i]); } } $(tab.id+'_content').appendChild(dom); } else if (Util.hasClass(ele, this.blockClass)) { if ($(ele.id+'_content')) $(tab.id+'_content').appendChild($(ele.id+'_content')); } }, _popTabContent : function (tab, ele){ if (Util.hasClass(ele, this.frameClass) || Util.hasClass(ele, this.tabClass)) { Util.removeClass(ele, this.tabActivityClass); var eleContent = $(ele.id+'_content'); if (!eleContent) return false; var children = eleContent.childNodes; var arrEle = []; for (var i in children) { if (typeof children[i] == 'object') arrEle.push(children[i]); } var len = arrEle.length; for (var i = 0; i < len; i++) { ele.appendChild(arrEle[i]); } children = ''; $(tab.id+'_content').removeChild(eleContent); } else if (Util.hasClass(ele, this.blockClass)) { if ($(ele.id+'_content')) Util.show($(ele.id+'_content')); if ($(ele.id+'_content')) ele.appendChild($(ele.id+'_content')); } }, _initTabActivity : function (ele) { if (!Util.hasClass(ele,this.tabClass)) return false; var tabs = $(ele.id+'_title').childNodes; var arrTab = []; for (var i in tabs) { if (typeof tabs[i] != 'object') continue; var tabId = tabs[i].id; if (Util.hasClass(tabs[i],this.frameClass) || Util.hasClass(tabs[i],this.tabClass)) { if (!this._replaceFlag) this._replaceFrameColumn(tabs[i]); if (!$(tabId + '_content')) { var arrColumn = []; for (var j in tabs[i].childNodes) { if (Util.hasClass(tabs[i].childNodes[j], this.moveableColumn)) arrColumn.push(tabs[i].childNodes[j]); } var frameContent = document.createElement('div'); frameContent.id = tabId + '_content'; frameContent.className = Util.hasClass(tabs[i], this.frameClass) ? this.contentClass+' cl '+tabs[i].className.substr(tabs[i].className.lastIndexOf(' ')+1) : this.contentClass+' cl'; var colLen = arrColumn.length; for (var k = 0; k < colLen; k++) { frameContent.appendChild(arrColumn[k]); } } arrTab.push(tabs[i]); } else if (Util.hasClass(tabs[i],this.blockClass)) { var frameContent = $(tabId+'_content'); if (frameContent) { frameContent = Util.hasClass(frameContent.parentNode,this.blockClass) ? frameContent : ''; } else { frameContent = document.createElement('div'); frameContent.id = tabId+'_content'; } arrTab.push(tabs[i]); } if (frameContent) $(ele.id + '_content').appendChild(frameContent); } var len = arrTab.length; for (var i = 0; i < len; i++) { Util[i > 0 ? 'hide' : 'show']($(arrTab[i].id+'_content')); } }, dragEnd : function (e) { e = Util.event(e); if(!this.dragObj) {return false;} document.onscroll = function(){}; window.onscroll = function(){}; document.onmousemove = function(e){}; document.onmouseup = ''; if (this.tmpBoxElement.parentNode) { if (this.tmpBoxElement.parentNode == document.body) { document.body.removeChild(this.tmpBoxElement); document.body.removeChild(this.dragObj); this.fn = ''; } else { Util.removeClass(this.dragObj,this.moving); this.dragObj.style.display = 'none'; this.dragObj.style.width = '' ; this.dragObj.style.top = ''; this.dragObj.style.left = ''; this.dragObj.style.zIndex = ''; this.dragObj.style.position = 'relative'; this.dragObj.style.backgroundColor = ''; this.isDragging = false ; this.tmpBoxElement.parentNode.replaceChild(this.dragObj, this.tmpBoxElement); Util.fadeIn(this.dragObj); this.tmpBoxElement=''; this._setCssPosition(this.dragObjFrame, 'relative'); this.doEndDrag(); this.initPosition(); if (!(this.dargRelative.up == this.dragObj.previousSibling && this.dargRelative.down == this.dragObj.nextSibling)) { this.setClose(); } this.dragObjFrame = this.overObjFrame = null; } } this.newFlag = false; if (typeof this.fn == 'function') {this.fn();} }, doEndDrag : function () { if (!Util.hasClass(this.dragObjFrame, this.tabClass) && Util.hasClass(this.overObjFrame, this.tabClass)) { this._pushTabContent(this.overObjFrame, this.dragObj); }else if (Util.hasClass(this.dragObjFrame, this.tabClass) && !Util.hasClass(this.overObjFrame, this.tabClass)) { this._popTabContent(this.dragObjFrame, this.dragObj); }else if (Util.hasClass(this.dragObjFrame, this.tabClass) && Util.hasClass(this.overObjFrame, this.tabClass)) { if (this.dragObjFrame != this.overObjFrame) { this._popTabContent(this.dragObjFrame, this.dragObj); this._pushTabContent(this.overObjFrame, this.dragObj); } } else { } }, _replaceFrameColumn : function (ele,flag) { var children = ele.childNodes; var fcn = ele.className.match(/(frame-[\w-]*)/); if (!fcn) return false; var frameClassName = fcn[1]; for (var i in children) { if (Util.hasClass(children[i], this.moveableColumn)) { var className = children[i].className; className = className.replace(' col-l', ' '+frameClassName+'-l'); className = className.replace(' col-r', ' '+frameClassName+'-r'); className = className.replace(' col-c', ' '+frameClassName+'-c'); className = className.replace(' mn', ' '+frameClassName+'-l'); className = className.replace(' sd', ' '+frameClassName+'-r'); children[i].className = className; } } }, stopCmd : function () { this.rein.length > 0 ? this.rein.pop()() : ''; }, setClose : function () { if (!this.isChange) { window.onbeforeunload = function() { return '您的数据已经修改,退出将无法保存您的修改。'; }; } this.isChange = true; }, clearClose : function () { this.isChange = false; window.onbeforeunload = function () {}; }, _getMoveableArea : function (ele) { ele = ele ? ele : document.body; this.moveableArea = $C(this.areaClass, ele, 'div'); }, initMoveableArea : function () { var _method = this; this._getMoveableArea(); var len = this.moveableArea.length; for (var i = 0; i < len; i++) { var el = this.moveableArea[i]; if (el == null || typeof el == 'undefined') return false; el.ondragstart = function (e) {return false;}; el.onmouseover = function (e) {Drag.prototype.initDragObj.call(_method, e);}; el.onmousedown = function (e) {Drag.prototype.dragStart.call(_method, e);}; el.onmouseup = function (e) {Drag.prototype.dragEnd.call(_method, e);}; el.onclick = function (e) {e = Util.event(e);e.preventDefault();}; } if ($('contentframe')) $('contentframe').ondragstart = function (e) {return false;}; }, disableAdvancedStyleSheet : function () { if(this.advancedStyleSheet) { this.advancedStyleSheet.disabled = true; } }, enableAdvancedStyleSheet : function () { if(this.advancedStyleSheet) { this.advancedStyleSheet.disabled = false; } }, init : function (sampleMode) { this.initCommon(); this.setSampleMode(sampleMode); if(!this.sampleMode) { this.initAdvanced(); } else { this.initSample(); } return true; }, initAdvanced : function () { this.initMoveableArea(); this.initPosition(); this.setDefalutMenu(); this.enableAdvancedStyleSheet(); this.showControlPanel(); this.initTips(); if(this.goonDIY) this.goonDIY(); this.openfn(); }, openfn : function () { var openfn = loadUserdata('openfn'); if(openfn) { if(typeof openfn == 'function') { openfn(); } else { eval(openfn); } saveUserdata('openfn', ''); } }, initCommon : function () { this.advancedStyleSheet = $('diy_common'); this.menu = []; }, initSample : function () { this._getMoveableArea(); this.initPosition(); this.sampleBlocks = $C(this.blockClass); this.initSampleBlocks(); this.setSampleMenu(); this.disableAdvancedStyleSheet(); this.hideControlPanel(); }, initSampleBlocks : function () { if(this.sampleBlocks) { for(var i = 0; i < this.sampleBlocks.length; i++){ this.checkEdit(this.sampleBlocks[i]); } } }, setSampleMode : function (sampleMode) { if(loadUserdata('diy_advance_mode')) { this.sampleMode = ''; } else { this.sampleMode = sampleMode; saveUserdata('diy_advance_mode', sampleMode ? '' : '1'); } }, hideControlPanel : function() { Util.show('samplepanel'); Util.hide('controlpanel'); Util.hide('diy-tg'); }, showControlPanel : function() { Util.hide('samplepanel'); Util.show('controlpanel'); Util.show('diy-tg'); }, checkHasFrame : function (obj) { obj = !obj ? this.data : obj; for (var i in obj) { if (obj[i] instanceof Frame && obj[i].className.indexOf('temp') < 0 ) { return true; } else if (typeof obj[i] == 'object') { if (this.checkHasFrame(obj[i])) return true; } } return false; }, deleteFrame : function (name) { if (typeof name == 'string') { if (typeof window['c'+name+'_frame'] == 'object' && !BROWSER.ie) delete window['c'+name+'_frame']; } else { for(var i = 0,L = name.length;i < L;i++) { if (typeof window['c'+name[i]+'_frame'] == 'object' && !BROWSER.ie) delete window['c'+name[i]+'_frame']; } } }, saveViewTip : function (tipname) { if(tipname) { saveUserdata(tipname, '1'); Util.hide(tipname); } doane(); }, initTips : function () { var tips = ['diy_backup_tip']; for(var i = 0; i < tips.length; i++) { if(tips[i] && !loadUserdata(tips[i])) { Util.show(tips[i]); } } }, extend : function (obj) { for (var i in obj) { this[i] = obj[i]; } } }; DIY = function() { this.frames = []; this.isChange = false; this.spacecss = []; this.style = 't1'; this.currentDiy = 'body'; this.opSet = []; this.opPointer = 0; this.backFlag = false; this.styleSheet = {} ; this.scrollHeight = 0 ; }; DIY.prototype = { init : function (mod) { drag.init(mod); this.style = document.diyform.style.value; if (this.style == '') { var reg = RegExp('topic\(.*)\/style\.css'); var href = $('style_css') ? $('style_css').href : ''; var arr = reg.exec(href); this.style = arr && arr.length > 1 ? arr[1] : ''; } this.currentLayout = typeof document.diyform.currentlayout == 'undefined' ? '' : document.diyform.currentlayout.value; this.initStyleSheet(); if (this.styleSheet.rules) this.initDiyStyle(); }, initStyleSheet : function () { var all = document.styleSheets; for (var i=0;i -1) { var body = BROWSER.ie ? 'BODY' : 'body'; selector = selector.replace(/body/i,body); } if (s.indexOf(' a') > -1) { selector = BROWSER.ie ? selector.replace(/ [aA]/,' A') : selector.replace(/ [aA]/,' a'); } return selector; }, initPalette : function (id) { var bgcolor = '',selector = '',bgimg = '',bgrepeat = '', bgposition = '', bgattachment = '', bgfontColor = '', bglinkColor = '', i = 0; var repeat = ['repeat','no-repeat','repeat-x','repeat-y']; var attachment = ['scroll','fixed']; var position = ['left top','center top','right top','left center','center center','right center','left bottom','center bottom','right bottom']; var position_ = ['0% 0%','50% 0%','100% 0%','0% 50%','50% 50%','100% 50%','0% 100%','50% 100%','100% 100%']; selector = this.getSelector(id); bgcolor = Util.formatColor(this.styleSheet.getRule(selector,'backgroundColor')); bgimg = this.styleSheet.getRule(selector,'backgroundImage'); bgrepeat = this.styleSheet.getRule(selector,'backgroundRepeat'); bgposition = this.styleSheet.getRule(selector,'backgroundPosition'); bgattachment = this.styleSheet.getRule(selector,'backgroundAttachment'); bgfontColor = Util.formatColor(this.styleSheet.getRule(selector,'color')); bglinkColor = Util.formatColor(this.styleSheet.getRule(this.getSelector(selector+' a'),'color')); var selectedIndex = 0; for (i=0;i -1) { this.spacecss[k] = []; } } continue; } var rule = this.spacecss[i]; if (typeof rule == "function") continue; var one = ''; rule = this.formatCssRule(rule); for (var j in rule) { var content = this.spacecss[i][j]; if (content && typeof content == "string" && content.length > 0) { content = this.trimCssImportant(content); content = content ? content + ' !important;' : ';'; one += j + ":" + content; } } if (one == '') continue; css += i + " {" + one + "}"; } return css; }, formatCssRule : function (rule) { var arr = ['top', 'right', 'bottom', 'left'], i = 0; if (typeof rule['margin-top'] != 'undefined') { var margin = rule['margin-bottom']; if (margin && margin == rule['margin-top'] && margin == rule['margin-right'] && margin == rule['margin-left']) { rule['margin'] = margin; for(i=0;i currentLayoutLength) { var block = this.getRandomBlockName(); var dom = document.createElement('div'); dom.id = 'frame1_right'; dom.className = drag.moveableColumn + ' z'; dom.appendChild($(block)); $('frame1').appendChild(dom); $('frame1_left').style.width = dataArr[0]+'px'; $('frame1_center').style.width = dataArr[1]+'px'; dom.style.width = dataArr[2]+'px'; } else if (newLayoutLength < currentLayoutLength) { var _length = drag.data['diypage'][0]['columns']['frame1_right']['children'].length; var tobj = $('frame1_center_temp'); for (var i = 0; i < _length; i++) { var name = drag.data['diypage'][0]['columns']['frame1_right']['children'][i].name; if (name.indexOf('temp') < 0) $('frame1_center').insertBefore($(name),tobj); } $('frame1').removeChild($('frame1_right')); $('frame1_left').style.width = dataArr[0]+'px'; $('frame1_center').style.width = dataArr[1]+'px'; } var className = $('layout'+this.currentLayout).className; $('layout'+this.currentLayout).className = ''; $('layout'+newLayout).className = className; this.currentLayout = newLayout; drag.initPosition(); drag.setClose(); }, getRandomBlockName : function () { var left = drag.data['diypage'][0]['columns']['frame1_left']['children']; if (left.length > 2) { var block = left[0]; } else { var block = drag.data['diypage'][0]['columns']['frame1_center']['children'][0]; } return block.name; }, changeStyle : function (t) { if (t == '') return false; $('style_css').href=STATICURL+t+"/style.css"; if (!this.backFlag) { var oldData = [this.style]; var newData = [t]; var random = Math.random(); this.addOpRecord ('this.changeStyle', newData, oldData, random); } var arr = t.split("/"); this.style = arr[arr.length-1]; drag.setClose(); }, setCurrentDiy : function (type) { if (type) { $('diy_tag_'+this.currentDiy).className = ''; this.currentDiy = type; $('diy_tag_'+this.currentDiy).className = 'activity'; this.initPalette(this.currentDiy); } }, hideBg : function () { var random = Math.random(); this.setStyle(this.currentDiy, 'background-image', '', random); this.setStyle(this.currentDiy, 'background-color', '', random); if (this.currentDiy == 'hd') this.setStyle(this.currentDiy, 'height', '', random); this.initPalette(this.currentDiy); }, toggleHeader : function () { var random = Math.random(); if ($('header_hide_cb').checked) { this.setStyle('#hd', 'height', '260px', random); this.setStyle('#hd', 'background-image', 'none', random); this.setStyle('#hd', 'border-width', '0px', random); } else { this.setStyle('#hd', 'height', '', random); this.setStyle('#hd', 'background-image', '', random); this.setStyle('#hd', 'border-width', '', random); } }, setBgImage : function (value) { var path = typeof value == "string" ? value : value.src; if (path.indexOf('.thumb') > 0) { path = path.substring(0,path.indexOf('.thumb')); } if (path == '' || path == 'undefined') return false; var random = Math.random(); this.setStyle(this.currentDiy, 'background-image', Util.url(path), random); this.setStyle(this.currentDiy, 'background-repeat', 'repeat', random); if (this.currentDiy == 'hd') { var _method = this; var img = new Image(); img.onload = function () { if (parseInt(img.height) < 140) { DIY.prototype.setStyle.call(_method, _method.currentDiy, 'background-repeat', 'repeat', random); DIY.prototype.setStyle.call(_method, _method.currentDiy, 'height', '', random); } else { DIY.prototype.setStyle.call(_method, _method.currentDiy, 'height', img.height+"px", random); } }; img.src = path; } }, setBgRepeat : function (value) { var repeat = ['repeat','no-repeat','repeat-x','repeat-y']; if (typeof repeat[value] == 'undefined') {return false;} this.setStyle(this.currentDiy, 'background-repeat', repeat[value]); }, setBgAttachment : function (value) { var attachment = ['scroll','fixed']; if (typeof attachment[value] == 'undefined') {return false;} this.setStyle(this.currentDiy, 'background-attachment', attachment[value]); }, setBgColor : function (color) { this.setStyle(this.currentDiy, 'background-color', color); }, setTextColor : function (color) { this.setStyle(this.currentDiy, 'color', color); }, setLinkColor : function (color) { this.setStyle(this.currentDiy + ' a', 'color', color); }, setBgPosition : function (id) { var td = $(id); var i = id.substr(id.length-1); var position = ['left top','center top','right top','left center','center center','right center','left bottom','center bottom','right bottom']; td.className = 'red'; for (var j=0;j<9;j++) { if (i != j) { $('bgimgposition'+j).className = ''; } } this.setStyle(this.currentDiy, 'background-position', position[i]); }, getSelector : function (currentDiv) { var arr = currentDiv.split(' '); currentDiv = arr[0]; var link = ''; if (arr.length > 1) { link = (arr[arr.length-1].toLowerCase() == 'a') ? link = ' '+arr.pop() : ''; currentDiv = arr.join(' '); } var selector = ''; switch(currentDiv) { case 'blocktitle' : selector = '#ct .move-span .blocktitle'; break; case 'body' : case 'BODY' : selector = BROWSER.ie ? 'BODY' : 'body'; break; default : selector = currentDiv.indexOf("#")>-1 ? currentDiv : "#"+currentDiv; } var rega = BROWSER.ie ? ' A' : ' a'; selector = (selector+link).replace(/ a/i,rega); return selector; }, setStyle : function (currentDiv, property, value, random, num){ property = trim(property).toLowerCase(); var propertyJs = property.property2js(); if (typeof value == 'undefined') value = ''; var selector = this.getSelector(currentDiv); if (!this.backFlag) { var rule = this.styleSheet.getRule(selector,propertyJs); rule = rule.replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0"); var oldData = [currentDiv, property, rule]; var newData = [currentDiv, property, value]; if (typeof random == 'undefined') random = Math.random(); this.addOpRecord ('this.setStyle', newData, oldData, random); } value = this.trimCssImportant(value); value = value ? value + ' !important' : ''; var pvalue = value ? property+':'+value : ''; this.styleSheet.addRule(selector,pvalue,num,property); Util.recolored(); if (typeof this.spacecss[selector] == 'undefined') { this.spacecss[selector] = []; } this.spacecss[selector][property] = value; drag.setClose(); }, trimCssImportant : function (value) { if (value instanceof Array) value = value.join(' '); return value ? value.replace(/!( ?)important/g,'').replace(/ /g,' ').replace(/^ | $/g,'') : ''; }, removeCssSelector : function (selector) { for (var i in this.spacecss) { if (typeof this.spacecss[i] == "function") continue; if (i.indexOf(selector) > -1) { this.styleSheet.removeRule(i); this.spacecss[i] = []; } } }, undo : function () { if (this.opSet.length == 0) return false; var oldData = ''; if (this.opPointer <= 0) {return '';} var step = this.opSet[--this.opPointer]; var random = step['random']; var cmd = step['cmd'].split(','); var cmdNum = cmd.length; if (cmdNum >1) { for (var i=0; i= this.opSet.length) return ''; var step = this.opSet[this.opPointer++]; random = step['random']; var cmd = step['cmd'].split(','); var cmdNum = cmd.length; if (cmdNum >1) { for (var i=0; i