Element.extend({ amongTo:function(elp,opts){ var el=this; var elSize=el.getSize(), elpSize=elp.getSize(); var options={width:2,height:2}; if(opts){options=Object.merge(options,opts);} el.setStyle('position','absolute'); var pos={ 'top':Math.abs(((elpSize.size.y / options.height).toInt())-((elSize.size.y / options.height).toInt())+elp.getPosition().y+elpSize.scroll.y), 'left':Math.abs(((elpSize.size.x / options.width).toInt())-((elSize.size.x / options.width).toInt())+elp.getPosition().x+elpSize.scroll.x) }; el.setStyles(pos); if(el.getStyle('opacity')<1)el.setOpacity(1); if(el.getStyle('visibility')!='visible')el.setStyle('visibility','visible'); if(el.getStyle('display')=='none')el.setStyle('display',''); return this; }, zoomImg:function(maxwidth,maxheight,v){ if(this.getTag()!='img'||!this.width)return; var thisSize={'width':this.width,'height':this.height}, zommC; if (thisSize.width>maxwidth){ zommC=(maxwidth/thisSize.width).toFloat(); var zoomSizeH=(thisSize.height*zommC).toInt(); Object.append(thisSize,{'width':maxwidth,'height':zoomSizeH}); } if (thisSize.height>maxheight){ zommC=(maxheight/thisSize.height).toFloat(); var zoomSizeW=(thisSize.width*zommC).toInt(); Object.append(thisSize,{'width':zoomSizeW,'height':maxheight}); } if(!v)return this.set(thisSize); if($type(v)=='function'){ this.set(thisSize); return v.apply(this,[maxwidth,maxheight,thisSize]); } return thisSize; }, subText:function(count){ var txt=this.get('text'); if(!count||txt.length<=count)return txt; this.setText(txt.substring(0,count)+"..."); if(!this.retrieve('tip:title')) this.set('title',txt); return txt; }, getValues:function(){ var values = {}; this.getFormElements().each(function(el){ var name = el.name; var value = el.getValue(); if (value === false || !name || el.disabled) return; values[el.name] = value; }); return values; }, getCis:function(){ return this.getCoordinates(arguments[0]); }, getContainer:function(){ return this.getParent("*[container='true']")||$('main')||document.body; }, show:function(){ this.fireEvent('show',this); return this?this.setStyle('display',''):this; }, hide:function(){ this.fireEvent('hide',this); return this?this.setStyle('display','none'):this; }, isDisplay:function(){ if('none'==this.style.display)return false; if('hidden'==this.style.visibility)return false; if((this.offsetWidth+this.offsetHeight)===0){return false;} return true; }, toggleDisplay:function(){ return this&&this.getStyle('display')=='none'?this.setStyle('display',''):this.setStyle('display','none'); }, getFormElementsPlus:function(ft){ var elements=[]; var nofilterEls=$$(this.getElements('input'), this.getElements('select'), this.getElements('textarea')); if(ft){ nofilterEls=nofilterEls.filter(ft); } nofilterEls.each(function(el){ var name = el.name; var value = el.getValue(); if(!name||!value)return; if(el.getProperty('type')=='checkbox'||el.getProperty('type')=='radio'){ if(!!el.getProperty('checked')) return elements.include($(el).toHiddenInput()); return; } elements.include(el); }); return $$(elements); }, toHiddenInput:function(){ return new Element('input',{'type':'hidden','name':this.name,'value':this.value}); }, fixEmpty:function(){ if(this.get('html')==''||this.get('html')==' '){ return this.setStyles({fontSize:0}); } if(this.style.height.toInt() == 0){this.setStyle('height','');} return this.setStyles({fontSize:''}); }, getSelectedRange: function() { if (!Browser.Engine.trident) return {start: this.selectionStart, end: this.selectionEnd}; var pos = {start: 0, end: 0}; var range = this.getDocument().selection.createRange(); if (!range || range.parentElement() != this) return pos; var dup = range.duplicate(); if (this.type == 'text') { pos.start = 0 - dup.moveStart('character', -100000); pos.end = pos.start + range.text.length; } else { var value = this.value; var offset = value.length - value.match(/[\n\r]*$/)[0].length; dup.moveToElementText(this); dup.setEndPoint('StartToEnd', range); pos.end = offset - dup.text.length; dup.setEndPoint('StartToStart', range); pos.start = offset - dup.text.length; } return pos; }, selectRange: function(start, end) { if (Browser.Engine.trident) { var diff = this.value.substr(start, end - start).replace(/\r/g, '').length; start = this.value.substr(0, start).replace(/\r/g, '').length; var range = this.createTextRange(); range.collapse(true); range.moveEnd('character', start + diff); range.moveStart('character', start); range.select(); } else { this.focus(); this.setSelectionRange(start, end); } return this; } }); String.extend({ format:function(){ if(arguments.length === 0) return this; var reg = /{(\d+)?}/g; var args = arguments; var string=this; var result = this.replace(reg,function($0, $1) { return args[$1.toInt()]||""; } ); return result; }, toFormElements:function(){ if(!this.contains('=')&&!this.contains('&'))return new Element('input',{type:'hidden'}); var elements=[]; var queryStringHash=this.split('&'); Array.from(queryStringHash).each(function(item){ if(item.contains('=')){ item=item.split('='); elements.push(new Element('input',{type:'hidden',name:item[0],value:decodeURIComponent(item[1])})); }else{ elements.push(new Element('input',{type:'hidden',name:item})); } }); return new Elements(elements); }, getLength:function(charAt){ var str = this; len = 0; for(i=0;i=0 && iCode<=255)||(iCode>=0xff61 && iCode<=0xff9f)){ len += 1; }else{ len += charAt||3; } } return len; } }); /*checkbox划选 @params scope checkbox所在容器 @params match 从容器去取得所有checkbox的selector */ Element.implement({ easyCheck: function(match,fn){ attachEsayCheck(this,match,fn&&fn.call(this)); } }); var attachEsayCheck=function(scope,match,callback){ callback=callback||function(){}; scope=$(scope); if(!scope)return; var checks=scope.getElements(match); if(!checks.length)return; var targetRoot; scope.addEvents({ 'mousedown':function(e){ scope.store('eventState',e.type); targetRoot=false; }, 'mouseup':function(e){ scope.eliminate('eventState'); }, 'mouseleave':function(){ scope.eliminate('eventState'); } }); checks.addEvent('mouseover',function(){ if(scope.retrieve('eventState')!='mousedown')return; var _target= this.match('input')?this:this.getElement('input'); if(!_target||_target.get('disabled'))return; if(!targetRoot){ targetRoot=_target.set('checked',!_target.get('checked')).fireEvent('change'); callback(targetRoot); return; } _target.set('checked',targetRoot.get('checked')).fireEvent('change'); callback(_target); }); }; var ItemAgg = new Class({ Implements: [Events,Options], options:{ // onActive:function(){}, // onBackground:function(){}, show:0, eventName:'click', activeName:'cur', itemsClass:null, firstShow:true }, initialize: function(tabs, items, options){ if(!tabs.length||!items.length)return; this.setOptions(options); this.tabs=$$(tabs); this.items=$$(items); this.curIndex=this.options.show||0; this.attach(); if(this.options.firstShow) this.show(this.curIndex); }, attach:function(){ this.tabs.each(function(item,index){ this.items[index].hide(); item.addEvent(this.options.eventName,function(e){ if(this.curIndex==index||!this.items[index])return; this.show(index); this.hide(this.curIndex); this.curIndex=index; }.bind(this)); },this); }, show:function(index){ this.items[index].show(); if(this.options.itemsClass) this.items[index].addClass(this.options.itemsClass); this.tabs[index].addClass(this.options.activeName); this.fireEvent('active',[this.tabs[index],this.items[index],index],this); }, hide:function(index){ $(this.items[index]).hide(); if(this.options.itemsClass) $(this.items[index]).removeClass(this.options.itemsClass); $(this.tabs[index]).removeClass(this.options.activeName); this.fireEvent('background',[this.tabs[index],this.items[index],index],this); } }); var _open = function(url,options){ options = options||{}; if(options.width&&options.width<1){options.width = window.getSize().x*options.width; } if(options.height&&options.height<1){options.height = window.getSize().x*options.height;} options = Object.append({ width:window.getSize().x*0.8, height:window.getSize().y*0.8, left:0, top:0 },options||{}); var params = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width={width},height={height},left={left},top={top}'; params = params.substitute(options); window.open(url||'about:blank','_blank',params); }; getTplById = function(tplId,tplframe){ tplframe = tplframe||'tplframe'; var frameDoc = $(tplframe).contentWindow.document,_html = frameDoc.getElementById(tplId).value; if(!!_html){return _html;} return false; }; var LazyLoad=new Class({ Implements:[Options,Events], options:{ img:'img-lazyload', //存图象地址的属性 textarea:'textarea-lazyload', //textarea的class lazyDataType:'textarea', //延时类型 execScript:true, //是否执行脚本 islazyload:true, //是否执行延时操作 lazyEventType:'beforeSwitch' //要接触延时的事件 }, initialize:function(options){ this.setOptions(options); }, loadCustomLazyData: function(containers, type) { var area, imgs,area_cls=this.options.textarea,img_data=this.options.img; if(!this.options.islazyload)return; $splat(containers).each(function(container){ switch (type) { case 'img': imgs=container.nodeName === 'IMG'?[container]:$ES('img',container); imgs.each(function(img){ this.loadImgSrc(img, img_data); },this); break; default: area=$E('textarea',container); if(area && area.hasClass(area_cls)) this.loadAreaData(container, area); break; } },this); }, loadImgSrc: function(img, flag) { flag = flag || this.options.img; var dataSrc = img.getProperty(flag); img.removeProperty(flag); if (dataSrc && img.src != dataSrc) { new Asset.image(dataSrc,{onload:function(image){ img.set('src',dataSrc); },onerror:function(){ if(window.ie && this.options.IE_show_alt){ new Element('span',{'class':'error-img','text':img.alt||img.title}).inject(img,'after'); img.remove(); } }.bind(this)}); } }, loadAreaData: function(container,area) { area.setStyle('display','none').className=''; //var content = new Element('div').inject(area,'before'); this.stripScripts(area.value,container); }, isAllDone:function(){ var type=this.options.lazyDataType,flag=this.options[type], elems, i, len, isImgSrc = type === 'img'; if (type) { elems = $ES(type,this.container); for (i = 0, len = elems.length; i < len; i++) { if (isImgSrc ?elems[i].get(flag): elems[i].hasClass(flag)) return false; } } return true; }, stripScripts: function(v,container){ var scripts = ''; var text = v.replace(/]*>([\s\S]*?)<\/script>/gi, function(){ scripts += arguments[1] + '\n'; return ''; }); container.innerHTML=text; if(this.options.execScript) $exec(scripts); }, _lazyloadInit:function(panel){ var loadLazyData=function(){ var containers=$type(panel)=='function'?panel(arguments):panel; this.loadCustomLazyData(containers,this.options.lazyDataType); if (this.isAllDone()) { this.removeEvent(this.options.lazyEventType,arguments.callee); } }; this.addEvent(this.options.lazyEventType,loadLazyData.bind(this)); } }); window.setTab = function(c,a){ var cur=c[0],el=c[1],cur_cls=a[0],el_cls=a[1]; var url = $('_'+cur).getAttribute('url'); if(url && !$(cur).getAttribute('url')){ W.page(url,{update:cur}); $(cur).setAttribute('url',url); } $(cur).style.display=''; $('_'+cur).addClass(cur_cls); el.each(function(e){ if(e!=cur){ $(e).style.display='none'; $('_'+e).removeClass(cur_cls); } }); }; function selectArea(sel,path,depth,effect){ sel=$(sel); if(!sel)return; var sel_value=sel.value; var sel_panel=sel.getParent(); var selNext=sel.getNext(); var areaPanel= sel.getParent('*[package]'); var hid=areaPanel.getElement('input[type=hidden]'); var curOption=$(sel.options[sel.selectedIndex]); var setHidden=function(sel){ var rst=[]; var sel_break = true; if (curOption && !curOption.get('has_c')){ /** 删除多余的三级地区 **/ var _currChliSpan = sel.getNext('.x-region-child'); if (_currChliSpan){ _currChliSpan.destroy(); } /** end **/ } var sels=$ES('select',areaPanel); sels.each(function(s){ if(s.getValue()!= '_NULL_' && sel_break){ var opt = $(s.options[s.selectedIndex]), t = opt.textContent ? opt.textContent : opt.innerText; rst.push(t); }else{ sel_break = false; } }); if(sel.value != '_NULL_'){ $E('input',areaPanel).value = areaPanel.get('package')+':'+rst.join('/')+':'+sel.value; }else{ $E('input',areaPanel).value =function(sel){ var s=sels.indexOf(sel)-1; if(s>=0){ return areaPanel.get('package')+':'+rst.join('/')+':'+sels[s].value; } return ''; }(sel); } }; if(sel_value=='_NULL_'&&selNext&&(selNext.getTag()=='span' && selNext.hasClass('x-areaSelect'))){ sel.nextSibling.empty(); setHidden(sel); }else{ /*nextDepth*/ if(curOption.get('has_c')){ var parameter_str = '&path='+path+'&depth='+depth; if(effect){ parameter_str += '&effect='+effect; } new Request({ url:'index.php?app=eccommon&ctl=tools&act=selRegion'+parameter_str, onSuccess:function(response){ var e; if(selNext && (selNext.getTag()=='span'&& selNext.hasClass('x-region-child'))){ e = selNext; }else{ e = new Element('span',{'class':'x-region-child'}).inject(sel_panel); } setHidden(sel); if(response){ e.set('html',response); if(hid){ hid.retrieve('sel'+depth,function(){})(); hid.retrieve('onsuc',function(){})(); } }else{ sel.getAllNext().remove(); setHidden(sel); hid.retrieve('lastsel',function(){})(sel); } } }).get(); if($('shipping')){ $('shipping').setText(''); } }else{ sel.getAllNext().remove(); setHidden(sel); if(!curOption.get('has_c')&&curOption.value!='_NULL_') hid.retrieve('lastsel',function(){})(sel); } } if(effect){ eval("load_"+effect+"('"+path+"','"+hid.getValue()+"','onchange')"); } } Hotkey ={ keyStr:['shiftKey','ctrlKey','altKey'], init:function(event,keyobj){ if(keyobj.length) keyobj.each(function(c,t){ if(!!c['keycode'].every(function(key){ return (this.keyStr.contains(key+'Key')) ? !!event['event'][key+'Key'] : event.key==key; },this)){ event.stop(); this.keyfn(c['type'],c['arg'],c['options']); } },this); }, keyfn:function(type,url,config){ switch (type){ case 'cmd': return Ex_Loader('cmdrunner',function(){ new cmdrunner(url,config).run(); }); break; case 'dialog': new Dialog(url,config); break; case 'showDetail': case 'refresh': for(var cf in finderGroup) if(finderGroup[cf]) finderGroup[cf][type](url,{},config); break; case 'close': if($E('.dialog')) $E('.dialog').retrieve('instance').close(); break; case 'event': var el =($(config)||document).getElement(url); if(el)el.fireEvent('click',{stop:$empty}); break; case 'detail': var detail,row; if(detail = $E('.view-detail')) if(row = detail[url]('.row')){ var href= row.getElement('.btn-detail-open').get('detail'); arguments.callee('showDetail',href,row); } break; case 'tabs': var row,tab; if(row = $E('.finder-detail .current')) if(tab= row[url]('.tab')){ var el =tab.getElement('a'); W.page(el.href,JSON.decode(el.target)); } break; default: W.page(url,config); break; } } }; (function() { var log, history, con = window.console; window.log = log = function() { history.push(arguments); con ? con.log[ con.firebug ? 'apply' : 'call'](con, Array.prototype.slice.call(arguments)) : alert(Array.prototype.slice.call(arguments).join('\n')); }; log.history = history = []; })(); Element.Events.enter = { base: 'keyup', condition: function(event){ return (event.key == 'enter'); } }; function selectOrganization(sel,path,depth,type,effect){ sel=$(sel); if(!sel)return; var sel_value=sel.value; var sel_panel=sel.getParent(); var selNext=sel.getNext(); var areaPanel= sel.getParent('*[package]'); var hid=areaPanel.getElement('input[type=hidden]'); var curOption=$(sel.options[sel.selectedIndex]); var setHidden=function(sel){ var rst=[]; var sel_break = true; if (curOption && !curOption.get('has_c')){ /** 删除多余的三级地区 **/ var _currChliSpan = sel.getNext('.x-region-child'); if (_currChliSpan){ _currChliSpan.destroy(); } /** end **/ } var sels=$ES('select',areaPanel); sels.each(function(s){ if(s.getValue()!= '_NULL_' && sel_break){ var opt = $(s.options[s.selectedIndex]), t = opt.textContent ? opt.textContent : opt.innerText; rst.push(t); if(parseInt(depth) == 2){ sel_break = false; } }else{ sel_break = false; } }); if(sel.value != '_NULL_'){ $E('input',areaPanel).value = areaPanel.get('package')+':'+rst.join('/')+':'+sel.value; }else{ $E('input',areaPanel).value =function(sel){ var s=sels.indexOf(sel)-1; if(s>=0){ return areaPanel.get('package')+':'+rst.join('/')+':'+sels[s].value; } return ''; }(sel); } }; if(sel_value=='_NULL_'&&selNext&&(selNext.getTag()=='span' && selNext.hasClass('x-areaSelect'))){ sel.nextSibling.empty(); setHidden(sel); }else{ /*nextDepth*/ if(curOption.get('has_c')){ var parameter_str = '&path='+path+'&depth='+depth+'&type='+type; if(effect){ parameter_str += '&effect='+effect; } new Request({ url:'index.php?app=organization&ctl=admin_management&act=selOrganization'+parameter_str, onSuccess:function(response){ var e; if(selNext && (selNext.getTag()=='span'&& selNext.hasClass('x-region-child'))){ e = selNext; }else{ e = new Element('span',{'class':'x-region-child'}).inject(sel_panel); } setHidden(sel); if(response){ e.set('html',response); if(hid){ hid.retrieve('sel'+depth,function(){})(); hid.retrieve('onsuc',function(){})(); } }else{ sel.getAllNext().remove(); setHidden(sel); hid.retrieve('lastsel',function(){})(sel); } } }).get(); }else{ sel.getAllNext().remove(); setHidden(sel); if(!curOption.get('has_c')&&curOption.value!='_NULL_') hid.retrieve('lastsel',function(){})(sel); } } if(effect){ eval("load_"+effect+"('"+path+"','"+hid.getValue()+"','onchange')"); } } function selectTbo2oStoreCat(sel,path,depth){ sel=$(sel); if(!sel)return; var sel_value=sel.value; var sel_panel=sel.getParent(); var selNext=sel.getNext(); var areaPanel= sel.getParent('*[package]'); var hid=areaPanel.getElement('input[type=hidden]'); var curOption=$(sel.options[sel.selectedIndex]); var setHidden=function(sel){ var rst=[]; var sel_break = true; if (curOption && !curOption.get('has_c')){ /** 删除多余的三级地区 **/ var _currChliSpan = sel.getNext('.x-region-child'); if (_currChliSpan){ _currChliSpan.destroy(); } /** end **/ } var sels=$ES('select',areaPanel); if(sel.value != '_NULL_'){ $E('input',areaPanel).value = sel.value; }else{ $E('input',areaPanel).value =function(sel){ var s=sels.indexOf(sel)-1; if(s>=0){ return sels[s].value; } return ''; }(sel); } }; if(sel_value=='_NULL_'&&selNext&&(selNext.getTag()=='span' && selNext.hasClass('x-areaSelect'))){ sel.nextSibling.empty(); setHidden(sel); }else{ /*nextDepth*/ if(curOption.get('has_c')){ var parameter_str = '&path='+path+'&depth='+depth; new Request({ url:'index.php?app=tbo2o&ctl=admin_store_cat&act=selTbo2oStoreCat'+parameter_str, onSuccess:function(response){ var e; if(selNext && (selNext.getTag()=='span'&& selNext.hasClass('x-region-child'))){ e = selNext; }else{ e = new Element('span',{'class':'x-region-child'}).inject(sel_panel); } setHidden(sel); if(response){ e.set('html',response); if(hid){ hid.retrieve('sel'+depth,function(){})(); hid.retrieve('onsuc',function(){})(); } }else{ sel.getAllNext().remove(); setHidden(sel); hid.retrieve('lastsel',function(){})(sel); } } }).get(); }else{ sel.getAllNext().remove(); setHidden(sel); if(!curOption.get('has_c')&&curOption.value!='_NULL_') hid.retrieve('lastsel',function(){})(sel); } } }