123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899 |
- /*
- [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<this.stack.length;i++) {
- if (this.stack[i] == obj && (cur == 0 || cur == 100)) return false;
- }
- if (cur == 0 || cur == 100) {this.stack.push(obj);}
- ftype = ftype != 'in' && ftype != 'out' ? 'out' : ftype;
- timer = timer || 400;
- var step = 100/(timer/20);
- obj.style.filter = 'Alpha(opacity=' + cur + ')';
- obj.style.opacity = cur / 100;
- cur = ftype == 'in' ? cur + step : cur - step ;
- var fadeTimer = (function(){
- return setTimeout(function () {
- Util.fade(obj, timer, ftype, cur, fn);
- }, 20);
- })();
- this[ftype == 'in' ? 'show' : 'hide'](obj);
- if(ftype == 'in' && cur >= 100 || ftype == 'out' && cur <= 0) {
- clearTimeout(fadeTimer);
- for (i=0;i<this.stack.length;i++) {
- if (this.stack[i] == obj ) {
- this.stack.splice(i,1);break;
- }
- }
- fn = fn || function(){};
- fn(obj);
- }
- return obj;
- },
- fadeIn : function (obj,timer,fn) {
- return this.fade(obj, timer, 'in', 0, fn);
- },
- fadeOut : function (obj,timer,fn) {
- return this.fade(obj, timer, 'out', 100, fn);
- },
- getStyle : function (ele) {
- if (ele) {
- var s = ele.getAttribute('style') || '';
- return typeof s == 'object' ? s.cssText : s;
- }
- return false;
- },
- setStyle : function (ele,cssText) {
- if (ele) {
- var s = ele.getAttribute('style') || '';
- return typeof s == 'object' ? s.cssText = cssText : ele.setAttribute('style',cssText);
- }
- return false;
- },
- getText : function (ele) {
- var t = ele.innerText ? ele.innerText : ele.textContent;
- return !t ? '' : t;
- },
- rgb2hex : function (color) {
- if (!color) return '';
- var reg = new RegExp('(\\d+)[, ]+(\\d+)[, ]+(\\d+)','g');
- var rgb = reg.exec(color);
- if (rgb == null) rgb = [0,0,0,0];
- var red = rgb[1], green = rgb[2], blue = rgb[3];
- var decColor = 65536 * parseInt(red) + 256 * parseInt(green) + parseInt(blue);
- var hex = decColor.toString(16).toUpperCase();
- var pre = new Array(6 - hex.length + 1).join('0');
- hex = pre + hex;
- return hex;
- },
- formatColor : function (color) {
- return color == '' || color.indexOf('#')>-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 = '<?xml version="1.0" encoding="ISO-8859-1"?><root>';
- var end ="</root>";
- var str = "";
- for (var i in this.data) {
- if (typeof this.data[i] == 'function') continue;
- str += '<item id="' + i + '">';
- 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 += '</item>';
- }
- 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 += '<item id="block`' + colChildren[k]['name'] + '">';
- Bstr += this._getAttrXML(colChildren[k]);
- Bstr += '</item>';
- } else if (colChildren[k] instanceof Frame || colChildren[k] instanceof Tab) {
- Bstr += this._getFrameXML(colChildren[k]);
- }
- }
- var columnAttr = this._getAttrXML(columns[j]);
- Cstr += '<item id="column`' + j + '">' + columnAttr + Bstr + '</item>';
- }
- }
- return '<item id="' + itemId + '`' + name + '">' + frameAttr + Cstr + '</item>';
- },
- _getAttrXML : function (obj) {
- var attrXml = '<item id="attr">';
- 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 += '<item id="' + i + '"><![CDATA[' + obj[i] + ']]></item>';
- }
- }
- }else {
- xml += '';
- }
- return attrXml + xml + '</item>';
- },
- _getTitlesXML : function (titles) {
- var xml = '<item id="titles">';
- for (var i in titles) {
- if (typeof titles[i] == 'function') continue;
- xml += '<item id="'+i+'">';
- for (var j in titles[i]) {
- if (typeof titles[i][j] == 'function') continue;
- xml += '<item id="'+j+'"><![CDATA[' + titles[i][j] + ']]></item>';
- }
- xml += '</item>';
- }
- xml += '</item>';
- 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 = '<span id="'+id+'_edit_menu">编辑</span>';
- 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 = '<ul>';
- if (typeof this.menu[id] == 'object') html += this._getMenuHtmlLi(id, this.menu[id]);
- if (Util.hasClass($(id),this.tabClass) && typeof this.menu['tab'] == 'object') html += this._getMenuHtmlLi(id, this.menu['tab']);
- if (Util.hasClass($(id),this.frameClass) && typeof this.menu['frame'] == 'object') html += this._getMenuHtmlLi(id, this.menu['frame']);
- if (Util.hasClass($(id),this.blockClass) && typeof this.menu['block'] == 'object') html += this._getMenuHtmlLi(id, this.menu['block']);
- if (typeof this.menu['default'] == 'object' && this.getObjByName(id)) html += this._getMenuHtmlLi(id, this.menu['default']);
- html += '</ul>';
- return html == '<ul></ul>' ? '' : html;
- },
- _getMenuHtmlLi : function (id, cmds) {
- var li = '';
- var len = cmds.length;
- for (var i=0; i<len; i++) {
- li += '<li class="mitem" id="cmd_'+id+'" onclick='+"'"+cmds[i]['cmd']+"'"+'>'+cmds[i]['cmdName']+'</li>';
- }
- 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<all.length;i++) {
- var ownerNode = all[i].ownerNode || all[i].owningElement;
- if (ownerNode.id == 'diy_style') {
- this.styleSheet = new styleCss(i);
- return true;
- }
- }
- },
- initDiyStyle : function (css) {
- var allCssText = css || $('diy_style').innerHTML;
- allCssText = allCssText ? allCssText.replace(/\n|\r|\t| /g,'') : '';
- var random = Math.random(), rules = '';
- var reg = new RegExp('(.*?) ?\{(.*?)\}','g');
- while((rules = reg.exec(allCssText))) {
- var selector = this.checkSelector(rules[1]);
- var cssText = rules[2];
- var cssarr = cssText.split(';');
- var l = cssarr.length;
- for (var k = 0; k < l; k++) {
- var attribute = trim(cssarr[k].substr(0, cssarr[k].indexOf(':')).toLowerCase());
- var value = cssarr[k].substr(cssarr[k].indexOf(':')+1).toLowerCase();
- if (!attribute || !value) continue;
- if (!this.spacecss[selector]) this.spacecss[selector] = [];
- this.spacecss[selector][attribute] = value;
- if (css) this.setStyle(selector, attribute, value, random);
- }
- }
- },
- checkSelector : function (selector) {
- var s = selector.toLowerCase();
- if (s.toLowerCase().indexOf('body') > -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<repeat.length;i++) {
- if (bgrepeat == repeat[i]) selectedIndex= i;
- }
- $('repeat_mode').selectedIndex = selectedIndex;
- for (i=0;i<attachment.length;i++) {
- $('rabga'+i).checked = (bgattachment == attachment[i] ? true : false);
- }
- var flag = '';
- for (i=0;i<position.length;i++) {
- var className = bgposition == position[i] ? 'red' : '';
- $('bgimgposition'+i).className = className;
- flag = flag ? flag : className;
- }
- if (flag != 'red') {
- for (i=0;i<position_.length;i++) {
- className = bgposition == position_[i] ? 'red' : '';
- $('bgimgposition'+i).className = className;
- }
- }
- $('colorValue').value = bgcolor;
- if ($('cbpb')) $('cbpb').style.backgroundColor = bgcolor;
- $('textColorValue').value = bgfontColor;
- if ($('ctpb')) $('ctpb').style.backgroundColor = bgfontColor;
- $('linkColorValue').value = bglinkColor;
- if ($('clpb')) $('clpb').style.backgroundColor = bglinkColor;
- Util.show($('currentimgdiv'));
- Util.hide($('diyimages'));
- if ($('selectalbum')) $('selectalbum').disabled = 'disabled';
- bgimg = bgimg != '' && bgimg != 'none' ? bgimg.replace(/url\(['|"]{0,1}/,'').replace(/['|"]{0,1}\)/,'') : 'static/image/common/nophotosmall.gif';
- $('currentimg').src = bgimg;
- },
- changeBgImgDiv : function () {
- Util.hide($('currentimgdiv'));
- Util.show($('diyimages'));
- if ($('selectalbum')) $('selectalbum').disabled = '';
- },
- getSpacecssStr : function() {
- var css = '';
- var selectors = ['body', '#hd','#ct', 'BODY'];
- for (var i in this.spacecss) {
- var name = i.split(' ')[0];
- if(selectors.indexOf(name) == -1 && !drag.getObjByName(name.substr(1))) {
- for(var k in this.spacecss) {
- if (k.indexOf(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<arr.length;i++) {
- delete rule['margin-'+arr[i]];
- }
- } else {
- delete rule['margin'];
- }
- }
- var border = '', borderb = '', borderr = '', borderl = '';
- if (typeof rule['border-top-color'] != 'undefined' || typeof rule['border-top-width'] != 'undefined' || typeof rule['border-top-style'] != 'undefined') {
- var format = function (css) {
- css = css.join(' ').replace(/!( ?)important/g,'').replace(/ /g,' ').replace(/^ | $/g,'');
- return css ? css + ' !important' : '';
- };
- border = format([rule['border-top-color'], rule['border-top-width'], rule['border-top-style']]);
- borderr = format([rule['border-right-color'], rule['border-right-width'], rule['border-right-style']]);
- borderb = format([rule['border-bottom-color'], rule['border-bottom-width'], rule['border-bottom-style']]);
- borderl = format([rule['border-left-color'], rule['border-left-width'], rule['border-left-style']]);
- } else if (typeof rule['border-top'] != 'undefined') {
- border = rule['border-top'];borderr = rule['border-right'];borderb = rule['border-bottom'];borderl = rule['border-left'];
- }
- if (border) {
- if (border == borderb && border == borderr && border == borderl) {
- rule['border'] = border;
- for(i=0;i<arr.length;i++) {
- delete rule['border-'+arr[i]];
- }
- } else {
- rule['border-top'] = border;rule['border-right'] = borderr;rule['border-bottom'] = borderb;rule['border-left'] = borderl;
- delete rule['border'];
- }
- for(i=0;i<arr.length;i++) {
- delete rule['border-'+arr[i]+'-color'];delete rule['border-'+arr[i]+'-width'];delete rule['border-'+arr[i]+'-style'];
- }
- }
- return rule;
- },
- changeLayout : function (newLayout) {
- if (this.currentLayout == newLayout) return false;
- var data = $('layout'+newLayout).getAttribute('data');
- var dataArr = data.split(' ');
- var currentLayoutLength = this.currentLayout.length;
- var newLayoutLength = newLayout.length;
- if (newLayoutLength == currentLayoutLength){
- $('frame1_left').style.width = dataArr[0]+'px';
- $('frame1_center').style.width = dataArr[1]+'px';
- if (typeof(dataArr[2]) != 'undefined') $('frame1_right').style.width = dataArr[2]+'px';
- } else if (newLayoutLength > 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<cmdNum; i++) {
- oldData = typeof step['oldData'][i] == 'undefined' || step['oldData'] == '' ? '' : '"' + step['oldData'][i].join('","') + '"';
- this.backFlag = true;
- eval(cmd[i]+'('+oldData+')');
- this.backFlag = false;
- }
- } else {
- oldData = typeof step['oldData'] == 'undefined' || step['oldData'] == '' ? '' : '"' + step['oldData'].join('","') + '"';
- this.backFlag = true;
- eval(cmd+'('+oldData+')');
- this.backFlag = false;
- }
- $('button_redo').className = '';
- if (this.opPointer == 0) {
- $('button_undo').className = 'unusable';
- drag.isChange = false;
- drag.clearClose();
- return '';
- } else if (random == this.opSet[this.opPointer-1]['random']) {
- this.undo();
- return '';
- } else {
- return '';
- }
- },
- redo : function () {
- if (this.opSet.length == 0) return false;
- var newData = '',random = '';
- if (this.opPointer >= 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<cmdNum; i++) {
- newData = typeof step['newData'][i] == 'undefined' || step['oldData'] == '' ? '' : '"' + step['newData'][i].join('","') + '"';
- this.backFlag = true;
- eval(cmd[i]+'('+newData+')');
- this.backFlag = false;
- }
- }else {
- newData = typeof step['newData'] == 'undefined' || step['oldData'] == '' ? '' : '"' + step['newData'].join('","') + '"';
- this.backFlag = true;
- eval(cmd+'('+newData+')');
- this.backFlag = false;
- }
- $('button_undo').className = '';
- if (this.opPointer == this.opSet.length) {
- $('button_redo').className = 'unusable';
- return '';
- } else if(random == this.opSet[this.opPointer]['random']){
- this.redo();
- }
- },
- addOpRecord : function (cmd, newData, oldData, random) {
- if (this.opPointer == 0) this.opSet = [];
- this.opSet[this.opPointer++] = {'cmd':cmd, 'newData':newData, 'oldData':oldData, 'random':random};
- $('button_undo').className = '';
- $('button_redo').className = 'unusable';
- Util.show('recover_button');
- },
- recoverStyle : function () {
- var random = Math.random();
- for (var selector in this.spacecss){
- var style = this.spacecss[selector];
- if (typeof style == "function") {continue;}
- for (var attribute in style) {
- if (typeof style[attribute] == "function") {continue;}
- this.setStyle(selector,attribute,'',random);
- }
- }
- Util.hide('recover_button');
- drag.setClose();
- this.initPalette(this.currentDiy);
- },
- uploadSubmit : function (){
- if (document.uploadpic.attach.value.length<3) {
- alert('请选择您要上传的图片');
- return false;
- }
- if (document.uploadpic.albumid != null) document.uploadpic.albumid.value = $('selectalbum').value;
- return true;
- },
- save : function () {
- return false;
- },
- cancel : function () {
- var flag = false;
- if (this.isChange) {
- flag = confirm(this.cancelConfirm ? this.cancelConfirm : '退出将不会保存您刚才的设置。是否确认退出?');
- }
- if (!this.isChange || flag) {
- location.href = location.href.replace(/[\?|\&]diy\=yes/g,'');
- }
- },
- extend : function (obj) {
- for (var i in obj) {
- this[i] = obj[i];
- }
- }
- };
- })();
|