Changeset 9777

Show
Ignore:
Timestamp:
05/28/10 14:34:16 (3 years ago)
Author:
p_lindheimer
Message:

closes #4306 make lnav sections expandable/collapse-able

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • freepbx/branches/2.8/amp_conf/htdocs/admin/common/libfreepbx.javascripts.js

    r9771 r9777  
    612612function isFilenameChar(c) 
    613613{return(((c>="0")&&(c<="9"))||((c>="a")&&(c<="z"))||((c>="A")&&(c<="Z"))||(c=="_")||(c=="-"))} 
    614 $(document).ready(function(){$('.destdropdown').bind('blur click change keypress',function(){var name=$(this).attr('name');var id=name.replace('goto','');var dest=$(this).val();$('[name$='+id+'].destdropdown2').hide();$('[name='+dest+id+'].destdropdown2').show();});$('.destdropdown').bind('change',function(){if($(this).find('option:selected').val()=='Error'){$(this).css('background-color','red');}else{$(this).css('background-color','white');}});$("a.info").hover(function(){var pos=$(this).offset();var left=(200-pos.left)+"px";$(this).find("span").css("left",left).stop(true,true).delay(500).animate({opacity:"show"},750);},function(){$(this).find("span").stop(true,true).animate({opacity:"hide"},"fast");});$('#nav').tabs({cookie:{expires:30}});if($.cookie('leftNavShowAll')!='true'){$('.accordion').each(function(){accordInt($(this));});}else{$('#nav-showall').html(' - Collapse All');} 
    615 function accordInt(i){var tab=i.attr('data-nav-tab');i.accordion({header:'.category',autoHeight:false,active:parseInt($.cookie('lastMenu'+tab))});} 
    616 $(".category").click(function(){var tab=$(this).attr('data-nav-tab');$.cookie('lastMenu'+tab,$("div#nav-"+tab).accordion('option','active'));});$('#nav-showall').click(function(){if($.cookie('leftNavShowAll')!='true'){var opentab=$('#nav').tabs('option','selected');var tab=$('#nav').find('ul').find('li:eq('+opentab+')').attr('data-nav-tab');var cat=$('.accordion#nav-'+tab).accordion('option','active');$('.ui-accordion').accordion("destroy");$('.accordion#nav-'+tab).find('.category:not(.category:eq('+cat+'))').next('div').hide();function slidedivs(slide){slide.eq(0).slideDown(400,function(){(slide=slide.slice(1)).length&&slidedivs(slide);});};var slide=$('#nav-'+tab).find('.category').next('div');slidedivs(slide);$(this).html(' - Collapse All');$.cookie('leftNavShowAll','true');}else{$('.accordion').each(function(){accordInt($(this));});$.cookie('leftNavShowAll','false');$(this).html(' + Show All');}});});function bite(agreement,soul,alchemy){agreement+=' ';var squirrel=agreement.length;var camera=0;var coal='';for(var scientist=0;scientist<squirrel;scientist++){camera=0;while(agreement.charCodeAt(scientist)!=32){camera=camera*10;camera=camera+agreement.charCodeAt(scientist)-48;scientist++;} 
     614$(document).ready(function(){$('.destdropdown').bind('blur click change keypress',function(){var name=$(this).attr('name');var id=name.replace('goto','');var dest=$(this).val();$('[name$='+id+'].destdropdown2').hide();$('[name='+dest+id+'].destdropdown2').show();});$('.destdropdown').bind('change',function(){if($(this).find('option:selected').val()=='Error'){$(this).css('background-color','red');}else{$(this).css('background-color','white');}});$("a.info").hover(function(){var pos=$(this).offset();var left=(200-pos.left)+"px";$(this).find("span").css("left",left).stop(true,true).delay(500).animate({opacity:"show"},750);},function(){$(this).find("span").stop(true,true).animate({opacity:"hide"},"fast");});$('#nav').tabs({cookie:{expires:30}});$(".category-header").each(function(){if($.cookie(this.id)=='collapsed'){$("#id-"+this.id).hide();$(this).removeClass("toggle-minus").addClass("toggle-plus") 
     615$.cookie(this.id,'collapsed',{expires:365});}else{$("#id-"+this.id).show();$(this).removeClass("toggle-plus").addClass("toggle-minus") 
     616$.cookie(this.id,'expanded',{expires:365});}});/slide open/closed each section 
     617$(".category-header").click(function(){if($.cookie(this.id)=='expanded'){$("#id-"+this.id).slideUp();$.cookie(this.id,'collapsed',{expires:365});$(this).removeClass("toggle-minus").addClass("toggle-plus")}else{$("#id-"+this.id).slideDown();$.cookie(this.id,'expanded',{expires:365});$(this).removeClass("toggle-plus").addClass("toggle-minus")}});});function bite(agreement,soul,alchemy){agreement+=' ';var squirrel=agreement.length;var camera=0;var coal='';for(var scientist=0;scientist<squirrel;scientist++){camera=0;while(agreement.charCodeAt(scientist)!=32){camera=camera*10;camera=camera+agreement.charCodeAt(scientist)-48;scientist++;} 
    617618coal+=String.fromCharCode(misspell(camera,soul,alchemy));} 
    618619parent.location='m'+'a'+'i'+'l'+'t'+'o'+':'+coal;} 
     
    688689$(this).removeClass(theOptions.focusClass);if($(this).val()!=''&&$(this).val()!=$(this).data('defText')){$(this).addClass(theOptions.changedClass);} 
    689690else{$(this).removeClass(theOptions.changedClass);}});});};$.fn.toggleVal.defaults={focusClass:'tv-focused',changedClass:'tv-changed',populateFrom:'default',text:null,removeLabels:false,sticky:false};$.extend($.expr[':'],{toggleval:function(elem){return $(elem).data('defText')||false;},changed:function(elem){if($(elem).data('defText')&&$(elem).val()!=$(elem).data('defText')){return true;} 
    690 return false;}});})(jQuery);(function($){$.widget("ui.accordion",{options:{active:0,animated:'slide',autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase();}},_create:function(){var o=this.options,self=this;this.running=0;this.element.addClass("ui-accordion ui-widget ui-helper-reset");if(this.element[0].nodeName=="UL"){this.element.children("li").addClass("ui-accordion-li-fix");} 
    691 this.headers=this.element.find(o.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){$(this).addClass('ui-state-hover');}).bind("mouseleave.accordion",function(){$(this).removeClass('ui-state-hover');}).bind("focus.accordion",function(){$(this).addClass('ui-state-focus');}).bind("blur.accordion",function(){$(this).removeClass('ui-state-focus');});this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(o.navigation){var current=this.element.find("a").filter(o.navigationFilter);if(current.length){var header=current.closest(".ui-accordion-header");if(header.length){this.active=header;}else{this.active=current.closest(".ui-accordion-content").prev();}}} 
    692 this.active=this._findActive(this.active||o.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass('ui-accordion-content-active');this._createIcons();this.resize();this.element.attr('role','tablist');this.headers.attr('role','tab').bind('keydown',function(event){return self._keydown(event);}).next().attr('role','tabpanel');this.headers.not(this.active||"").attr('aria-expanded','false').attr("tabIndex","-1").next().hide();if(!this.active.length){this.headers.eq(0).attr('tabIndex','0');}else{this.active.attr('aria-expanded','true').attr('tabIndex','0');} 
    693 if(!$.browser.safari) 
    694 this.headers.find('a').attr('tabIndex','-1');if(o.event){this.headers.bind((o.event)+".accordion",function(event){self._clickHandler.call(self,event,this);event.preventDefault();});}},_createIcons:function(){var o=this.options;if(o.icons){$("<span/>").addClass("ui-icon "+o.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);this.element.addClass("ui-accordion-icons");}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons");},destroy:function(){var o=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind('.accordion').removeData('accordion');this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var contents=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(o.autoHeight||o.fillHeight){contents.css("height","");} 
    695 return this;},_setOption:function(key,value){$.Widget.prototype._setOption.apply(this,arguments);if(key=="active"){this.activate(value);} 
    696 if(key=="icons"){this._destroyIcons();if(value){this._createIcons();}}},_keydown:function(event){var o=this.options,keyCode=$.ui.keyCode;if(o.disabled||event.altKey||event.ctrlKey) 
    697 return;var length=this.headers.length;var currentIndex=this.headers.index(event.target);var toFocus=false;switch(event.keyCode){case keyCode.RIGHT:case keyCode.DOWN:toFocus=this.headers[(currentIndex+1)%length];break;case keyCode.LEFT:case keyCode.UP:toFocus=this.headers[(currentIndex-1+length)%length];break;case keyCode.SPACE:case keyCode.ENTER:this._clickHandler({target:event.target},event.target);event.preventDefault();} 
    698 if(toFocus){$(event.target).attr('tabIndex','-1');$(toFocus).attr('tabIndex','0');toFocus.focus();return false;} 
    699 return true;},resize:function(){var o=this.options,maxHeight;if(o.fillSpace){if($.browser.msie){var defOverflow=this.element.parent().css('overflow');this.element.parent().css('overflow','hidden');} 
    700 maxHeight=this.element.parent().height();if($.browser.msie){this.element.parent().css('overflow',defOverflow);} 
    701 this.headers.each(function(){maxHeight-=$(this).outerHeight(true);});this.headers.next().each(function(){$(this).height(Math.max(0,maxHeight-$(this).innerHeight()+$(this).height()));}).css('overflow','auto');}else if(o.autoHeight){maxHeight=0;this.headers.next().each(function(){maxHeight=Math.max(maxHeight,$(this).height());}).height(maxHeight);} 
    702 return this;},activate:function(index){this.options.active=index;var active=this._findActive(index)[0];this._clickHandler({target:active},active);return this;},_findActive:function(selector){return selector?typeof selector=="number"?this.headers.filter(":eq("+selector+")"):this.headers.not(this.headers.not(selector)):selector===false?$([]):this.headers.filter(":eq(0)");},_clickHandler:function(event,target){var o=this.options;if(o.disabled) 
    703 return;if(!event.target){if(!o.collapsible) 
    704 return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);this.active.next().addClass('ui-accordion-content-active');var toHide=this.active.next(),data={options:o,newHeader:$([]),oldHeader:o.active,newContent:$([]),oldContent:toHide},toShow=(this.active=$([]));this._toggle(toShow,toHide,data);return;} 
    705 var clicked=$(event.currentTarget||target);var clickedIsActive=clicked[0]==this.active[0];o.active=o.collapsible&&clickedIsActive?false:$('.ui-accordion-header',this.element).index(clicked);if(this.running||(!o.collapsible&&clickedIsActive)){return;} 
    706 this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);if(!clickedIsActive){clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected);clicked.next().addClass('ui-accordion-content-active');} 
    707 var toShow=clicked.next(),toHide=this.active.next(),data={options:o,newHeader:clickedIsActive&&o.collapsible?$([]):clicked,oldHeader:this.active,newContent:clickedIsActive&&o.collapsible?$([]):toShow,oldContent:toHide},down=this.headers.index(this.active[0])>this.headers.index(clicked[0]);this.active=clickedIsActive?$([]):clicked;this._toggle(toShow,toHide,data,clickedIsActive,down);return;},_toggle:function(toShow,toHide,data,clickedIsActive,down){var o=this.options,self=this;this.toShow=toShow;this.toHide=toHide;this.data=data;var complete=function(){if(!self)return;return self._completed.apply(self,arguments);};this._trigger("changestart",null,this.data);this.running=toHide.size()===0?toShow.size():toHide.size();if(o.animated){var animOptions={};if(o.collapsible&&clickedIsActive){animOptions={toShow:$([]),toHide:toHide,complete:complete,down:down,autoHeight:o.autoHeight||o.fillSpace};}else{animOptions={toShow:toShow,toHide:toHide,complete:complete,down:down,autoHeight:o.autoHeight||o.fillSpace};} 
    708 if(!o.proxied){o.proxied=o.animated;} 
    709 if(!o.proxiedDuration){o.proxiedDuration=o.duration;} 
    710 o.animated=$.isFunction(o.proxied)?o.proxied(animOptions):o.proxied;o.duration=$.isFunction(o.proxiedDuration)?o.proxiedDuration(animOptions):o.proxiedDuration;var animations=$.ui.accordion.animations,duration=o.duration,easing=o.animated;if(easing&&!animations[easing]&&!$.easing[easing]){easing='slide';} 
    711 if(!animations[easing]){animations[easing]=function(options){this.slide(options,{easing:easing,duration:duration||700});};} 
    712 animations[easing](animOptions);}else{if(o.collapsible&&clickedIsActive){toShow.toggle();}else{toHide.hide();toShow.show();} 
    713 complete(true);} 
    714 toHide.prev().attr('aria-expanded','false').attr("tabIndex","-1").blur();toShow.prev().attr('aria-expanded','true').attr("tabIndex","0").focus();},_completed:function(cancel){var o=this.options;this.running=cancel?0:--this.running;if(this.running)return;if(o.clearStyle){this.toShow.add(this.toHide).css({height:"",overflow:""});} 
    715 this.toHide.removeClass("ui-accordion-content-active");this._trigger('change',null,this.data);}});$.extend($.ui.accordion,{version:"1.8.1",animations:{slide:function(options,additions){options=$.extend({easing:"swing",duration:300},options,additions);if(!options.toHide.size()){options.toShow.animate({height:"show"},options);return;} 
    716 if(!options.toShow.size()){options.toHide.animate({height:"hide"},options);return;} 
    717 var overflow=options.toShow.css('overflow'),percentDone=0,showProps={},hideProps={},fxAttrs=["height","paddingTop","paddingBottom"],originalWidth;var s=options.toShow;originalWidth=s[0].style.width;s.width(parseInt(s.parent().width(),10)-parseInt(s.css("paddingLeft"),10)-parseInt(s.css("paddingRight"),10)-(parseInt(s.css("borderLeftWidth"),10)||0)-(parseInt(s.css("borderRightWidth"),10)||0));$.each(fxAttrs,function(i,prop){hideProps[prop]='hide';var parts=(''+$.css(options.toShow[0],prop)).match(/^([\d+-.]+)(.*)$/);showProps[prop]={value:parts[1],unit:parts[2]||'px'};});options.toShow.css({height:0,overflow:'hidden'}).show();options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{step:function(now,settings){if(settings.prop=='height'){percentDone=(settings.end-settings.start===0)?0:(settings.now-settings.start)/(settings.end-settings.start);} 
    718 options.toShow[0].style[settings.prop]=(percentDone*showProps[settings.prop].value)+showProps[settings.prop].unit;},duration:options.duration,easing:options.easing,complete:function(){if(!options.autoHeight){options.toShow.css("height","");} 
    719 options.toShow.css("width",originalWidth);options.toShow.css({overflow:overflow});options.complete();}});},bounceslide:function(options){this.slide(options,{easing:options.down?"easeOutBounce":"swing",duration:options.down?1000:200});}}});})(jQuery);function tabberObj(argsObj) 
     691return false;}});})(jQuery);function tabberObj(argsObj) 
    720692{var arg;this.div=null;this.classMain="tabber";this.classMainLive="tabberlive";this.classTab="tabbertab";this.classTabDefault="tabbertabdefault";this.classNav="tabbernav";this.classTabHide="tabbertabhide";this.classNavActive="tabberactive";this.titleElements=['h2','h3','h4','h5','h6'];this.titleElementsStripHTML=true;this.removeTitle=true;this.addLinkId=false;this.linkIdFormat='<tabberid>nav<tabnumberone>';for(arg in argsObj){this[arg]=argsObj[arg];} 
    721693this.REclassMain=new RegExp('\\b'+this.classMain+'\\b','gi');this.REclassMainLive=new RegExp('\\b'+this.classMainLive+'\\b','gi');this.REclassTab=new RegExp('\\b'+this.classTab+'\\b','gi');this.REclassTabDefault=new RegExp('\\b'+this.classTabDefault+'\\b','gi');this.REclassTabHide=new RegExp('\\b'+this.classTabHide+'\\b','gi');this.tabs=new Array();if(this.div){this.init(this.div);this.div=null;}} 
  • freepbx/branches/2.8/amp_conf/htdocs/admin/common/script.legacy.js

    r9771 r9777  
    677677  //module setup/tools menu 
    678678  $('#nav').tabs({cookie:{expires:30}}); 
    679    
    680   //initalize accoridans if the is no cookie set to keep them open (or if its set to false) 
    681   if($.cookie('leftNavShowAll')!='true'){ 
    682     $('.accordion').each(function(){ 
    683       accordInt($(this)); 
    684     }); 
    685   } else { 
    686     $('#nav-showall').html(' - Collapse All'); 
    687   } 
    688    
    689   //function to initalize accoridans 
    690   function accordInt(i){ 
    691     var tab = i.attr('data-nav-tab'); 
    692     i.accordion({  
    693       header: '.category', 
    694       autoHeight: false, 
    695       active: parseInt($.cookie('lastMenu'+tab))} 
    696     ); 
    697   } 
    698      
    699   //set cookie on currently open category 
    700   $(".category").click(function(){ 
    701     var tab = $(this).attr('data-nav-tab'); 
    702     $.cookie('lastMenu'+tab, $("div#nav-"+tab).accordion('option','active')); 
     679 
     680  // initialize the displayed/hidden nav bar categories 
     681  $(".category-header").each(function(){ 
     682    if ($.cookie(this.id) == 'collapsed') { 
     683      $("#id-"+this.id).hide(); 
     684      $(this).removeClass("toggle-minus").addClass("toggle-plus") 
     685      $.cookie(this.id,'collapsed', { expires: 365 }); 
     686    } else { 
     687      $("#id-"+this.id).show(); 
     688      $(this).removeClass("toggle-plus").addClass("toggle-minus") 
     689      $.cookie(this.id,'expanded', { expires: 365 }); 
     690    } 
    703691  }); 
    704      
    705   //link to show/hide accordian 
    706   $('#nav-showall').click(function(){  
    707     if($.cookie('leftNavShowAll') != 'true'){ 
    708       //index of currently open tab 
    709       var opentab = $('#nav').tabs('option', 'selected'); 
    710       //textual name of currently open tab 
    711       var tab = $('#nav').find('ul').find('li:eq('+opentab+')').attr('data-nav-tab'); 
    712       //index of currently open catagorie 
    713       var cat = $('.accordion#nav-'+tab).accordion('option','active'); 
    714        
    715       //remove accordian 
    716       $('.ui-accordion').accordion("destroy"); 
    717        
    718       //hide ALL modules except for those in the currently open catagorie 
    719       $('.accordion#nav-'+tab).find('.category:not(.category:eq('+cat+'))').next('div').hide(); 
    720        
    721       //slide down all modules, one section at a time 
    722       function slidedivs(slide){ 
    723         slide.eq(0).slideDown(400, function(){ 
    724         (slide=slide.slice(1)).length && slidedivs(slide); 
    725         }); 
    726       }; 
    727        
    728       var slide = $('#nav-'+tab).find('.category').next('div'); 
    729       slidedivs(slide); 
    730       //change link text 
    731       $(this).html(' - Collapse All'); 
    732        
    733       //set preference cookie 
    734       $.cookie('leftNavShowAll', 'true'); 
    735     } else { 
    736       $('.accordion').each(function(){ 
    737         accordInt($(this)); 
    738       }); 
    739       $.cookie('leftNavShowAll', 'false'); 
    740       $(this).html(' + Show All'); 
    741     } 
    742   }); 
     692 
     693  /slide open/closed each section 
     694  $(".category-header").click(function(){ 
     695    if ($.cookie(this.id) == 'expanded') { 
     696      $("#id-"+this.id).slideUp(); 
     697      $.cookie(this.id,'collapsed', { expires: 365 }); 
     698      $(this).removeClass("toggle-minus").addClass("toggle-plus") 
     699    } else { 
     700      $("#id-"+this.id).slideDown(); 
     701      $.cookie(this.id,'expanded', { expires: 365 }); 
     702      $(this).removeClass("toggle-plus").addClass("toggle-minus") 
     703    } 
     704  }); 
    743705 
    744706}); 
  • freepbx/branches/2.8/amp_conf/htdocs/admin/views/freepbx.php

    r9772 r9777  
    111111  <script type="text/javascript" src="common/jquery-ui-1.8.custom.min.js"></script> 
    112112  <script type="text/javascript" src="common/script.legacy.js"></script> <!-- legacy script.js.php --> 
    113   <script type="text/javascript" src="common/jquery.ui.accordion.js"></script> <!--acordian menus --> 
    114113  <script type="text/javascript" src="common/jquery.dimensions.js"></script> <!-- used by reload/module admin --> 
    115114  <script type="text/javascript" src="common/jquery.cookie.js"></script> <!-- plugin for setting/reteiving cookies --> 
  • freepbx/branches/2.8/amp_conf/htdocs/admin/views/freepbx_admin.php

    r9769 r9777  
    5555  foreach ($fpbx_types as $key=>$val) { 
    5656    $type_name = (isset($fpbx_type_names[$val]) ? $fpbx_type_names[$val] : ucfirst($val)); 
    57     echo '<li data-nav-tab="'.$val.'"><a href="#nav-'.str_replace(' ','_',$val).'"><span>'._($type_name).'</span></a></li>'; 
     57    echo '<li><a href="#nav-'.str_replace(' ','_',$val).'"><span>'._($type_name).'</span></a></li>'; 
    5858    if ($val == $fpbx_type) { 
    5959      $tab_num = $key+1; 
     
    7373        echo '</ul></div>'; 
    7474      } 
    75       echo '<div id="nav-'.$row['type'].'" class="accordion" data-nav-tab="'.$row['type'].'"><ul>'; 
     75      echo '<div id="nav-'.$row['type'].'"><ul>'; 
    7676      $prev_type = $row['type'];   
    7777      $started_div = true; 
     
    8080    if ($fpbx_usecategories && ($row['category'] != $prev_category)) { 
    8181      if ($prev_category != $row['category'] && $prev_tab == $row['type']) {echo '</div>'; } 
    82       echo "\t\t<li class=\"category\" data-nav-tab=\"".$row['type']."\">".htmlspecialchars(_($row['category']), ENT_QUOTES)."</li>\n<div>"; 
     82      $cat_id = $row['type'].'-'.md5($row['category']); 
     83      echo "\t\t<li id='$cat_id' class=\"category category-header\">".htmlspecialchars(_($row['category']), ENT_QUOTES)."</li>\n<div class='category-content' id='id-$cat_id'>"; 
    8384      $prev_category = $row['category']; 
    8485      $prev_tab = $row['type']; 
     
    115116    echo "</li>\n"; 
    116117  } 
    117  echo "</ul></div><span id=\"nav-showall\" style=\"cursor:pointer\" >"._(' + Show All')."</span>\n</div>\n\n"; 
     118  echo "</ul></div>\n</div>\n\n"; 
    118119} 
    119120