// jQuery plugin by bootleq@gmail.com 2008-03-06 (function($){var ver='0.01';$.fn.msgPlay=function(options){return this.each(function(){options=$.extend({},$.fn.msgPlay.defaults,options);var pages=options.pageExpr?$(this).children(options.pageExpr):$(this);if(!pages.length){return;} if(options.removeUnused&&options.pageExpr){$(this).children().not(options.pageExpr).remove();} if($.data(this,'_msgPlay_last')&&$.isFunction($.data(this,'_msgPlay_last').clearLast)){$.data(this,'_msgPlay_last').clearLast();};$.data(this,'_msgPlay_last',{clearLast:function(){clearLast(options,pages);}});if(options.keepInvisible){pages.find(':not(:visible)').each(function(i,elem){$.data(elem,'_msgPlay_invisible',true);});} pages.hide();options.pageCurrent=0;options.playTimeout=0;options.queueLocks=[];options.pauseLocks=[];options.parentStack=[];options.buffer=[];options.playedPages=[];if(!options.dump){options.dump='back';} markCustom(pages,options);$(this).show();if(options.dump=='all'){page_dump(options.pageCurrent,options,pages);} else{page(options.pageCurrent,options,pages);} if(options.forward){if(!$(options.forward).length){options.forward=document.createElement('span');$(options.forward).css({'float':'right','cursor':'pointer'}).html('[FORWARD]').appendTo(this);} $(options.forward).bind('click',{options:options,pages:pages},forward);} if(options.back){if(!$(options.back).length){options.back=document.createElement('span');$(options.back).css({'float':'right','cursor':'pointer'}).html('[BACK]').appendTo(this);} $(options.back).hide().bind('click',{options:options,pages:pages},back);} if(options.next){if(!$(options.next).length){options.next=document.createElement('span');$(options.next).css({'float':'right','cursor':'pointer'}).html('[NEXT PAGE]').appendTo(this);} $(options.next).hide().bind('click',{options:options,pages:pages},next);}});};function markCustom(pages,options){for(i in options.act){pages.find(options.act[i][0]).each(function(j,elem){if($.data(elem,'_msgPlay_custom')&&$.data(elem,'_msgPlay_custom').constructor==Array){$.data(elem,'_msgPlay_custom',$.data(elem,'_msgPlay_custom').concat(i));} else{$.data(elem,'_msgPlay_custom',[i]);} if(typeof(options.act[i][2])=='string'){$.data(elem,'_msgPlay_custom_option',options.act[i][2]);}});}} function hideContents(elem,options){if(elem.nodeType==3){if(!textData(options.buffer,elem)){textData(options.buffer,elem,(options.trimText)?$.trim(elem.nodeValue):elem.nodeValue);} elem.nodeValue='';if(elem.nextSibling){hideContents(elem.nextSibling,options);}} else if(elem.nodeType==1){$(elem).hide();if(elem.hasChildNodes()){hideContents(elem.firstChild,options);} if(elem.nextSibling){hideContents(elem.nextSibling,options);}} else{if(elem.nextSibling){hideContents(elem.nextSibling,options);}}};function stop(options){if(options.playTimeout){clearTimeout(options.playTimeout);} options.isForward=false;options.pauseElem=null;options.queueLocks=[];options.pauseLocks=[];options.parentStack=[];};function clearLast(options,pages){$(options.forward).unbind('click',forward);$(options.back).unbind('click',back);$(options.next).unbind('click',next);if(options.playTimeout){clearTimeout(options.playTimeout);} options=null;pages.show().find('*').each(function(i,elem){$.removeData(elem,'_msgPlay_custom');$.removeData(elem,'_msgPlay_custom_option');if($.data(elem,'_msgPlay_invisible')){$(elem).hide();$.removeData(elem,'_msgPlay_invisible');} else{$(elem).show();}});pages=null;};function textData(buffer,elem,data){for(i in buffer){if(buffer[i][0]==elem){if(data){buffer[i][1]=data;return;} else return buffer[i][1];}} if(data)buffer.push([elem,data]);};function page(index,options,pages){if(options.dump=='used'){if($.inArray(index,options.playedPages)>-1){page_dump(index,options,pages);return;} else options.playedPages.push(index);} $(pages[options.pageCurrent]).hide();stop(options);options.status='play';options.pageCurrent=index;hideContents(pages[options.pageCurrent].firstChild,options);if($.isFunction(options.onPageStart)){options.onPageStart();} $(pages[options.pageCurrent]).show();play(pages[options.pageCurrent].firstChild,options,pages);if(options.forward)$(options.forward).show();if(options.next)$(options.next).hide();if(options.back){if(index>0){$(options.back).show();} else{$(options.back).hide();}}};function page_dump(index,options,pages){$(pages[options.pageCurrent]).hide();stop(options);options.status='page';options.pageCurrent=index;if($.isFunction(options.onPageDump)){options.onPageDump();} $(pages[options.pageCurrent]).show();endOfPage(options,pages);if(options.back){if(index>0){$(options.back).show();} else{$(options.back).hide();}}};function playText(elem,text,options,pages){if(options.isForward){elem.nodeValue=text;} else if(elem.nodeValue.length-1||$.inArray(elem,options.pauseLocks)>-1){options.status='pause';options.pauseElem=elem;return;} if(elem.nodeType==3){if(tData=textData(options.buffer,elem)){if(options.elemSpeed&&!options.isForward){options.playTimeout=setTimeout(function(){playText(elem,tData,options,pages);},options.elemSpeed);} else{playText(elem,tData,options,pages);}} else{playText(elem,'',options,pages);}} else if(elem.nodeType==1){var nextElem=elem;if(elem.hasChildNodes()){nextElem=elem.firstChild;if(elem.nextSibling){options.parentStack.push(elem.nextSibling);}} else if(elem.nextSibling){nextElem=elem.nextSibling;} else if(options.parentStack.length){nextElem=options.parentStack.pop();} else{nextElem=null;} if($.data(elem,'_msgPlay_custom')){for(i in $.data(elem,'_msgPlay_custom')){var custom=options.act[$.data(elem,'_msgPlay_custom')[i]];if(typeof(custom[1])!='function'){if(typeof(custom[1])=='string'&&$.isFunction($.fn.msgPlay.actFns[custom[1]])){custom[1]=$.fn.msgPlay.actFns[custom[1]];} else{custom[1]=function(){return;};}} custom[1].apply(this,arguments);}} if(($.data(elem,'_msgPlay_custom_option'))){var lastLocked=null;switch($.data(elem,'_msgPlay_custom_option')){case'pause':if(elem.nextSibling){lastLocked=elem.nextSibling;} else if(options.parentStack.length>0){lastLocked=options.parentStack[options.parentStack.length-1];} options.pauseLocks.push(lastLocked);if(!$(elem).data('_msgPlay_invisible')){$(elem).show();} if(nextElem){options.playTimeout=setTimeout(function(){play(nextElem,options,pages);},options.elemSpeed||0);} return;case'queue':if(elem.nextSibling){lastLocked=elem.nextSibling;} else if(options.parentStack.length>0){lastLocked=options.parentStack[options.parentStack.length-1];} options.queueLocks.push(lastLocked);$(elem).queue(function(){if(jQuery.inArray(lastLocked,options.queueLocks)>-1){options.queueLocks.splice(jQuery.inArray(lastLocked,options.queueLocks),1);} if(options.pauseElem==lastLocked){play(lastLocked,options,pages);} jQuery(this).dequeue();});if(!$(elem).data('_msgPlay_invisible')){$(elem).show();} if(nextElem){if(options.isForward){play(nextElem,options,pages);} else{options.playTimeout=setTimeout(function(){play(nextElem,options,pages);},options.elemSpeed||0);}} return;default:if(!$(elem).data('_msgPlay_invisible')){$(elem).show();} if(nextElem){if(options.isForward){play(nextElem,options,pages);} else{options.playTimeout=setTimeout(function(){play(nextElem,options,pages);},options.elemSpeed||0);}} return;};} else{if(!$(elem).data('_msgPlay_invisible')){$(elem).show();} if(nextElem){if(options.isForward){play(nextElem,options,pages);} else{options.playTimeout=setTimeout(function(){play(nextElem,options,pages);},options.elemSpeed||0)};}} if(!nextElem){endOfPage(options,pages);return;}} else{if(elem.nextSibling){play(elem.nextSibling,options,pages);} else if(options.parentStack.length){play(options.parentStack.pop(),options,pages);} else return endOfPage(options,pages);}};function forward(e){options=e.data.options;pages=e.data.pages;switch(options.status){case'play':options.isForward=true;if($.isFunction(options.onForward)){options.onForward();} return;case'pause':options.isForward=false;options.status='play';if(options.pauseElem==options.pauseLocks[options.pauseLocks.length-1]){options.pauseLocks.pop();play(options.pauseElem,options,pages);} return;case'page':if(options.pageCurrent+10){switch(options.dump){case'none':page(options.pageCurrent-1,options,pages);return;case'used':if($.inArray(options.pageCurrent-1,options.playedPages)<0){page(options.pageCurrent-1,options,pages);return;} case'back':case'all':default:page_dump(options.pageCurrent-1,options,pages);return;}}};function next(e){options=e.data.options;pages=e.data.pages;if(options.pageCurrent+1-1){page_dump(options.pageCurrent+1,options,pages);return;} case'back':case'none':default:page(options.pageCurrent+1,options,pages);return;}}};function endOfPage(options,pages){options.isForward=false;options.status='page';if(options.pageCurrent+1