(function(){ var $D = YAHOO.util.Dom; var $E = YAHOO.util.Event; var $A = YAHOO.util.Anim; var PasswordStrength = function(el,attr){ el = $D.get(el); attr = attr || {}; this.levelChange = new YAHOO.util.CustomEvent('levelChange', this); this['bar-labels'] = attr['bar-labels'] || ['Too short','Fair','Medium','Strong'], this['bar-length'] = attr['bar-length'] || 60, this['bar-colors'] = attr['colors'] || ['red','orange','brown','green'], this['min-length'] = attr['min-length'] || 5; this['fair-length'] = attr['fair-length'] || 8; this['callback'] = attr['callback'] || function(){}; this['ui-element'] = null; this['element'] = el; this._level = -1; _init.call(this,el,attr); }; var proto = PasswordStrength.prototype; var $E = YAHOO.util.Event; var _showEl,_textEl,_barEl; var _getLevel = function(value){ var level = 0; if(value.length >= this['min-length']){ level = 1; }; if(value.length >= this['fair-length']){ level = 2; }; var hasChar = function(){ for(var i=0,j=value.length;i', '' ].join(''); el.parentNode.parentNode.parentNode.appendChild(_showEl); _textEl = _showEl.getElementsByTagName('span')[0]; _barEl = _showEl.getElementsByTagName('span')[1]; this['ui-element'] = _showEl; } _textEl.innerHTML = this['bar-labels'][this._level]; $D.setStyle(_textEl,'color',this['bar-colors'][this._level]); $D.setStyle(_barEl,'background-color',this['bar-colors'][this._level]); var anim = new $A(_barEl,{'width':{from:_barEl.offsetWidth,to:newWidth}},0.5); anim.animate(); }; var _init = function(el,attr){ var self = this; var checkLevel = function(){ var level = _getLevel.call(self,el.value); if(self._level != level){ self._level = level; _updateUI.call(self); self.levelChange.fire(); }; }; checkLevel(); var timeId = 0; $E.on(el,'keyup',function(e){ checkLevel(); }); }; YAHOO.widget.PasswordStrength = PasswordStrength; }()); /* autosuggest.js */ (function(){ var AutoSuggest = function(el,attr){ attr = attr || {}; this.constructor.superclass.constructor.call(this,el,attr); _init.call(this); }; YAHOO.extend(AutoSuggest,YAHOO.util.Element); var proto = AutoSuggest.prototype; var $E = YAHOO.util.Event; var $D = YAHOO.util.Dom; var $C = YAHOO.util.Connect; proto._dataSource = null; proto.initAttributes = function(attr){ attr = attr || {}; var el = this.get('element'); var self = this; this.constructor.superclass.initAttributes.call(this,attr); this.setAttributeConfig('dataUrl',{ value:attr.dataUrl || null }); this.setAttributeConfig('dataSchema',{ value:attr.dataSchema || ['ResultSet.Result','Title'], validator:YAHOO.lang.isArray }); this.setAttributeConfig('buttonImage',{ value:attr.buttonImage || 'i7/btn_suggest.gif' }); this.setAttributeConfig('buttonClassName',{ value:attr.buttonClassName || 'yui-ac-button' }); this.setAttributeConfig('menuEl',{ value:attr.menuEl || null }); this.setAttributeConfig('buttonEl',{ value:attr.buttonEl || null }); this.setAttributeConfig('suggestEl',{ value:attr.suggestEl || null }); this.setAttributeConfig('enable',{ value:attr.enable || true }); this.setAttributeConfig('formatResult',{ value:attr.formatResult || function(oResultItem, sQuery) { var sKey = oResultItem[0]; var sKeyQuery = sKey.substr(0,sQuery.length); var sKeyRemainder = sKey.substr(sQuery.length); return '' + sKeyQuery + '' + sKeyRemainder + ''; //var oRegExp = new RegExp('('+sQuery+')','gi'); //return '' + (oResultItem[0].replace(oRegExp,'$1')) + ''; }, validator:YAHOO.lang.isFunction }); this.setAttributeConfig('headerHTML',{ value:attr.headerHTML || '' }); this.setAttributeConfig('scriptQueryAppend',{ value:attr.scriptQueryAppend || '', method:function(value){ if(self._dataSource){ self._dataSource.scriptQueryAppend = value; }; } }); this.setAttributeConfig('autoSubmit',{ value:attr.autoSubmit || true, validator:YAHOO.lang.isBoolean }); this.setAttributeConfig('scriptQueryParam',{ value:attr.scriptQueryParam || 'query', method:function(value){ self._dataSource.scriptQueryParam = value; } }); this.setAttributeConfig('responseType',{ value:attr.responseType || YAHOO.widget.DS_XHR.TYPE_JSON, validator:YAHOO.lang.isObject }); }; var _init = function(){ var self = this; var el = this.get('element'); var inputEl = el; var suggestEl = (this.get('suggestEl'))?this.get('suggestEl'):document.body.appendChild(document.createElement('div')); // custom event this.menuSwitch = new YAHOO.util.CustomEvent('menuSwitch', this); // create autocomplete var dataSource = new YAHOO.widget.DS_XHR(this.get('dataUrl'),this.get('dataSchema')); dataSource.responseType = this.get('responseType'); dataSource.responseStripAfter = '= n) { return sString.substr(0, i) + '......'; } } return sString; }; var setCodeViewer = function(dTextarea, oAttr) { var dTextarea = YUD.get(dTextarea); var oAttr = oAttr || {}; oAttr.message = oAttr.message || 'The script has been saved into your clipboard'; if (!dTextarea) { return; } var aLine = dTextarea.value.split('\n'); for (var i = aLine.length - 1, j = 0; i >= j; i--) { aLine[i] = aLine[i].replace(/(^\s+)|\s+$/g,''); if (!aLine[i]) { aLine[i].splice(i,1); } } dTextarea.value = aLine.join('\n'); YUE.on(dTextarea, 'keyup', function(oEvent) { YUE.preventDefault(oEvent); }); YUE.on(dTextarea, 'paste', function(oEvent) { YUE.preventDefault(oEvent); }); YUE.on(dTextarea, 'mouseup', function(oEvent) { this.select(); if (YAHOO.env.ua.ie > 0) { var dRange = this.createTextRange(); dRange.select(); dRange.execCommand('copy'); alert(oAttr.message); dRange.collapse(true); } }); }; // 下拉式選單的共用funciton var buttonMenu = function (dItems, sUser) { if (!sUser) { return; } var dTitle, dUrl, dButton, oButton; var aMenuItems = []; // 將所有的 li 轉換為陣列物件 YUD.batch(dItems, function (dItem) { var isSelected = YUD.hasClass(dItem, 'selected') ? true : false; var dLink = dItem.getElementsByTagName('a')[0]; var dUrl = YUD.getElementsByClassName('site-profile-link', 'a', dItem)[0]; var sHash = (dUrl) ? dUrl.href.replace('http://sitetag.us/', '') : dItem.getElementsByTagName('input')[0].value; var sUrl = document.location.toString(); var sTogo = (sUrl.indexOf('profile') !== -1) ? '/profile/' + sUser + '/' + sHash : '?hash=' + sHash; aMenuItems.push({ 'text' : dLink.innerHTML, 'url' : sTogo, 'disabled' : isSelected, 'selecteed' : isSelected }); dUrl = null; }); // 將用不到的 li 移除掉 for (var i = dItems.length - 1, j = 0; i >= j; i--) { if (!YUD.hasClass(dItems[i], 'selected')) { dItems[i].parentNode.removeChild(dItems[i]); continue; } dTitle = dItems[i].getElementsByTagName('a')[0]; dUrl = dItems[i].getElementsByTagName('span')[0]; // 放置 button dButton = document.createElement('span'); YUD.generateId(dButton); dTitle.parentNode.insertBefore(dButton, dUrl); } oButton = new YAHOO.widget.Button({ type : 'menu', label : 'Switch Website', menu : aMenuItems, container : dButton.id }); if (!YUD.get('ph')) { oButton.getMenu().setFooter('» My WebSites List'); } }; var BadgeList = function () { var dModule = this; var dForm = dModule.getElementsByTagName('form')[0]; var dBadgeCodes = YUD.getElementsByClassName('kind', 'div', dModule); var dTextareas = YUD.getElementsByClassName('code', 'textarea', dForm); var dTitle, dUrl, dButton; var oButton; var aMenuItems = []; if (dForm) { YUD.batch(dTextareas, function(dTextarea) { setCodeViewer(dTextarea); }); } var oCarousel = new YAHOO.widget.Carousel('foo', { animation : { speed: 0.5 }, numVisible : 3 }); var onItemSelected = function (iIndex) { var dItem = oCarousel.getElementForItem(iIndex) if (dItem) { YUD.setStyle(dBadgeCodes, 'display', 'none'); YUD.setStyle(dBadgeCodes[iIndex], 'display', 'block'); } } oCarousel.on('itemSelected', onItemSelected); oCarousel.render(); oCarousel.show(); }; var dashHeader = function () { var dItems = this.getElementsByTagName('ul')[0].getElementsByTagName('li'); sUser = this.getElementsByTagName('ul')[0].getElementsByTagName('input')[0].value; if (dItems) { new buttonMenu(dItems, sUser); } }; var dashBlackList = function() { var dModule = this; var dForm = dModule.getElementsByTagName('form')[0]; YUE.on(dModule, 'click', function(oEvent) { var dTarget = YUE.getTarget(oEvent); if (YUD.hasClass(dTarget, 'remove')) { if (!confirm('Are you sure to remove this tag from blacklist?')) { YUE.preventDefault(oEvent); } } }); YUE.on(dForm, 'submit', function(oEvent) { if (dModule.getElementsByTagName('tr').length > 100) { var dInput = dForm.elements['tag']; if (YAHOO.lang.trim(dInput.value) !== '') { alert('Your tags in blacklist is over 100!'); } YUE.preventDefault(oEvent); } }); }; var helpList = function() { var dModule = this; var dIndex = YUD.getElementsByClassName('index', 'a', dModule); var dExpend = YUD.getElementsByClassName('expend', 'a', dModule); var dLists = YUD.getElementsByClassName('list', 'li', dModule); var dContents = YUD.getElementsByClassName('content', 'div', dModule); var eventDelegation = function(oEvent) { var dTarget = YUE.getTarget(oEvent); if (dTarget.nodeName.toLowerCase() === 'a' && YUD.hasClass(dTarget, 'event')) { YUE.preventDefault(oEvent); // 索引列表 if (YUD.hasClass(dTarget, 'index')) { if (!YUD.hasClass(dTarget, 'selected')) { YUD.addClass(dTarget, 'selected'); YUD.removeClass(dExpend, 'selected'); } YUD.batch(dContents, function(dContent) { if (YUD.getStyle(dContent, 'display') === 'block') { YUD.setStyle(dContent, 'display', 'none'); } }); YUD.batch(dLists, function(dList) { if (YUD.hasClass(dList, 'open')) { YUD.removeClass(dList, 'open'); } }); // 全部展開 } else if (YUD.hasClass(dTarget, 'expend')) { if (!YUD.hasClass(dTarget, 'selected')) { YUD.addClass(dTarget, 'selected'); YUD.removeClass(dIndex, 'selected'); } YUD.batch(dContents, function(dContent) { if (YUD.getStyle(dContent, 'display') === 'none') { YUD.setStyle(dContent, 'display', 'block'); } }); YUD.batch(dLists, function(dList) { if (!YUD.hasClass(dList, 'open')) { YUD.addClass(dList, 'open'); } }); // toggle Event } else { var dLi = YUD.getAncestorByClassName(dTarget, 'list'); var dContent = YUD.getElementsByClassName('content', 'div', dLi); if (YUD.getStyle(dContent, 'display') == 'block') { YUD.removeClass(dLi, 'open'); YUD.setStyle(dContent, 'display', 'none'); } else { YUD.addClass(dLi, 'open'); YUD.setStyle(dContent, 'display', 'block'); } } } }; var init = function() { var sUrl = location.href; if (sUrl.indexOf('#') == -1) { YUD.addClass(dIndex, 'selected'); YUD.removeClass(dExpend, 'selected'); YUD.batch(dLists, function(dList) { if (YUD.hasClass(dList, 'open')) { if (!YUD.hasClass(dList, 'selected')) { YUD.removeClass(dList, 'open'); } } }); YUD.batch(dContents, function(dContent) { if (YUD.getStyle(dContent, 'display') === 'block') { var dThisList = YUD.getAncestorByClassName(dContent, 'list'); if (!YUD.hasClass(dThisList, 'selected')) { YUD.setStyle(dContent, 'display', 'none'); } dThisList = null; } }); } YUE.on(dModule, 'click', eventDelegation); }; init(); } /* var hpRegister = function() { var dInput = this.getElementsByTagName('input')[0]; var dButton = this.getElementsByTagName('button')[0]; new setTextPrompt(dInput, 'http://','http://' + 'Pleas input your website url.', dButton); }; */ var hpPromo = function() { var dModule = this; var tmpBar, tmpInner; var dInners = YUD.getElementsByClassName('inner', 'div', dModule); var dMenu = YUD.getElementsByClassName('menu', 'ul', dModule)[0]; var dBars = dMenu.getElementsByTagName('li'); var barClick = function(oEvent) { YUE.preventDefault(oEvent); if (YUD.hasClass(this, 'selected')) { return; } var iCurrent = parseInt(this.getAttribute('index')); contentShow(iCurrent - 1); }; var contentShow = function(iCurrent) { if (tmpBar) { YUD.removeClass(tmpBar, 'selected'); } if (tmpInner) { YUD.removeClass(tmpInner, 'on'); } tmpBar = dBars[iCurrent]; tmpInner = dInners[iCurrent]; YUD.addClass(tmpBar, 'selected'); YUD.addClass(tmpInner, 'on'); }; var init = function() { var i = 0; YUD.batch(dBars, function(dBar, index) { i++; dBar.setAttribute('index', i); }); YUE.on(dBars, 'click', barClick); tmpBar = YUD.getElementsByClassName('selected', 'li', dMenu)[0]; tmpInner = YUD.getElementsByClassName('on', 'div', dModule)[0]; }; init(); }; var formValidation = function(dForm) { var valid; var errorFn = function(el) { var sWord = el.getAttribute('maxlength'); var sMin = el.getAttribute('minlength'); var oErrMsgs = { required: { msg: 'This field is required.', test: function(el) { var sValue = YAHOO.lang.trim(el.value); return sValue != ''; } }, email: { msg: 'Not a valid email address.', test: function(el) { var oFilter = /^[a-z0-9_+.-]+\@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/i; return oFilter.test(el.value); } }, url: { msg: 'Not a valid website address.', test: function(el) { var oFilter = /^((ht|f)tp(s?)\:\/\/|~\/|\/)?([\w]+:\w+@)?([a-zA-Z0-9]{1}([\w\-]*\.)+([\w]{2,5}))(:[\d]{1,5})?((\/?\w+\/)+|\/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?/; return oFilter.test(el.value); } }, max: { msg: 'Your input is over ' + sWord + ' characters', test: function(el) { var sLength = YAHOO.lang.trim(el.value).length || YAHOO.lang.trim(el.innerHTML).length; return sLength < sWord; } }, min: { msg: 'Your input must over ' + sMin + ' characters', test: function(el) { var sLength = YAHOO.lang.trim(el.value).length || YAHOO.lang.trim(el.innerHTML).length; return sLength > sMin; } } }; return { 'oErrMsgs': oErrMsgs } } var handleErrs = function(el, oEvent) { valid = false; for (var name in errorFn(el).oErrMsgs) { if (YUD.hasClass(el, name) && !errorFn(el).oErrMsgs[name].test(el)) { alert(errorFn(el).oErrMsgs[name].msg); el.focus(); YUE.preventDefault(oEvent); valid = true; return ; } } }; YUE.on(dForm, 'submit', function(oEvent) { for (var i = 0, j = dForm.elements.length; i < j; i++) { handleErrs(dForm.elements[i], oEvent); if (valid) { break; } } }); }; var mySiteList = function() { var dModule = this; var dRemoveButton = YUD.getElementsByClassName('remove', 'li', dModule); YUE.on(dRemoveButton, 'click', function(oEvent) { if (!confirm('Are you sure? The data of your website will be remove!')) { YUE.preventDefault(oEvent); return; } }); }; var profileHeader = function () { var dItems = this.getElementsByTagName('ul')[0].getElementsByTagName('li'); sUser = this.getElementsByTagName('ul')[0].getElementsByTagName('input')[0].value; if (dItems) { new buttonMenu(dItems, sUser); } }; var setTextPrompt = function(dInput, sText, sPrompt , dButton) { if (!sText) { var sText = ''; } if (!dInput || !sPrompt) { return; } YUD.setStyle(dInput, 'color', '#999'); dInput.value = sPrompt; YUE.on(dInput, 'mouseup', function() { if (this.value === sPrompt) { this.value = sText; YUD.setStyle(this, 'color', '#333'); } }); YUE.on(dInput, 'blur', function() { if (this.value === sText) { this.value = sPrompt; YUD.setStyle(this, 'color', '#999'); } }); if (dButton) { YUE.on(dButton, 'click', function() { if (dInput.value === sPrompt) { dInput.value = sText; } }); YUE.on(dButton, 'change', function() { if (dInput.value === sPrompt) { dInput.value = sText; } }); } }; var mastHead = function() { dModule = this; var dForm = dModule.getElementsByTagName('form')[0]; var dInput = dForm.elements['p']; var dButton = dForm.elements['post']; /* var oSuggest = new YAHOO.widget.AutoSuggest(dInput,{ dataUrl:config.URL, scriptQueryAppend:'method=sitetag.suggestion.getList', suggestEl:YUD.getElementsByClassName('suggest','div',dForm)[0] }); */ new setTextPrompt(dInput, null, 'Pleas input the tag you want to search', dButton); }; var newsRotator = function(dElement, oConfig) { var oComponent = this; if (typeof(oConfig) == 'undefined') { oConfig = {}; } oComponent.config = {}; oComponent.config.iDuration = (oConfig.iDuration) ? oConfig.iDuration : 0.5; oComponent.config.iInterval = (oConfig.iInterval) ? oConfig.iInterval : 3; oComponent.config.sItemClassName = (oConfig.sItemClassName) ? oConfig.sItemClassName : ''; oComponent.config.oEasingMethod = (oConfig.oEasingMethod) ? oConfig.oEasingMethod : null; var iShowCurrent = 0; var iShowNext = 1; var iQueueCurrent = 0; var iQueueNext = 1; var dScroller, dQueues, oMotion1, oMotion2, oScollerTimer, dHeightDetector; var dShows = []; oComponent.run = function() { iShowNext = (iShowCurrent) ? 0 : 1; iQueueNext = ((iQueueCurrent + 1) < dQueues.length) ? iQueueCurrent + 1 : 0; dShows[iShowNext].innerHTML = dQueues[iQueueNext].innerHTML; var iShowCurrentBottomY = YUD.getRegion(dShows[iShowCurrent])['bottom']; YUD.setStyle(dShows[iShowNext], 'display', 'block'); YUD.setY(dShows[iShowNext], iShowCurrentBottomY); var iDistance = iShowCurrentBottomY - YUD.getRegion(dShows[iShowCurrent])['top']; oMotion1.attributes.points = {by : [0, -iDistance]}; oMotion2.attributes.points = {by : [0, -iDistance]}; oMotion1.animate(); oMotion2.animate(); }; var onMotionComplete = function(oEvent) { YUD.setStyle(dShows[iShowCurrent], 'display', 'none'); iShowCurrent = (iShowCurrent) ? 0 : 1; iQueueCurrent = iQueueNext; oScrollerTimer = setTimeout(oComponent.run, oComponent.config.iInterval*1000); }; var init = function () { dScroller = (typeof(dElement) == 'object') ? dElement : document.getElementById(dElement); dQueues = (oComponent.sItemClassName !== '') ? YUD.getElementsByClassName(oComponent.config.sItemClassName, '*', dScroller) : dScroller.getElementsByTagName('li'); YUD.setStyle(dQueues, 'display', 'none'); for (var i = 0, j = 2; i < j; i++) { if (!dQueues[0]) { return; } dShows[i] = document.createElement(dQueues[0].nodeName.toLowerCase()); dScroller.appendChild(dShows[i]); YUD.setStyle(dShows[i], 'position', 'absolute'); } dShows[0].innerHTML = dQueues[0].innerHTML; YUD.setStyle(dShows[1], 'display', 'none'); oMotion1 = new YAHOO.util.Motion(dShows[0], {}, oComponent.config.iDuration, oComponent.config.oEasingMethod); oMotion2 = new YAHOO.util.Motion(dShows[1], {}, oComponent.config.iDuration, oComponent.config.oEasingMethod); oScrollerTimer = setTimeout(oComponent.run, oComponent.config.iInterval*1000); oMotion1.onComplete.subscribe(onMotionComplete); YUE.on(dScroller, 'mouseover', function() { clearTimeout(oScrollerTimer); oScrollerTimer = null; }); YUE.on(dScroller, 'mouseout', function() { if (oScrollerTimer == null) { oScrollerTimer = setTimeout(oComponent.run, oComponent.config.iInterval*1000); } }); }; init(); }; var realtimeTag = function () { var dScroller = YUD.getElementsByClassName('rotator', 'div', this)[0]; oAttribute = { iDuration: 0.5, iInterval: 2, sItemClassName: 'rotate-group', oEasingMethod: null }; oScoller = new newsRotator(dScroller, oAttribute); }; var randomSite = function() { var dModule = this; var oTimer, dPrev, dNext; var dCarousel = YUD.getElementsByClassName('carousel', 'div', dModule)[0]; var dUl = dCarousel.getElementsByTagName('ul')[0]; var dLists = dCarousel.getElementsByTagName('li'); var dList = dLists[0]; var sListWidth = YUD.getRegion(dList).width; YUD.setStyle(dUl, 'left', (sListWidth+20)*-1 + 'px'); var dLastList = dLists[dLists.length - 1]; var bRotate = false; dLastList.parentNode.removeChild(dLastList); YUD.insertBefore(dLastList, dList); var rightRotate = function() { if (bRotate) { return; } YUD.setStyle(dNext, 'opacity', '0.6'); attrs = { points: { by: [(sListWidth+20)*-1, 0] } }; var anim = new YAHOO.util.Motion(dUl, attrs); anim.animate(); bRotate = true; anim.onComplete.subscribe(function(e) { var dLists = dCarousel.getElementsByTagName('li'); var dList = dLists[0]; dList.parentNode.removeChild(dList); dUl.appendChild(dList); YUD.setStyle(dUl, 'left', (sListWidth+20)*-1 + 'px'); bRotate = false; YUD.setStyle(dNext, 'opacity', '1'); }) } var leftRotate = function() { if (bRotate) { return; } YUD.setStyle(dPrev, 'opacity', '0.6'); attrs = { points: { by: [(sListWidth+20), 0] } }; var anim = new YAHOO.util.Motion(dUl, attrs); anim.animate(); bRotate = true; anim.onComplete.subscribe(function(e) { var dLists = dCarousel.getElementsByTagName('li'); var dList = dLists[dLists.length - 1]; dList.parentNode.removeChild(dList); YUD.insertBefore(dList, dLists[0]); YUD.setStyle(dUl, 'left', (sListWidth+20)*-1 + 'px'); bRotate = false; YUD.setStyle(dPrev, 'opacity', '1'); }) } var autoPlay = function() { clearInterval(oTimer); oTimer = setInterval(rightRotate, 5000); } var stopPlay = function() { clearInterval(oTimer); } var init = function() { var dButton = document.createElement('span'); YUD.addClass(dButton, 'button'); var oHTML = [ '', '' ]; dButton.innerHTML = oHTML.join(''); YUD.insertBefore(dButton, YUD.getElementsByClassName('container', 'div', dModule)[0]); oTimer = setInterval(rightRotate, 5000); YUE.on(dModule, 'mouseover', stopPlay); YUE.on(dModule, 'mouseout', autoPlay); dPrev = YUD.getElementsByClassName('prev', 'a', dModule); dNext = YUD.getElementsByClassName('next', 'a', dModule); YUE.on(dPrev, 'click', function(oEvent) { YUE.preventDefault(oEvent); leftRotate(); }); YUE.on(dNext, 'click', function(oEvent) { YUE.preventDefault(oEvent); rightRotate(); }); } init(); } // 截字的共用function var searchCut = function(dModule) { var dResult = YUD.getElementsByClassName('result', 'div', dModule)[0]; var dLis = dResult.getElementsByTagName('li'); var sTag = dResult.getElementsByTagName('input')[0].value; YUD.batch(dLis, function(dLi) { var dTitle = dLi.getElementsByTagName('h2')[0]; var sDesc = dTitle.getElementsByTagName('a')[0].innerHTML; sDesc = YAHOO.lang.trim(sDesc).replace(/<\/?.+?>/g, ""); sDesc = cutWord(sDesc, 68); //幾個字元,英文是一個字元,中文是兩個字元 sDesc = sDesc.replace(sTag, '' + sTag + ''); dTitle.getElementsByTagName('a')[0].innerHTML = sDesc; dTitle = null; sDesc = null; }); }; var breadCrumb = function() { var dModule = this; var dPromote = YUD.getElementsByClassName('promote','div', dModule)[0]; if (dPromote) { var dIntro = document.createElement('div'); dIntro.className = 'intro'; dIntro.innerHTML = [ '

Sitetag is the service for tag collection which can analyse content outline and summary of your site content.', 'By collection and analysis of Sitetag, it make you easier to find the information you are interested.', '', '» futher introduion', '

' ].join(''); dPromote.innerHTML = dIntro.innerHTML; dIntro = null; } }; var siteSearch = function() { var dModule = this; var dHead = YUD.getElementsByClassName('hd','div', dModule)[0]; searchCut(dModule); tagToggle(dModule); }; var tagToggle = function(dModule) { var dTags = YUD.getElementsByClassName('tags', 'span', dModule, function(dTag) { YUD.setStyle(dTag, 'display', 'none'); }); var showTags = function(el) { var dTarget = YUE.getTarget(el); if (YUD.hasClass(dTarget, 'trigger')) { YUE.preventDefault(el); var dThisTag = YUD.getAncestorByTagName(dTarget, 'li'); var dThisTags = YUD.getElementsByClassName('tags', 'span', dThisTag)[0]; if (!dThisTags) { return; } YUD.setStyle(dTarget, 'display', 'none'); var sDisplay = YUD.getStyle(dThisTags, 'display'); if (sDisplay == 'none') { YUD.setStyle(dThisTags, 'display', 'inline'); } else { YUD.setStyle(dThisTags, 'display', 'none'); } } }; var preventClick = function(el) { var dTarget = YUE.getTarget(el); if (YUD.hasClass(dTarget, 'highlight')) { YUE.preventDefault(el); return; } if (dTarget.tagName.toLowerCase() == 'a') { var dBold = YUD.getElementsByClassName('highlight', 'b', dTarget); if (dBold[0]) { YUE.preventDefault(el); return; } } } YUE.on(dModule, 'click', showTags); YUE.on(dModule, 'click', preventClick); }; var siteAd = function () { var dModule = this; YUE.on(dModule, 'click', function(oEvent) { var dTarget = YUE.getTarget(oEvent); if (dTarget.tagName.toLowerCase() === 'a') { /* if (document.images) { var logUrl = 'http://log.sitetag.us/?clickad=true'; (new Image()).src = logUrl; } */ } }); }; var searchList = function() { var dModule = this; var dHead = YUD.getElementsByClassName('hd','div', dModule)[0]; searchCut(dModule); tagToggle(dModule); }; var siteSetForm = function() { var dModule = this; var dForm = dModule.getElementsByTagName('form')[0]; var dUrl = dForm.elements['url']; var dTitle = dForm.elements['title']; var dDesc = dForm.elements['desc']; var dTimeSelect = dForm.elements['timezone']; YUE.on(dTimeSelect, 'change', function(oEvent) { var dTarget = this; var sUrl = config.URL + '?method=sitetag.site.getTimeZone&query=' + dTarget.value; var oCallback = { success: function(oResponse) { var sResponse = oResponse.responseText.replace(/\s*/g,''); var oData = YAHOO.lang.JSON.parse(sResponse); var dTime = YUD.getElementsByClassName('time', 'em', dForm)[0]; if (oData.result) { dTime.innerHTML = oData.result; } else { alert('System busy'); } }, failure: function() { alert('System busy.'); YAHOO.log(oResponse.statusText); } }; YUC.asyncRequest('POST', sUrl, oCallback); }); if (dUrl) { YUE.on(dUrl, 'blur', function(oEvent) { var sUrl = config.URL + '?method=sitetag.user.getSiteTitle&url=' + this.value; var oCallback = { success: function(oResponse) { var sResponse = oResponse.responseText.replace(/\s*/g,''); var oData = YAHOO.lang.JSON.parse(sResponse); if (oData.title && oData.title != '') { dTitle.value = oData.title; } if (oData.description && oData.description != '') { dDesc.innerHTML = oData.description; } }, failure: function() { alert('System busy.'); YAHOO.log(oResponse.statusText); } } YUC.asyncRequest('POST', sUrl, oCallback); }); } }; var trackForm = function () { var dModule = this; var dForm = dModule.getElementsByTagName('form')[0]; var dTextarea = YUD.get('code', dForm); var dTitle, dUrl, dButton; var oButton; var aMenuItems = []; if (dForm) { setCodeViewer(dTextarea); var sUser = YUD.get('uid').value; var sHash = YUD.get('hash').value; var sCode1 = 'Sitetag'; var sCode2 = ''; var dYes = YUD.get('yeslogo'); var dNo = YUD.get('nologo'); var dLogo = YUD.getElementsByClassName('logo', 'a', dForm); YUE.on(dYes, 'click', function(oEvent) { dTextarea.value = sCode1; }); YUE.on(dNo, 'click', function(oEvent) { dTextarea.value = sCode2; }); } var oPanel = new YAHOO.widget.Panel('loading', { width: '240px', fixedcenter: true, close: false, draggable: false, zindex: 5, modal: true, visible: false }); oPanel.setHeader('Loading, please wait...') oPanel.setBody(""); oPanel.render(document.body); YUE.on(dForm, 'submit', function(oEvent) { YUE.preventDefault(oEvent); oPanel.show(); var sHash = getValue('hash', location.href); var sUrl = config.URL + '?method=sitetag.site.isScriptExist&hash=' +sHash; var oCallback = { success: function(oResponse) { var sResponse = oResponse.responseText.replace(/\s*/g,''); var oData = YAHOO.lang.JSON.parse(sResponse); var dCheck = YUD.getElementsByClassName('check', 'div', dForm)[0]; var dText = dCheck.getElementsByTagName('em')[0]; var dSubmit = YUD.getElementsByClassName('yui-submit-button', 'span', dForm)[0]; var dRows = YUD.getElementsByClassName('row', 'div', dForm); var dWarn = YUD.getElementsByClassName('warn', 'ul', dModule)[0]; var timer = function() { if (oData) { YUD.removeClass(dCheck, 'unknow'); YUD.addClass(dCheck, 'tracked'); dText.innerHTML = 'Tracking code found and activated.'; dSubmit.parentNode.removeChild(dSubmit); dWarn.innerHTML = '
  • Please choose the which kind of badge inBadge tools, and put it in your website!
  • '; YUD.batch(dRows, function(dRow) { if (YUD.hasClass(dRow, 'last')) { return; } dRow.parentNode.removeChild(dRow); }); } else { YUD.removeClass(dCheck, 'unknow'); YUD.addClass(dCheck, 'untrack'); dText.innerHTML = 'Tracking code not found. Do you put the tracking code on your website?'; } oPanel.hide(); }; setTimeout(timer, 3000); }, failure: function() { alert('System busy.'); YAHOO.log(oResponse.statusText); oPanel.hide(); } }; YUC.asyncRequest('POST', sUrl, oCallback); }); }; // 全域執行 var postButton = function () { var dForms = document.getElementsByTagName('form'); if (dForms) { for (var i = 0, j=dForms.length; i < j; i++) { var dButton = dForms[i].elements['post']; new YAHOO.widget.Button(dButton); dButton = null; formValidation(dForms[i]); } } }; var howToUse = function() { var Intro = function(sClassName, iDuring, iOpacity) { var sClass = sClassName || 'highlighter', iDuring = iDuring || 0.5, iOpacity = iOpacity || 0.6; var sHtml = '', selectedEl, oPanel = null, dMenu = null, oTimer, iCurrent = 0; var dDesc, dMenuList; var highlightEls = YUD.getElementsByClassName(sClassName); var iMax = highlightEls.length; var showPanel = function(iIndex, bAuto) { if (bAuto && iCurrent == iMax) { oPanel.hide(); stopPlay(); YUD.removeClass(dMenuList, 'active'); YUD.removeClass(selectedEl, 'selected'); YUD.setStyle(YUD.getElementsByClassName('menucontrol', 'div', dMenu)[0], 'display', 'none'); return; } YUD.addClass(dMenuList.getElementsByTagName('a')[iIndex], 'selected'); YUD.removeClass(selectedEl, 'selected'); selectedEl = dMenuList.getElementsByTagName('a')[iIndex]; var dHighlight = highlightEls[iIndex]; var sDesc = dHighlight.getAttribute('ref'); var dRegion = YUD.getRegion(dHighlight); var sWidth = dRegion['right'] - dRegion['left']; var aXY = YUD.getXY(dHighlight); oPanel.setBody('<' + dHighlight.tagName + ' class="' + dHighlight.className + '" style="margin:0;">' + dHighlight.innerHTML + '') oPanel.cfg.setProperty('xy', aXY); if (iIndex == 0) { oPanel.cfg.setProperty('width', '300px'); } else { oPanel.cfg.setProperty('width', sWidth + 'px'); } oPanel.show(); dDesc.innerHTML = sDesc; if (bAuto) { iCurrent = (iIndex > iMax - 1) ? 0 : iIndex + 1; } } var autoPlay = function() { clearInterval(oTimer); oTimer = setInterval(function() {showPanel(iCurrent, true)}, 5000); } var stopPlay = function() { clearInterval(oTimer); } var howToClick = function(oEvent) { YUE.preventDefault(oEvent); YUD.setStyle(dMenu, 'display', 'block'); YUD.addClass(dMenuList, 'active'); if (!oPanel) { var attrs = { close: false, draggable: false, effect: {effect:YAHOO.widget.ContainerEffect.FADE, duration: iDuring}, visible: false }; oPanel = new YAHOO.widget.Panel('htu', attrs); oPanel.subscribe('beforeShow', oPanel.buildMask); oPanel.subscribe('beforeShow', function() { YUD.addClass(document.body, 'masked'); this.sizeMask(); YUD.setStyle(this.mask, 'opacity', '0'); YUD.setStyle(this.mask, 'display', 'block'); YUD.setStyle(this.mask, 'backgroundColor', 'black'); var anim = new YAHOO.util.Anim(this.mask, { opacity: {to: iOpacity} }); anim.duration = iDuring; anim.animate(); }); oPanel.beforeHideEvent.subscribe(function() { YUD.removeClass(document.body, 'masked'); var anim = new YAHOO.util.Anim(this.mask, { opacity: {to: 0} }); anim.duration = iDuring; anim.onComplete.subscribe(function() { YUD.setStyle(oPanel.mask, 'display', 'none'); }); anim.animate(); }); oPanel.render(document.body); var dClose = YUD.getElementsByClassName('close', 'span', dMenu); YUE.on(dClose, 'click', function(oEvent) { YUE.preventDefault(oEvent); oPanel.hide(); stopPlay(); YUD.removeClass(dMenuList, 'active'); YUD.removeClass(selectedEl, 'selected'); YUD.setStyle(YUD.getElementsByClassName('menucontrol', 'div', dMenu)[0], 'display', 'none'); }); YUE.delegate(dMenuList, 'click', function(oEvent, matchedEl, container) { YUE.preventDefault(oEvent); stopPlay(); if (YUD.hasClass(container, 'active')) { if (YUD.hasClass(matchedEl, 'selected')) { return; } YUD.removeClass(selectedEl, 'selected'); } else { YUD.addClass(container, 'active'); } var iIndex = matchedEl.innerHTML; showPanel(iIndex - 1); }, 'a'); } else { YUD.setStyle(YUD.getElementsByClassName('menucontrol', 'div', dMenu)[0], 'display', 'block'); } iCurrent = 1; showPanel(0); autoPlay(); /* if (document.images) { var logUrl = 'http://log.sitetag.us/?htu=true'; (new Image()).src = logUrl; } */ } var init = function() { if (!highlightEls[0] || !YUD.get('howto')) { return; } var dHint = document.createElement('span'); dHint.className = 'how-to-use'; dHint.innerHTML = 'How to use the infos in this page?new'; YUD.get('howto').appendChild(dHint); for (var i = 0, j = highlightEls.length; i < j; i++) { sHtml = sHtml + '
  • ' + (i + 1) +'
  • '; } var aMenu = [ '' ]; dMenu = document.createElement('div'); dMenu.innerHTML = aMenu.join(''); aMenu = null; YUD.setStyle(dMenu, 'display', 'none'); document.body.appendChild(dMenu); dMenuList = dMenu.getElementsByTagName('ol')[0]; dDesc = YUD.getElementsByClassName('htudesc', 'div', dMenu)[0]; YUE.on(YUD.get('howto'), 'click', howToClick); } init(); } Intro('highlighter', 0.5, 0.6); }; return { 'BadgeList': BadgeList, 'breadCrumb': breadCrumb, 'dashHeader': dashHeader, 'dashBlackList': dashBlackList, 'helpList': helpList, 'hpPromo': hpPromo, 'mastHead': mastHead, 'mySiteList': mySiteList, 'profileHeader': profileHeader, 'realtimeTag': realtimeTag, 'randomSite': randomSite, 'searchList': searchList, 'siteAd': siteAd, 'siteSearch': siteSearch, 'siteSetForm': siteSetForm, 'trackForm': trackForm, 'postButton': postButton, 'howToUse': howToUse } } (); YUE.onDOMReady(SiteTag.postButton); YUE.onDOMReady(SiteTag.howToUse); YUE.onContentReady('bl', SiteTag.BadgeList); YUE.onContentReady('bc', SiteTag.breadCrumb); YUE.onContentReady('dh', SiteTag.dashHeader); YUE.onContentReady('db', SiteTag.dashBlackList); YUE.onContentReady('hl', SiteTag.helpList); YUE.onContentReady('hp', SiteTag.hpPromo); YUE.onContentReady('ph', SiteTag.profileHeader); YUE.onContentReady('mh', SiteTag.mastHead); YUE.onContentReady('msl', SiteTag.mySiteList); YUE.onContentReady('tf', SiteTag.trackForm); YUE.onContentReady('sl', SiteTag.searchList); // YUE.onContentReady('sy', SiteTag.siteAd); YUE.onContentReady('ssl', SiteTag.siteSearch); // 兩個模組共用 create_site_form 跟set_site_form YUE.onContentReady('ssf', SiteTag.siteSetForm); YUE.onContentReady('csf', SiteTag.siteSetForm); YUE.onContentReady('rt', SiteTag.realtimeTag); YUE.onContentReady('rsl', SiteTag.randomSite); } ();