﻿/**
 *
 * Copyright (c) 2008, Opera Software ASA
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, 
 * with or without modification, are permitted provided 
 * that the following conditions are met:
 *
 *  - Redistributions of source code must retain the above copyright notice, 
 *    this list of conditions and the following disclaimer.
 *
 *  - Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 *  - Neither the name of Opera Software nor the names of its contributors 
 *    may be used to endorse or promote products derived from this software 
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 **/



if(!window.console||!console.firebug){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i)
window.console[names[i]]=function(){}}
jQuery.urldecode=function(x){return decodeURIComponent(x).replace(/\+/g,' ');}
jQuery.urlencode=encodeURIComponent;jQuery.getQueryParameters=function(s){if(typeof s=='undefined')
s=document.location.search;var parts=s.substr(s.indexOf('?')+1).split('&');var result={};for(var i=0;i<parts.length;i++){var tmp=parts[i].split('=',2);var key=jQuery.urldecode(tmp[0]);var value=jQuery.urldecode(tmp[1]);if(key in result)
result[key].push(value);else
result[key]=[value];}
return result;}
jQuery.contains=function(arr,item){for(var i=0;i<arr.length;i++){if(arr[i]==item)
return true;}
return false;}
jQuery.fn.highlightText=function(text,className){function highlight(node){if(node.nodeType==3){var val=node.nodeValue;var pos=val.toLowerCase().indexOf(text);if(pos>=0&&!jQuery.className.has(node.parentNode,className)){var span=document.createElement("span");span.className=className;span.appendChild(document.createTextNode(val.substr(pos,text.length)));node.parentNode.insertBefore(span,node.parentNode.insertBefore(document.createTextNode(val.substr(pos+text.length)),node.nextSibling));node.nodeValue=val.substr(0,pos);}}
else if(!jQuery(node).is("button, select, textarea")){jQuery.each(node.childNodes,function(){highlight(this)});}}
return this.each(function(){highlight(this);});}
var Documentation={init:function(){this.fixFirefoxAnchorBug();this.highlightSearchWords();this.initModIndex();},TRANSLATIONS:{},PLURAL_EXPR:function(n){return n==1?0:1;},LOCALE:'unknown',gettext:function(string){var translated=Documentation.TRANSLATIONS[string];if(typeof translated=='undefined')
return string;return(typeof translated=='string')?translated:translated[0];},ngettext:function(singular,plural,n){var translated=Documentation.TRANSLATIONS[singular];if(typeof translated=='undefined')
return(n==1)?singular:plural;return translated[Documentation.PLURALEXPR(n)];},addTranslations:function(catalog){for(var key in catalog.messages)
this.TRANSLATIONS[key]=catalog.messages[key];this.PLURAL_EXPR=new Function('n','return +('+catalog.plural_expr+')');this.LOCALE=catalog.locale;},addContextElements:function(){$('div[id] > :header:first').each(function(){$('<a class="headerlink">\u00B6</a>').
attr('href','#'+this.id).
attr('title',_('Permalink to this headline')).
appendTo(this);});$('dt[id]').each(function(){$('<a class="headerlink">\u00B6</a>').
attr('href','#'+this.id).
attr('title',_('Permalink to this definition')).
appendTo(this);});},fixFirefoxAnchorBug:function(){if(document.location.hash&&$.browser.mozilla)
window.setTimeout(function(){document.location.href+='';},10);},highlightSearchWords:function(){var params=$.getQueryParameters();var terms=(params.highlight)?params.highlight[0].split(/\s+/):[];if(terms.length){var body=$('div.body');window.setTimeout(function(){$.each(terms,function(){body.highlightText(this.toLowerCase(),'highlight');});},10);$('<li class="highlight-link"><a href="javascript:Documentation.'+'hideSearchWords()">'+_('Hide Search Matches')+'</a></li>')
.appendTo($('.sidebar .this-page-menu'));}},initModIndex:function(){var togglers=$('img.toggler').click(function(){var src=$(this).attr('src');var idnum=$(this).attr('id').substr(7);console.log($('tr.cg-'+idnum).toggle());if(src.substr(-9)=='minus.png')
$(this).attr('src',src.substr(0,src.length-9)+'plus.png');else
$(this).attr('src',src.substr(0,src.length-8)+'minus.png');}).css('display','');if(DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX){togglers.click();}},hideSearchWords:function(){$('.sidebar .this-page-menu li.highlight-link').fadeOut(300);$('span.highlight').removeClass('highlight');},makeURL:function(relativeURL){return DOCUMENTATION_OPTIONS.URL_ROOT+'/'+relativeURL;},getCurrentURL:function(){var path=document.location.pathname;var parts=path.split(/\//);$.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//),function(){if(this=='..')
parts.pop();});var url=parts.join('/');return path.substring(url.lastIndexOf('/')+1,path.length-1);}};_=Documentation.gettext;$(document).ready(function(){Documentation.init();});