
/* Merged Plone Javascript file
 * This file is dynamically assembled from separate parts.
 * Some of these parts have 3rd party licenses or copyright information attached
 * Such information is valid for that section,
 * not for the entire composite file
 * originating files are separated by - filename.js -
 */

/* - event-registration.js - */
// http://africaontv.com/portal_javascripts/event-registration.js?original=1
window.onDOMLoadEvents=new Array();window.DOMContentLoadedInitDone=false;
function addDOMLoadEvent(listener){window.onDOMLoadEvents[window.onDOMLoadEvents.length]=listener}
function DOMContentLoadedInit(){if(window.DOMContentLoadedInitDone) return;window.DOMContentLoadedInitDone=true;var exceptions=new Array();for(var i=0;i<window.onDOMLoadEvents.length;i++){var func=window.onDOMLoadEvents[i];try{func()} catch(e){exceptions[exceptions.length]=e}}
for(var i=0;i<exceptions.length;i++){throw exceptions[i]}}
function DOMContentLoadedScheduler(){if(window.DOMContentLoadedInitDone) return true;if(/KHTML|WebKit/i.test(navigator.userAgent)){if(/loaded|complete/.test(document.readyState)){DOMContentLoadedInit()} else{setTimeout("DOMContentLoadedScheduler()",250)}} else{setTimeout("DOMContentLoadedScheduler()",250)}
return true}
setTimeout("DOMContentLoadedScheduler()",250);if(window.addEventListener){window.addEventListener("load",DOMContentLoadedInit,false);document.addEventListener("DOMContentLoaded",DOMContentLoadedInit,false)} else if(window.attachEvent){window.attachEvent("onload",DOMContentLoadedInit)} else{var _dummy=function(){var $old_onload=window.onload;window.onload=function(e){DOMContentLoadedInit();$old_onload()}}}
/*@cc_on @*/
/*@if (@_win32)
{var proto="src='javascript:void(0)'";if(location.protocol=="https:") proto="src=//0";document.write("<scr"+"ipt id=__ie_onload defer "+proto+"><\/scr"+"ipt>");var script=document.getElementById("__ie_onload");script.onreadystatechange=function(){if(this.readyState=="complete"){DOMContentLoadedInit()}}};/*@end @*/


/* - register_function.js - */
// http://africaontv.com/portal_javascripts/register_function.js?original=1
var bugRiddenCrashPronePieceOfJunk=(navigator.userAgent.indexOf('MSIE 5')!=-1&&navigator.userAgent.indexOf('Mac')!=-1)
var W3CDOM=(!bugRiddenCrashPronePieceOfJunk&&typeof document.getElementsByTagName!='undefined'&&typeof document.createElement!='undefined');var registerEventListener=null;if(typeof addEvent!='undefined'){registerEventListener=function(elem,event,func){addEvent(elem,event,func);return true}} else if(window.addEventListener){registerEventListener=function(elem,event,func){elem.addEventListener(event,func,false);return true}} else if(window.attachEvent){registerEventListener=function(elem,event,func){var result=elem.attachEvent("on"+event,func);return result}} else{registerEventListener=function(elem,event,func){return false}}
var unRegisterEventListener=null;if(typeof removeEvent!='undefined'){unRegisterEventListener=function(elem,event,func){removeEvent(element,event,func);return true}} else if(window.removeEventListener){unRegisterEventListener=function(elem,event,func){elem.removeEventListener(event,func,false);return true}} else if(window.detachEvent){unRegisterEventListener=function(elem,event,func){var result=elem.detachEvent("on"+event,func);return result}} else{unRegisterEventListener=function(elem,event,func){return false}}
var registerPloneFunction=null;if(typeof addDOMLoadEvent!='undefined'){registerPloneFunction=function(func){addDOMLoadEvent(func)}} else{registerPloneFunction=function(func){registerEventListener(window,"load",func)}}
function getContentArea(){if(W3CDOM){var node=document.getElementById('region-content');if(!node){node=document.getElementById('content')}
return node}}


/* - cssQuery.js - */
// http://africaontv.com/portal_javascripts/cssQuery.js?original=1
var cssQuery=function(){var version="2.0.2";var $COMMA=/\s*,\s*/;var cssQuery=function($selector,$$from){try{var $match=[];var $useCache=arguments.callee.caching&&!$$from;var $base=($$from)?($$from.constructor==Array)?$$from:[$$from]:[document];var $$selectors=parseSelector($selector).split($COMMA),i;for(i=0;i<$$selectors.length;i++){$selector=_toStream($$selectors[i]);if(isMSIE&&$selector.slice(0,3).join("")==" *#"){$selector=$selector.slice(2);$$from=_msie_selectById([],$base,$selector[1])} else $$from=$base;var j=0,$token,$filter,$arguments,$cacheSelector="";while(j<$selector.length){$token=$selector[j++];$filter=$selector[j++];$cacheSelector+=$token+$filter;$arguments="";if($selector[j]=="("){while($selector[j++]!=")"&&j<$selector.length){$arguments+=$selector[j]}
$arguments=$arguments.slice(0,-1);$cacheSelector+="("+$arguments+")"}
$$from=($useCache&&cache[$cacheSelector])?cache[$cacheSelector]:select($$from,$token,$filter,$arguments);if($useCache) cache[$cacheSelector]=$$from}
$match=$match.concat($$from)}
delete cssQuery.error;return $match} catch($error){cssQuery.error=$error;return []}};cssQuery.toString=function(){return "function cssQuery() {\n  [version "+version+"]\n}"};var cache={};cssQuery.caching=false;cssQuery.clearCache=function($selector){if($selector){$selector=_toStream($selector).join("");delete cache[$selector]} else cache={}};var modules={};var loaded=false;cssQuery.addModule=function($name,$script){if(loaded) eval("$script="+String($script));modules[$name]=new $script()};cssQuery.valueOf=function($code){return $code?eval($code):this};var selectors={};var pseudoClasses={};var AttributeSelector={match:/\[([\w-]+(\|[\w-]+)?)\s*(\W?=)?\s*([^\]]*)\]/};var attributeSelectors=[];selectors[" "]=function($results,$from,$tagName,$namespace){var $element,i,j;for(i=0;i<$from.length;i++){var $subset=getElementsByTagName($from[i],$tagName,$namespace);for(j=0;($element=$subset[j]);j++){if(thisElement($element)&&compareNamespace($element,$namespace))
$results.push($element)}}};selectors["#"]=function($results,$from,$id){var $element,j;for(j=0;($element=$from[j]);j++) if($element.id==$id) $results.push($element)};selectors["."]=function($results,$from,$className){$className=new RegExp("(^|\\s)"+$className+"(\\s|$)");var $element,i;for(i=0;($element=$from[i]);i++)
if($className.test($element.className)) $results.push($element)};selectors[":"]=function($results,$from,$pseudoClass,$arguments){var $test=pseudoClasses[$pseudoClass],$element,i;if($test) for(i=0;($element=$from[i]);i++)
if($test($element,$arguments)) $results.push($element)};pseudoClasses["link"]=function($element){var $document=getDocument($element);if($document.links) for(var i=0;i<$document.links.length;i++){if($document.links[i]==$element) return true}};pseudoClasses["visited"]=function($element){};var thisElement=function($element){return($element&&$element.nodeType==1&&$element.tagName!="!")?$element:null};var previousElementSibling=function($element){while($element&&($element=$element.previousSibling)&&!thisElement($element)) continue;return $element};var nextElementSibling=function($element){while($element&&($element=$element.nextSibling)&&!thisElement($element)) continue;return $element};var firstElementChild=function($element){return thisElement($element.firstChild)||nextElementSibling($element.firstChild)};var lastElementChild=function($element){return thisElement($element.lastChild)||previousElementSibling($element.lastChild)};var childElements=function($element){var $childElements=[];$element=firstElementChild($element);while($element){$childElements.push($element);$element=nextElementSibling($element)}
return $childElements};var isMSIE=true;var isXML=function($element){var $document=getDocument($element);return(typeof $document.mimeType=="unknown")?/\.xml$/i.test($document.URL):Boolean($document.mimeType=="XML Document")};var getDocument=function($element){return $element.ownerDocument||$element.document};var getElementsByTagName=function($element,$tagName){return($tagName=="*"&&$element.all)?$element.all:$element.getElementsByTagName($tagName)};var compareTagName=function($element,$tagName,$namespace){if($tagName=="*") return thisElement($element);if(!compareNamespace($element,$namespace)) return false;if(!isXML($element)) $tagName=$tagName.toUpperCase();return $element.tagName==$tagName};var compareNamespace=function($element,$namespace){return!$namespace||($namespace=="*")||($element.scopeName==$namespace)};var getTextContent=function($element){return $element.innerText};
function _msie_selectById($results,$from,id){var $match,i,j;for(i=0;i<$from.length;i++){if($match=$from[i].all.item(id)){if($match.id==id) $results.push($match);else if($match.length!=null){for(j=0;j<$match.length;j++){if($match[j].id==id) $results.push($match[j])}}}}
return $results};if(![].push) Array.prototype.push=function(){for(var i=0;i<arguments.length;i++){this[this.length]=arguments[i]}
return this.length};var $NAMESPACE=/\|/;
function select($$from,$token,$filter,$arguments){if($NAMESPACE.test($filter)){$filter=$filter.split($NAMESPACE);$arguments=$filter[0];$filter=$filter[1]}
var $results=[];if(selectors[$token]){selectors[$token]($results,$$from,$filter,$arguments)}
return $results};var $STANDARD_SELECT=/^[^\s>+~]/;var $$STREAM=/[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;
function _toStream($selector){if($STANDARD_SELECT.test($selector)) $selector=" "+$selector;return $selector.match($$STREAM)||[]};var $WHITESPACE=/\s*([\s>+~(),]|^|$)\s*/g;var $IMPLIED_ALL=/([\s>+~,]|[^(]\+|^)([#.:@])/g;var parseSelector=function($selector){return $selector.replace($WHITESPACE,"$1").replace($IMPLIED_ALL,"$1*$2")};var Quote={toString: function(){return "'"},match:/^('[^']*')|("[^"]*")$/,test: function($string){return this.match.test($string)},add: function($string){return this.test($string)?$string:this+$string+this},remove: function($string){return this.test($string)?$string.slice(1,-1):$string}};var getText=function($text){return Quote.remove($text)};var $ESCAPE=/([\/()[\]?{}|*+-])/g;
function regEscape($string){return $string.replace($ESCAPE,"\\$1")};cssQuery.addModule("css-standard", function(){isMSIE=eval("false;/*@cc_on@if(@\x5fwin32)isMSIE=true@end@*/");if(!isMSIE){getElementsByTagName=function($element,$tagName,$namespace){return $namespace?$element.getElementsByTagNameNS("*",$tagName):$element.getElementsByTagName($tagName)};compareNamespace=function($element,$namespace){return!$namespace||($namespace=="*")||($element.prefix==$namespace)};isXML=document.contentType? function($element){return/xml/i.test(getDocument($element).contentType)}: function($element){return getDocument($element).documentElement.tagName!="HTML"};getTextContent=function($element){return $element.textContent||$element.innerText||_getTextContent($element)};
function _getTextContent($element){var $textContent="",$node,i;for(i=0;($node=$element.childNodes[i]);i++){switch($node.nodeType){case 11:case 1:$textContent+=_getTextContent($node);break;case 3:$textContent+=$node.nodeValue;break}}
return $textContent}}});cssQuery.addModule("css-level2", function(){selectors[">"]=function($results,$from,$tagName,$namespace){var $element,i,j;for(i=0;i<$from.length;i++){var $subset=childElements($from[i]);for(j=0;($element=$subset[j]);j++)
if(compareTagName($element,$tagName,$namespace))
$results.push($element)}};selectors["+"]=function($results,$from,$tagName,$namespace){for(var i=0;i<$from.length;i++){var $element=nextElementSibling($from[i]);if($element&&compareTagName($element,$tagName,$namespace))
$results.push($element)}};selectors["@"]=function($results,$from,$attributeSelectorID){var $test=attributeSelectors[$attributeSelectorID].test;var $element,i;for(i=0;($element=$from[i]);i++)
if($test($element)) $results.push($element)};pseudoClasses["first-child"]=function($element){return!previousElementSibling($element)};pseudoClasses["lang"]=function($element,$code){$code=new RegExp("^"+$code,"i");while($element&&!$element.getAttribute("lang")) $element=$element.parentNode;return $element&&$code.test($element.getAttribute("lang"))};AttributeSelector.NS_IE=/\\:/g;AttributeSelector.PREFIX="@";AttributeSelector.tests={};AttributeSelector.replace=function($match,$attribute,$namespace,$compare,$value){var $key=this.PREFIX+$match;if(!attributeSelectors[$key]){$attribute=this.create($attribute,$compare||"",$value||"");attributeSelectors[$key]=$attribute;attributeSelectors.push($attribute)}
return attributeSelectors[$key].id};AttributeSelector.parse=function($selector){$selector=$selector.replace(this.NS_IE,"|");var $match;while($match=$selector.match(this.match)){var $replace=this.replace($match[0],$match[1],$match[2],$match[3],$match[4]);$selector=$selector.replace(this.match,$replace)}
return $selector};AttributeSelector.create=function($propertyName,$test,$value){var $attributeSelector={};$attributeSelector.id=this.PREFIX+attributeSelectors.length;$attributeSelector.name=$propertyName;$test=this.tests[$test];$test=$test?$test(this.getAttribute($propertyName),getText($value)):false;$attributeSelector.test=new Function("e","return "+$test);return $attributeSelector};AttributeSelector.getAttribute=function($name){switch($name.toLowerCase()){case "id":return "e.id";case "class":return "e.className";case "for":return "e.htmlFor";case "href":if(isMSIE){return "String((e.outerHTML.match(/href=\\x22?([^\\s\\x22]*)\\x22?/)||[])[1]||'')"}}
return "e.getAttribute('"+$name.replace($NAMESPACE,":")+"')"};AttributeSelector.tests[""]=function($attribute){return $attribute};AttributeSelector.tests["="]=function($attribute,$value){return $attribute+"=="+Quote.add($value)};AttributeSelector.tests["~="]=function($attribute,$value){return "/(^| )"+regEscape($value)+"( |$)/.test("+$attribute+")"};AttributeSelector.tests["|="]=function($attribute,$value){return "/^"+regEscape($value)+"(-|$)/.test("+$attribute+")"};var _parseSelector=parseSelector;parseSelector=function($selector){return _parseSelector(AttributeSelector.parse($selector))}});cssQuery.addModule("css-level3", function(){selectors["~"]=function($results,$from,$tagName,$namespace){var $element,i;for(i=0;($element=$from[i]);i++){while($element=nextElementSibling($element)){if(compareTagName($element,$tagName,$namespace))
$results.push($element)}}};pseudoClasses["contains"]=function($element,$text){$text=new RegExp(regEscape(getText($text)));return $text.test(getTextContent($element))};pseudoClasses["root"]=function($element){return $element==getDocument($element).documentElement};pseudoClasses["empty"]=function($element){var $node,i;for(i=0;($node=$element.childNodes[i]);i++){if(thisElement($node)||$node.nodeType==3) return false}
return true};pseudoClasses["last-child"]=function($element){return!nextElementSibling($element)};pseudoClasses["only-child"]=function($element){$element=$element.parentNode;return firstElementChild($element)==lastElementChild($element)};pseudoClasses["not"]=function($element,$selector){var $negated=cssQuery($selector,getDocument($element));for(var i=0;i<$negated.length;i++){if($negated[i]==$element) return false}
return true};pseudoClasses["nth-child"]=function($element,$arguments){return nthChild($element,$arguments,previousElementSibling)};pseudoClasses["nth-last-child"]=function($element,$arguments){return nthChild($element,$arguments,nextElementSibling)};pseudoClasses["target"]=function($element){return $element.id==location.hash.slice(1)};pseudoClasses["checked"]=function($element){return $element.checked};pseudoClasses["enabled"]=function($element){return $element.disabled===false};pseudoClasses["disabled"]=function($element){return $element.disabled};pseudoClasses["indeterminate"]=function($element){return $element.indeterminate};AttributeSelector.tests["^="]=function($attribute,$value){return "/^"+regEscape($value)+"/.test("+$attribute+")"};AttributeSelector.tests["$="]=function($attribute,$value){return "/"+regEscape($value)+"$/.test("+$attribute+")"};AttributeSelector.tests["*="]=function($attribute,$value){return "/"+regEscape($value)+"/.test("+$attribute+")"};
function nthChild($element,$arguments,$traverse){switch($arguments){case "n":return true;case "even":$arguments="2n";break;case "odd":$arguments="2n+1"}
var $$children=childElements($element.parentNode);
function _checkIndex($index){var $index=($traverse==nextElementSibling)?$$children.length-$index:$index-1;return $$children[$index]==$element};if(!isNaN($arguments)) return _checkIndex($arguments);$arguments=$arguments.split("n");var $multiplier=parseInt($arguments[0]);var $step=parseInt($arguments[1]);if((isNaN($multiplier)||$multiplier==1)&&$step==0) return true;if($multiplier==0&&!isNaN($step)) return _checkIndex($step);if(isNaN($step)) $step=0;var $count=1;while($element=$traverse($element)) $count++;if(isNaN($multiplier)||$multiplier==1)
return($traverse==nextElementSibling)?($count<=$step):($step>=$count);return($count%$multiplier)==$step}});loaded=true;return cssQuery}();

/* - plone_javascript_variables.js - */
// http://africaontv.com/portal_javascripts/plone_javascript_variables.js?original=1
var portal_url='http://africaontv.com';var form_modified_message='Your form has not been saved. All changes you have made will be lost.';var form_resubmit_message='Your already clicked the submit button. Do you really want to submit this form again?';var external_links_open_new_window=false;var external_links_in_content_only=true;

/* - nodeutilities.js - */
// http://africaontv.com/portal_javascripts/nodeutilities.js?original=1
function wrapNode(node,wrappertype,wrapperclass){var wrapper=document.createElement(wrappertype)
wrapper.className=wrapperclass;var innerNode=node.parentNode.replaceChild(wrapper,node);wrapper.appendChild(innerNode)};
function nodeContained(innernode,outernode){var node=innernode.parentNode;while(node!=document){if(node==outernode){return true}
node=node.parentNode}
return false};
function findContainer(node,func){while(node!=null){if(func(node)){return node}
node=node.parentNode}
return false};
function hasClassName(node,class_name){return new RegExp('\\b'+class_name+'\\b').test(node.className)};
function addClassName(node,class_name){if(!node.className){node.className=class_name} else if(!hasClassName(node,class_name)){var className=node.className+" "+class_name;node.className=className.split(/\s+/).join(' ')}};
function removeClassName(node,class_name){var className=node.className;if(className){className=className.replace(new RegExp('\\b'+class_name+'\\b'),'');className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}};
function replaceClassName(node,old_class,new_class,ignore_missing){if(ignore_missing&&!hasClassName(node,old_class)){addClassName(node,new_class)} else{var className=node.className;if(className){className=className.replace(new RegExp('\\b'+old_class+'\\b'),new_class);className=className.replace(/\s+/g,' ');node.className=className.replace(/\s+$/g,'')}}};
function walkTextNodes(node,func,data){if(!node){return false}
if(node.hasChildNodes){for(var i=0;i<node.childNodes.length;i++){walkTextNodes(node.childNodes[i],func,data)}
if(node.nodeType==3){func(node,data)}}};
function getInnerTextCompatible(node){var result=new Array();walkTextNodes(node,
function(n,d){d.push(n.nodeValue)},result);return result.join("")};
function getInnerTextFast(node){if(node.innerText){return node.innerText} else{return getInnerTextCompatible(node)}};
function sortNodes(nodes,fetch_func,cmp_func){if(!W3CDOM){return false};var SortNodeWrapper=function(node){this.value=fetch_func(node);this.cloned_node=node.cloneNode(true);this.toString=function(){if(this.value.toString){return this.value.toString()} else{return this.value}}}
var items=new Array();for(var i=0;i<nodes.length;i++){items.push(new SortNodeWrapper(nodes[i]))}
if(cmp_func){items.sort(cmp_func)} else{items.sort()}
for(var i=0;i<items.length;i++){var dest=nodes[i];dest.parentNode.replaceChild(items[i].cloned_node,dest)}};

/* - cookie_functions.js - */
// http://africaontv.com/portal_javascripts/cookie_functions.js?original=1
function createCookie(name,value,days){if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires="; expires="+date.toGMTString()} else{expires=""}
document.cookie=name+"="+escape(value)+expires+"; path=/;"};
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length)}
if(c.indexOf(nameEQ)==0){return unescape(c.substring(nameEQ.length,c.length))}}
return null};

/* - livesearch.js - */
// http://africaontv.com/portal_javascripts/livesearch.js?original=1
var liveSearchReq=false;var t=null;var liveSearchLast="";var queryTarget="livesearch_reply?q=";var searchForm=null;var searchInput=null;var isIE=false;var _cache=new Object();var widthOffset=1;
function calculateWidth(){}
function getElementDimensions(elemID){var base=document.getElementById(elemID);var offsetTrail=base;var offsetLeft=0;var offsetTop=0;var width=0;while(offsetTrail){offsetLeft+=offsetTrail.offsetLeft;offsetTop+=offsetTrail.offsetTop;offsetTrail=offsetTrail.offsetParent}
if(navigator.userAgent.indexOf("Mac")!=-1&&typeof document.body.leftMargin!="undefined"){offsetLeft+=document.body.leftMargin;offsetTop+=document.body.topMargin}
if(!isIE)
width=searchInput.offsetWidth-widthOffset*2;else
width=searchInput.offsetWidth;return{left:offsetLeft,top:offsetTop,width:width,height:base.offsetHeight,bottom:offsetTop+base.offsetHeight,right:offsetLeft+width}}
function liveSearchInit(){searchInput=document.getElementById('searchGadget');if(searchInput==null||searchInput==undefined)
return
if(navigator.userAgent.indexOf("KHTML")>0){searchInput.addEventListener("keydown",liveSearchKeyPress,false);searchInput.addEventListener("focus",liveSearchDoSearch,false);searchInput.addEventListener("keydown",liveSearchStart,false);searchInput.addEventListener("blur",liveSearchHideDelayed,false)} else if(searchInput.addEventListener){searchInput.addEventListener("keypress",liveSearchKeyPress,false);searchInput.addEventListener("blur",liveSearchHideDelayed,false);searchInput.addEventListener("keypress",liveSearchStart,false)} else{searchInput.attachEvent("onkeydown",liveSearchKeyPress);searchInput.attachEvent("onkeydown",liveSearchStart);searchInput.attachEvent("onblur",liveSearchHideDelayed);isIE=true}
searchInput.setAttribute("autocomplete","off");var pos=getElementDimensions('searchGadget');result=document.getElementById('LSResult');if((typeof result.offsetParent!='undefined')&&(result.offsetParent!=null)){pos.left=pos.left-result.offsetParent.offsetLeft+pos.width} else{pos.left=pos.left+pos.width}
result.style.display='none'}
function liveSearchHideDelayed(){window.setTimeout("liveSearchHide()",400)}
function liveSearchHide(){document.getElementById("LSResult").style.display="none";var highlight=document.getElementById("LSHighlight");if(highlight)
highlight.removeAttribute("id")}
function getFirstHighlight(){var set=getHits();return set[0]}
function getLastHighlight(){var set=getHits();return set[set.length-1]}
function getHits(){var res=document.getElementById("LSShadow");var set=res.getElementsByTagName('li');return set}
function findChild(object,specifier){var cur=object.firstChild;try{while(cur!=undefined){cur=cur.nextSibling;if(specifier(cur)==true)
return cur}} catch(e){};return null}
function findNext(object,specifier){var cur=object;try{while(cur!=undefined){cur=cur.nextSibling;if(cur.nodeType==3)
cur=cur.nextSibling;if(cur!=undefined){if(specifier(cur)==true)
return cur} else{break}}} catch(e){};return null}
function findPrev(object,specifier){var cur=object;try{cur=cur.previousSibling;if(cur.nodeType==3)
cur=cur.previousSibling;if(cur!=undefined){if(specifier(cur)==true)
return cur}} catch(e){};return null}
function liveSearchKeyPress(event){var highlight=document.getElementById("LSHighlight");if(event.keyCode==40){if(!highlight){highlight=getFirstHighlight()} else{highlight.removeAttribute("id");highlight=findNext(highlight, function(o){return o.className=="LSRow"})}
if(highlight)
highlight.setAttribute("id","LSHighlight");if(!isIE)
event.preventDefault()}
else if(event.keyCode==38){if(!highlight){highlight=getLastHighlight()}
else{highlight.removeAttribute("id");highlight=findPrev(highlight, function(o){return o.className=='LSRow'})}
if(highlight)
highlight.setAttribute("id","LSHighlight");if(!isIE)
event.preventDefault()}
else if(event.keyCode==27){if(highlight)
highlight.removeAttribute("id");document.getElementById("LSResult").style.display="none"}}
function liveSearchStart(event){if(t){window.clearTimeout(t)}
var code=event.keyCode;if(code!=40&&code!=38&&code!=27&&code!=37&&code!=39){t=window.setTimeout("liveSearchDoSearch()",200)}}
function liveSearchDoSearch(){if(typeof liveSearchRoot=="undefined"){if(typeof portal_url=="undefined"){liveSearchRoot=""} else{if(portal_url[portal_url.length-1]=='/'){liveSearchRoot=portal_url} else{liveSearchRoot=portal_url+'/'}}}
if(typeof liveSearchRootSubDir=="undefined"){liveSearchRootSubDir=""}
if(liveSearchLast!=searchInput.value){if(liveSearchReq&&liveSearchReq.readyState<4){liveSearchReq.abort()}
if(searchInput.value==""){liveSearchHide();return false}
if(searchInput.value.length<2){liveSearchHide();return false}
var result=_cache[searchInput.value];if(result){showResult(result);return}
liveSearchReq=new XMLHttpRequest();liveSearchReq.onreadystatechange=liveSearchProcessReqChange;liveSearchReq.open("GET",liveSearchRoot+queryTarget+encodeURIComponent(searchInput.value));liveSearchLast=searchInput.value;liveSearchReq.send(null)}}
function showResult(result){var res=document.getElementById("LSResult");res.style.display="block";var sh=document.getElementById("LSShadow");sh.innerHTML=result}
function liveSearchProcessReqChange(){if(liveSearchReq.readyState==4){try{if(liveSearchReq.status>299||liveSearchReq.status<200||liveSearchReq.responseText.length<10)
return} catch(e){return}
showResult(liveSearchReq.responseText);_cache[liveSearchLast]=liveSearchReq.responseText}}
function liveSearchSubmit(){var highlight=document.getElementById("LSHighlight");if(highlight){var targets=highlight.getElementsByTagName('a');if(targets.length==0)
return true;var target=targets[0].href;if(!target)
return true;if((liveSearchRoot.length>0)&&(target.substring(0,liveSearchRoot.length)!=liveSearchRoot)){window.location=liveSearchRoot+liveSearchRootSubDir+target} else{window.location=target}
return false} else{return true}}
if(window.addEventListener)
window.addEventListener("load",liveSearchInit,false);else if(window.attachEvent)
window.attachEvent("onload",liveSearchInit);

/* - fullscreenmode.js - */
// http://africaontv.com/portal_javascripts/fullscreenmode.js?original=1
function toggleFullScreenMode(){var body=cssQuery('body')[0];if(document.getElementById('icon-full_screen')){var fsicon=document.getElementById('icon-full_screen')}
if(hasClassName(body,'fullscreen')){removeClassName(body,'fullscreen');createCookie('fullscreenMode','');if(fsicon){fsicon.src='fullscreenexpand_icon.gif'}} else{addClassName(body,'fullscreen');createCookie('fullscreenMode','1');if(fsicon){fsicon.src='fullscreencollapse_icon.gif'}}};
function fullscreenModeLoad(){if(document.getElementById('icon-full_screen')){var fsicon=document.getElementById('icon-full_screen')}
if(readCookie('fullscreenMode')=='1'){var body=cssQuery('body')[0];addClassName(body,'fullscreen');if(fsicon){fsicon.src='fullscreencollapse_icon.gif'}}};registerPloneFunction(fullscreenModeLoad)


/* - select_all.js - */
// http://africaontv.com/portal_javascripts/select_all.js?original=1
function selectAll(id,formName){if(formName==null){checkboxes=document.getElementsByName(id)
for(i=0;i<checkboxes.length;i++){checkboxes[i].checked=true }} else{for(i=0;i<document.forms[formName].elements.length;i++){if(document.forms[formName].elements[i].name==id){document.forms[formName].elements[i].checked=true}}}}
function deselectAll(id,formName){if(formName==null){checkboxes=document.getElementsByName(id)
for(i=0;i<checkboxes.length;i++){checkboxes[i].checked=false }} else{for(i=0;i<document.forms[formName].elements.length;i++){if(document.forms[formName].elements[i].name==id){document.forms[formName].elements[i].checked=false}}}}
function toggleSelect(selectbutton,id,initialState,formName){id=id||'ids:list'
if(selectbutton.isSelected==null){initialState=initialState||false;selectbutton.isSelected=initialState}
if(selectbutton.isSelected==false){selectbutton.setAttribute('src',portal_url+'/select_none_icon.gif');selectbutton.isSelected=true;return selectAll(id,formName)} else{selectbutton.setAttribute('src',portal_url+'/select_all_icon.gif');selectbutton.isSelected=false;return deselectAll(id,formName)}}


/* - dropdown.js - */
// http://africaontv.com/portal_javascripts/dropdown.js?original=1
function isActionMenu(node){if(hasClassName(node,'actionMenu')){return true}
return false};
function hideAllMenus(){var menus=cssQuery('dl.actionMenu');for(var i=0;i<menus.length;i++){replaceClassName(menus[i],'activated','deactivated',true)}};
function toggleMenuHandler(event){if(!event) var event=window.event;if(!W3CDOM){return true}
var container=findContainer(this,isActionMenu);if(!container){return true}
if(hasClassName(container,'activated')){replaceClassName(container,'activated','deactivated',true)} else{replaceClassName(container,'deactivated','activated',true)}
return false};
function hideMenusHandler(event){if(!event) var event=window.event;hideAllMenus();return true};
function actionMenuDocumentMouseDown(event){if(!event) var event=window.event;if(event.target)
targ=event.target;else if(event.srcElement)
targ=event.srcElement;var container=findContainer(targ,isActionMenu);if(container){return true}
hideAllMenus();return true};
function actionMenuMouseOver(event){if(!event) var event=window.event;if(!this.tagName&&(this.tagName=='A'||this.tagName=='a')){return true}
var container=findContainer(this,isActionMenu);if(!container){return true}
var menu_id=container.id;var switch_menu=false;var menus=cssQuery('dl.actionMenu');for(var i=0;i<menus.length;i++){var menu=menus[i]
if(hasClassName(menu,'activated')){switch_menu=true}
if(menu.id!=menu_id){replaceClassName(menu,'activated','deactivated',true)}}
if(switch_menu){var menu=cssQuery('#'+menu_id)[0];if(menu){replaceClassName(menu,'deactivated','activated',true)}}
return true};
function initializeMenus(){if(!W3CDOM){return false}
document.onmousedown=actionMenuDocumentMouseDown;hideAllMenus();var menu_headers=cssQuery('dl.actionMenu > dt.actionMenuHeader > a');for(var i=0;i<menu_headers.length;i++){var menu_header=menu_headers[i];menu_header.onclick=toggleMenuHandler;menu_header.onmouseover=actionMenuMouseOver}
var menu_contents=cssQuery('dl.actionMenu > dd.actionMenuContent');for(var i=0;i<menu_contents.length;i++){menu_contents[i].onclick=hideMenusHandler}};registerPloneFunction(initializeMenus);

/* - dragdropreorder.js - */
// http://africaontv.com/portal_javascripts/dragdropreorder.js?original=1
var ploneDnDReorder={}
ploneDnDReorder.dragging=null;ploneDnDReorder.table=null;ploneDnDReorder.rows=null;ploneDnDReorder.isDraggable=function(node){return hasClassName(node,'draggable')};ploneDnDReorder.doDown=function(e){if(!e) var e=window.event;var target=findContainer(this,ploneDnDReorder.isDraggable);if(target==null)
return;for(var i=0;i<ploneDnDReorder.rows.length;i++)
ploneDnDReorder.rows[i].onmousemove=ploneDnDReorder.doDrag;ploneDnDReorder.dragging=target;ploneDnDReorder.dragging._position=ploneDnDReorder.getPos(ploneDnDReorder.dragging);addClassName(ploneDnDReorder.dragging,"dragging");return false}
ploneDnDReorder.getPos=function(node){var children=node.parentNode.childNodes;var pos=0;for(var i=0;i<children.length;i++){if(node==children[i])
return pos;if(hasClassName(children[i],"draggable"))
pos++}
return null}
ploneDnDReorder.doDrag=function(e){if(!e) var e=window.event;if(!ploneDnDReorder.dragging)
return;var target=this;if(!target)
return;if(target.id!=ploneDnDReorder.dragging.id){ploneDnDReorder.swapElements(target,ploneDnDReorder.dragging)}
return false}
ploneDnDReorder.swapElements=function(child1,child2){var parent=child1.parentNode;var children=parent.childNodes;var items=new Array();for(var i=0;i<children.length;i++){var node=children[i];items[i]=node;if(node.id){removeClassName(node,"even");removeClassName(node,"odd");if(node.id==child1.id)
items[i]=child2;if(node.id==child2.id)
items[i]=child1}}
Sarissa.clearChildNodes(parent);var pos=0;for(var i=0;i<items.length;i++){var node=parent.appendChild(items[i]);if(node.id){if(pos%2)
addClassName(node,"even");else
addClassName(node,"odd");pos++}}}
ploneDnDReorder.doUp=function(e){if(!e) var e=window.event;if(!ploneDnDReorder.dragging)
return;removeClassName(ploneDnDReorder.dragging,"dragging");ploneDnDReorder.updatePositionOnServer();ploneDnDReorder.dragging._position=null;try{delete ploneDnDReorder.dragging._position} catch(e){}
ploneDnDReorder.dragging=null;for(var i=0;i<ploneDnDReorder.rows.length;i++)
ploneDnDReorder.rows[i].onmousemove=null;return false}
ploneDnDReorder.updatePositionOnServer=function(){var delta=ploneDnDReorder.getPos(ploneDnDReorder.dragging)-ploneDnDReorder.dragging._position;if(delta==0)
return;var req=new XMLHttpRequest();req.open("POST","folder_moveitem",true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var item_id=ploneDnDReorder.dragging.id.substr('folder-contents-item-'.length);req.send("item_id="+item_id+"&delta:int="+delta)}
ploneDnDReorder.initializeDragDrop=function(){ploneDnDReorder.table=cssQuery("table#sortable")[0];if(!ploneDnDReorder.table)
return;ploneDnDReorder.rows=cssQuery("table#sortable > tr,"+"table#sortable > tbody > tr");var targets=cssQuery("table#sortable > tr > td,"+"table#sortable > tbody > tr > td");for(var i=0;i<targets.length;i++){if(hasClassName(targets[i],'notDraggable'))
continue;targets[i].onmousedown=ploneDnDReorder.doDown;targets[i].onmouseup=ploneDnDReorder.doUp;addClassName(targets[i],"draggingHook")}}
registerPloneFunction(ploneDnDReorder.initializeDragDrop);

/* - mark_special_links.js - */
// http://africaontv.com/portal_javascripts/mark_special_links.js?original=1
function scanforlinks(){if(!W3CDOM){return false}
if((typeof external_links_in_content_only!='undefined')&&(external_links_in_content_only==false)){links=document.getElementsByTagName('a');for(i=0;i<links.length;i++){if((links[i].getAttribute('href'))&&(links[i].className.indexOf('link-plain')==-1)){var linkval=links[i].getAttribute('href');if(linkval.toLowerCase().indexOf(window.location.protocol+'//'+window.location.host)==0){} else if(linkval.indexOf('http:')!=0){} else{links[i].setAttribute('target','_blank')}}}}
contentarea=getContentArea();if(!contentarea)
return false;links=contentarea.getElementsByTagName('a');for(i=0;i<links.length;i++){if((links[i].getAttribute('href'))&&(links[i].className.indexOf('link-plain')==-1)){var linkval=links[i].getAttribute('href');if(linkval.toLowerCase().indexOf(window.location.protocol+'//'+window.location.host)==0){} else if(linkval.indexOf('http:')!=0){protocols=['mailto','ftp','news','irc','h323','sip','callto','https','feed','webcal'];for(p=0;p<protocols.length;p++){if(linkval.indexOf(protocols[p]+':')==0){wrapNode(links[i],'span','link-'+protocols[p]);break}}} else{if(links[i].getElementsByTagName('img').length==0){wrapNode(links[i],'span','link-external')}
if((typeof external_links_open_new_window!='undefined')&&(external_links_open_new_window==true)){links[i].setAttribute('target','_blank')}}}}};registerPloneFunction(scanforlinks);

/* - collapsiblesections.js - */
// http://africaontv.com/portal_javascripts/collapsiblesections.js?original=1
function isCollapsible(node){if(hasClassName(node,'collapsible')){return true}
return false};
function toggleCollapsible(event){if(!event) var event=window.event;if(!this.tagName&&(this.tagName=='DT'||this.tagName=='dt')){return true}
var container=findContainer(this,isCollapsible);if(!container){return true}
if(hasClassName(container,'collapsedBlockCollapsible')){replaceClassName(container,'collapsedBlockCollapsible','expandedBlockCollapsible')} else if(hasClassName(container,'expandedBlockCollapsible')){replaceClassName(container,'expandedBlockCollapsible','collapsedBlockCollapsible')} else if(hasClassName(container,'collapsedInlineCollapsible')){replaceClassName(container,'collapsedInlineCollapsible','expandedInlineCollapsible')} else if(hasClassName(container,'expandedInlineCollapsible')){replaceClassName(container,'expandedInlineCollapsible','collapsedInlineCollapsible')}};
function activateCollapsibles(){if(!W3CDOM){return false}
var collapsibles=cssQuery('dl.collapsible');for(var i=0;i<collapsibles.length;i++){var collapsible=collapsibles[i];var collapsible_header=cssQuery('dt.collapsibleHeader',collapsible)[0];collapsible_header.onclick=toggleCollapsible;if(hasClassName(collapsible,'inline')){if(hasClassName(collapsible,'collapsedOnLoad')){replaceClassName(collapsible,'collapsedOnLoad','collapsedInlineCollapsible')} else{addClassName(collapsible,'expandedInlineCollapsible')}} else{if(hasClassName(collapsible,'collapsedOnLoad')){replaceClassName(collapsible,'collapsedOnLoad','collapsedBlockCollapsible')} else{addClassName(collapsible,'expandedBlockCollapsible')}}}};registerPloneFunction(activateCollapsibles);

/* - highlightsearchterms.js - */
// http://africaontv.com/portal_javascripts/highlightsearchterms.js?original=1
function highlightTermInNode(node,word){var contents=node.nodeValue;var index=contents.toLowerCase().indexOf(word.toLowerCase());if(index<0){return false};var parent=node.parentNode;if(parent.className!="highlightedSearchTerm"){var hiword=document.createElement("span");hiword.className="highlightedSearchTerm";hiword.appendChild(document.createTextNode(contents.substr(index,word.length)));parent.insertBefore(document.createTextNode(contents.substr(0,index)),node);parent.insertBefore(hiword,node);parent.insertBefore(document.createTextNode(contents.substr(index+word.length)),node);parent.removeChild(node)}}
function highlightSearchTerms(terms,startnode){if(!W3CDOM){return false};if(!terms){return false};if(!startnode){return false};for(var term_index=0;term_index<terms.length;term_index++){var term=terms[term_index];if(term.length<1)
continue;var term_lower=term.toLowerCase();if(term_lower!='not'&&term_lower!='and'&&term_lower!='or'){walkTextNodes(startnode,highlightTermInNode,term)}}}
function getSearchTermsFromURI(uri){var query;if(typeof decodeURI!='undefined'){query=decodeURI(uri)} else if(typeof unescape!='undefined'){query=unescape(uri)} else{}
var result=new Array();if(window.decodeReferrer){var referrerSearch=decodeReferrer();if(null!=referrerSearch&&referrerSearch.length>0){result=referrerSearch}}
var qfinder=new RegExp("searchterm=([^&]*)","gi");var qq=qfinder.exec(query);if(qq&&qq[1]){var terms=qq[1].replace(/\+/g,' ').split(/\s+/);for(var i=0;i<terms.length;i++){if(terms[i]!=''){result.push(terms[i])}}
return result}
return result.length==0?false:result}
function highlightSearchTermsFromURI(){if(!W3CDOM){return false};var terms=getSearchTermsFromURI(window.location.search);var contentarea=getContentArea();highlightSearchTerms(terms,contentarea)}
registerPloneFunction(highlightSearchTermsFromURI);

/* - se-highlight.js - */
// http://africaontv.com/portal_javascripts/se-highlight.js?original=1
var searchEngines=[['^http://([^.]+\\.)?google.*','q='],['^http://search\\.yahoo.*','p='],['^http://search\\.msn.*','q='],['^http://search\\.aol.*','userQuery='],['^http://(www\\.)?altavista.*','q='],['^http://(www\\.)?feedster.*','q='],['^http://search\\.lycos.*','query='],['^http://(www\\.)?alltheweb.*','q='],['^http://(www\\.)?ask\\.com.*','q=']]
function decodeReferrer(ref){if(null==ref&&document.referrer){ref=document.referrer}
if(!ref) return null;var match=new RegExp('');var seQuery='';for(var i=0;i<searchEngines.length;i++){if(!match.compile){match=new RegExp(searchEngines[i][0],'i')} else{match.compile(searchEngines[i][0],'i')}
if(ref.match(match)){if(!match.compile){match=new RegExp('^.*[?&]'+searchEngines[i][1]+'([^&]+)&?.*$','i')} else{match.compile('^.*[?&]'+searchEngines[i][1]+'([^&]+)&?.*$')}
seQuery=ref.replace(match,'$1');if(seQuery){seQuery=decodeURIComponent(seQuery);seQuery=seQuery.replace(/\'|"/, '');return seQuery.split(/[\s,\+\.]+/)}}}
return null}


/* - first_input_focus.js - */
// http://africaontv.com/portal_javascripts/first_input_focus.js?original=1
function setFocus(){if(!W3CDOM){return false};var xre=new RegExp(/\berror\b/);for(var f=0;(formnode=document.getElementsByTagName('form').item(f));f++){for(var i=0;(node=formnode.getElementsByTagName('div').item(i));i++){if(xre.exec(node.className)){for(var j=0;(inputnode=node.getElementsByTagName('input').item(j));j++){try{if(inputnode.focus){inputnode.focus();return}} catch(e){}}}}}}
registerPloneFunction(setFocus)


/* - folder_contents_filter.js - */
// http://africaontv.com/portal_javascripts/folder_contents_filter.js?original=1
function submitFolderAction(folderAction){document.folderContentsForm.action=document.folderContentsForm.action+'/'+folderAction;document.folderContentsForm.submit()}
function submitFilterAction(){document.folderContentsForm.action=document.folderContentsForm.action+'/folder_contents';filter_selection=document.getElementById('filter_selection');for(var i=0;i<filter_selection.length;i++){if(filter_selection.options[i].selected){if(filter_selection.options[i].value=='#'){document.folderContentsForm.filter_state.value='clear_view_filter'}
else{document.folderContentsForm.filter_state.value='set_view_filter'}}}
document.folderContentsForm.submit()}


/* - folder_contents_hideAddItems.js - */
// http://africaontv.com/portal_javascripts/folder_contents_hideAddItems.js?original=1
function hideTraditionalAddItemPullDown(){pullDown=document.getElementById('traditional-add-item-pulldown');if(pullDown){pullDown.style.display='none'}}
registerPloneFunction(hideTraditionalAddItemPullDown)


/* - styleswitcher.js - */
// http://africaontv.com/portal_javascripts/styleswitcher.js?original=1
function setActiveStyleSheet(title,reset){if(!W3CDOM){return false};var i,a,main;for(i=0;(a=document.getElementsByTagName("link")[i]);i++){if(a.getAttribute("rel").indexOf("style")!=-1&&a.getAttribute("title")){a.disabled=true;if(a.getAttribute("title")==title){a.disabled=false}}}
if(reset==1){createCookie("wstyle",title,365)}};
function setStyle(){var style=readCookie("wstyle");if(style!=null){setActiveStyleSheet(style,0)}};registerPloneFunction(setStyle);

/* - table_sorter.js - */
// http://africaontv.com/portal_javascripts/table_sorter.js?original=1
function compare(a,b){au=new String(a);bu=new String(b);if(au.charAt(4)!='-'&&au.charAt(7)!='-'){var an=parseFloat(au)
var bn=parseFloat(bu)}
if(isNaN(an)||isNaN(bn)){as=au.toLowerCase()
bs=bu.toLowerCase()
if(as>bs){return 1}
else{return-1}}
else{return an-bn}}
function getConcatenedTextContent(node){var _result="";if(node==null){return _result}
var childrens=node.childNodes;var i=0;while(i<childrens.length){var child=childrens.item(i);switch(child.nodeType){case 1:case 5:_result+=getConcatenedTextContent(child);break;case 3:case 2:case 4:_result+=child.nodeValue;break;case 6:case 7:case 8:case 9:case 10:case 11:case 12:break}
i++}
return _result}
function sort(e){var el=window.event?window.event.srcElement:e.currentTarget;var a=new Array();if(el.nodeName=='IMG') el=el.parentNode;var name=el.childNodes.item(1).nodeValue;var dad=el.parentNode;var node;for(var im=0;(node=dad.getElementsByTagName("th").item(im));im++){if(node.lastChild.nodeName=='IMG'){lastindex=node.getElementsByTagName('img').length-1;node.getElementsByTagName('img').item(lastindex).setAttribute('src',portal_url+'/arrowBlank.gif')}}
for(var i=0;(node=dad.getElementsByTagName("th").item(i));i++){var xre=new RegExp(/\bnosort\b/);if(!xre.exec(node.className)&&node.childNodes.item(1).nodeValue==name){lastindex=node.getElementsByTagName('img').length-1;node.getElementsByTagName('img').item(lastindex).setAttribute('src',portal_url+'/arrowUp.gif');break}}
var tbody=dad.parentNode.parentNode.getElementsByTagName("tbody").item(0);for(var j=0;(node=tbody.getElementsByTagName("tr").item(j));j++){a[j]=new Array();a[j][0]=getConcatenedTextContent(node.getElementsByTagName("td").item(i));a[j][1]=getConcatenedTextContent(node.getElementsByTagName("td").item(1));a[j][2]=getConcatenedTextContent(node.getElementsByTagName("td").item(0));a[j][3]=node}
if(a.length>1){a.sort(compare);if(a[0][0]==getConcatenedTextContent(tbody.getElementsByTagName("tr").item(0).getElementsByTagName("td").item(i))&&a[1][0]==getConcatenedTextContent(tbody.getElementsByTagName("tr").item(1).getElementsByTagName("td").item(i))){a.reverse();lastindex=el.getElementsByTagName('img').length-1;el.getElementsByTagName('img').item(lastindex).setAttribute('src',portal_url+'/arrowDown.gif')}}
for(var j=0;j<a.length;j++){a[j][3].className=((j%2)==0)?'odd':'even';tbody.appendChild(a[j][3])}}
function initalizeTableSort(e){if(!W3CDOM){return false};var tbls=document.getElementsByTagName('table');for(var t=0;t<tbls.length;t++){var re=new RegExp(/\blisting\b/)
var xre=new RegExp(/\bnosort\b/)
if(re.exec(tbls[t].className)&&!xre.exec(tbls[t].className)){try{var thead=tbls[t].getElementsByTagName("thead").item(0);var node;blankarrow=document.createElement('img');blankarrow.setAttribute('src',portal_url+'/arrowBlank.gif');blankarrow.setAttribute('height',6);blankarrow.setAttribute('width',9);initialsort=false;for(var i=0;(node=thead.getElementsByTagName("th").item(i));i++){if(!xre.exec(node.className)){node.insertBefore(blankarrow.cloneNode(1),node.firstChild);node.style.cursor='pointer';if(!initialsort){initialsort=true;uparrow=document.createElement('img');uparrow.setAttribute('src',portal_url+'/arrowUp.gif');uparrow.setAttribute('height',6);uparrow.setAttribute('width',9);node.appendChild(uparrow)} else{node.appendChild(blankarrow.cloneNode(1))}
if(node.addEventListener) node.addEventListener("click",sort,false);else if(node.attachEvent) node.attachEvent("onclick",sort)}}} catch(er){}}}}
registerPloneFunction(initalizeTableSort)


/* - calendar_formfield.js - */
// http://africaontv.com/portal_javascripts/calendar_formfield.js?original=1
function onJsCalendarDateUpdate(cal){var year=cal.params.input_id_year;var month=cal.params.input_id_month;var day=cal.params.input_id_day;var daystr=''+cal.date.getDate();if(daystr.length==1)
daystr='0'+daystr;var monthstr=''+(cal.date.getMonth()+1);if(monthstr.length==1)
monthstr='0'+monthstr;cal.params.inputField.value=''+cal.date.getFullYear()+'/'+monthstr+'/'+daystr
year.value=cal.params.inputField.value.substring(0,4);month.value=cal.params.inputField.value.substring(5,7);day.value=cal.params.inputField.value.substring(8,10)}
function showJsCalendar(input_id_anchor,input_id,input_id_year,input_id_month,input_id_day,input_id_hour,input_id_minute,yearStart,yearEnd){var input_id_anchor=document.getElementById(input_id_anchor);var input_id=document.getElementById(input_id);var input_id_year=document.getElementById(input_id_year);var input_id_month=document.getElementById(input_id_month);var input_id_day=document.getElementById(input_id_day);var format='y/mm/dd';var dateEl=input_id;var mustCreate=false;var cal=window.calendar;var params={'range':[yearStart,yearEnd],inputField:input_id,input_id_year:input_id_year,input_id_month:input_id_month,input_id_day:input_id_day};
function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",1);param_default("align","Bl");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,null,onJsCalendarDateUpdate,
function(cal){cal.hide()});cal.time24=true;cal.weekNumbers=true;mustCreate=true} else{cal.hide()}
cal.showsOtherMonths=false;cal.yearStep=2;cal.setRange(yearStart,yearEnd);cal.params=params;cal.setDateStatusHandler(null);cal.getDateText=null;cal.setDateFormat(format);if(mustCreate)
cal.create();cal.refresh();if(!params.position)
cal.showAtElement(input_id_anchor,null);else
cal.showAt(params.position[0],params.position[1]);return false}
function update_date_field(field,year,month,day,hour,minute,ampm){var field=document.getElementById(field)
var date=document.getElementById(date)
var year=document.getElementById(year)
var month=document.getElementById(month)
var day=document.getElementById(day)
var hour=document.getElementById(hour)
var minute=document.getElementById(minute)
var ampm=document.getElementById(ampm)
if(0<year.value){field.value=year.value+"-"+month.value+"-"+day.value+" "+hour.value+":"+minute.value
if(ampm&&ampm.value)
field.value=field.value+" "+ampm.value}
else{field.value=''
month.options[0].selected=1
day.options[0].selected=1
hour.options[0].selected=1
minute.options[0].selected=1
if(ampm&&ampm.options)
ampm.options[0].selected=1}}


/* - calendarpopup.js - */
// http://africaontv.com/portal_javascripts/calendarpopup.js?original=1
function showDay(date){document.getElementById('day'+date).style.visibility='visible';return true}
function hideDay(date){document.getElementById('day'+date).style.visibility='hidden';return true}


/* - ie5fixes.js - */
// http://africaontv.com/portal_javascripts/ie5fixes.js?original=1
function hackPush(el){this[this.length]=el}
function hackPop(){var N=this.length-1,el=this[N];this.length=N
return el}
function hackShift(){var one=this[0],N=this.length;for(var i=1;i<N;i++){this[i-1]=this[i]}
this.length=N-1
return one}
var testPushPop=new Array();if(testPushPop.push){}else{Array.prototype.push=hackPush
Array.prototype.pop=hackPop
Array.prototype.shift=hackShift}


/* - formUnload.js - */
// http://africaontv.com/portal_javascripts/formUnload.js?original=1
if(!window.beforeunload)(function(){var BeforeUnloadHandler=function(){var self=this;this.message=window.form_modified_message||"Your form has not been saved. All changes you have made will be lost.";this.forms=[];this.chkId=[];this.chkType=new this.CheckType();this.handlers=[this.isAnyFormChanged];this.submitting=false;this.execute=function(event){if(self.submitting) return;if(!event) event=window.event;for(var i=0;i<self.handlers.length;i++){var fn=self.handlers[i];var message=message||fn.apply(self)}
if(message===true) message=self.message;if(message===false) message=undefined;if(event&&message){event.returnValue=message}
return message}
this.execute.tool=this}
var Class=BeforeUnloadHandler.prototype;Class.isAnyFormChanged=function(){for(var i=0;i<this.forms.length;i++){var form=this.forms[i];if(this.isElementChanged(form)){return true}}
return false}
Class.addHandler=function(fn){this.handlers.push(fn)}
Class.onsubmit=function(){var tool=window.onbeforeunload&&window.onbeforeunload.tool;tool.submitting=true}
Class.addForm=function(form){for(var i=0;i<this.forms.length;i++){if(this.forms[i]==form) return}
this.forms.push(form);form.onsubmit=this.onsubmit;var elements=form.getElementsByTagName('input');for(var j=0;j<elements.length;j++){var ele=elements[j];if(ele.type=='hidden'){ele.setAttribute('originalValue',ele.defaultValue)}}}
Class.addForms=function(){for(var i=0;i<arguments.length;i++){var element=arguments[i];if(!element) continue;if(element.tagName=='FORM'){this.addForm(element)}
else{var forms=element.getElementsByTagName('form');for(var j=0;j<forms.length;j++){this.addForm(forms[j])}}}}
Class.removeForms=function(){for(var i=0;i<arguments.length;i++){var element=arguments[i];if(!element) continue;if(element.tagName=='FORM'){for(var j=0;j<arguments.length;j++){if(this.forms[j]==element){this.forms.splice(j--,1);element.onsubmit=null}}} else{var forms=element.getElementsByTagName('form');for(var j=0;j<forms.length;j++){this.removeForms(forms[j])}}}}
Class.CheckType=function(){};var c=Class.CheckType.prototype;c.checkbox=c.radio=function(ele){return ele.checked!=ele.defaultChecked}
c.password=c.textarea=c.text=function(ele){return ele.value!=ele.defaultValue}
c.hidden=function(ele){var orig=ele.getAttribute("originalValue");return orig&&(ele.value!=orig)}
c['select-one']=function(ele){for(var i=0 ;i<ele.length;i++){var opt=ele.options[i];if(opt.selected!=opt.defaultSelected){if(i===0&&opt.selected) continue;return true}}
return false}
c['select-multiple']=function(ele){for(var i=0 ;i<ele.length;i++){var opt=ele.options[i];if(opt.selected!=opt.defaultSelected){return true}}
return false}
Class.chk_form=function(form){var elements=form.elements;for(var i=0;i<elements.length;i++){var element=elements[i];if(this.isElementChanged(element)){return true}}
return false}
Class.isElementChanged=function(ele){var method=ele.id&&this.chkId[ele.id];if(!method&&ele.type&&ele.name)
method=this.chkType[ele.type];if(!method&&ele.tagName)
method=this['chk_'+ele.tagName.toLowerCase()];return method?method.apply(this,[ele]):false};window.onbeforeunload=new BeforeUnloadHandler().execute;registerPloneFunction(function(){if(!W3CDOM){return false};var tool=window.onbeforeunload&&window.onbeforeunload.tool;var content=getContentArea();if(tool&&content){var forms=cssQuery('form.enableUnloadProtection');for(var i=0;i<forms.length;i++){tool.addForm(forms[i])}}})})();

/* - sarissa.js - */
// http://africaontv.com/portal_javascripts/sarissa.js?original=1
function Sarissa(){};Sarissa.PARSED_OK="Document contains no parsing errors";Sarissa.IS_ENABLED_TRANSFORM_NODE=false;Sarissa.IS_ENABLED_XMLHTTP=false;Sarissa.IS_ENABLED_SELECT_NODES=false;var _sarissa_iNsCounter=0;var _SARISSA_IEPREFIX4XSLPARAM="";var _SARISSA_HAS_DOM_IMPLEMENTATION=document.implementation&&true;var _SARISSA_HAS_DOM_CREATE_DOCUMENT=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.createDocument;var _SARISSA_HAS_DOM_FEATURE=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.hasFeature;var _SARISSA_IS_MOZ=_SARISSA_HAS_DOM_CREATE_DOCUMENT&&_SARISSA_HAS_DOM_FEATURE;var _SARISSA_IS_SAFARI=navigator.userAgent.toLowerCase().indexOf("applewebkit")!=-1;var _SARISSA_IS_IE=document.all&&window.ActiveXObject&&navigator.userAgent.toLowerCase().indexOf("msie")>-1&&navigator.userAgent.toLowerCase().indexOf("opera")==-1;if(!window.Node||!window.Node.ELEMENT_NODE){var Node={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12}};if(_SARISSA_IS_IE){_SARISSA_IEPREFIX4XSLPARAM="xsl:";var _SARISSA_DOM_PROGID="";var _SARISSA_XMLHTTP_PROGID="";pickRecentProgID=function(idList,enabledList){var bFound=false;for(var i=0;i<idList.length&&!bFound;i++){try{var oDoc=new ActiveXObject(idList[i]);o2Store=idList[i];bFound=true;for(var j=0;j<enabledList.length;j++)
if(i<=enabledList[j][1])
Sarissa["IS_ENABLED_"+enabledList[j][0]]=true}catch(objException){}};if(!bFound)
throw "Could not retreive a valid progID of Class: "+idList[idList.length-1]+". (original exception: "+e+")";idList=null;return o2Store};_SARISSA_DOM_PROGID=pickRecentProgID(["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"],[["SELECT_NODES",2],["TRANSFORM_NODE",2]]);_SARISSA_XMLHTTP_PROGID=pickRecentProgID(["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],[["XMLHTTP",4]]);_SARISSA_THREADEDDOM_PROGID=pickRecentProgID(["Msxml2.FreeThreadedDOMDocument.5.0","MSXML2.FreeThreadedDOMDocument.4.0","MSXML2.FreeThreadedDOMDocument.3.0"]);_SARISSA_XSLTEMPLATE_PROGID=pickRecentProgID(["Msxml2.XSLTemplate.5.0","Msxml2.XSLTemplate.4.0","MSXML2.XSLTemplate.3.0"],[["XSLTPROC",2]]);pickRecentProgID=null;Sarissa.getDomDocument=function(sUri,sName){var oDoc=new ActiveXObject(_SARISSA_DOM_PROGID);if(sName){if(sUri){oDoc.loadXML("<a"+_sarissa_iNsCounter+":"+sName+" xmlns:a"+_sarissa_iNsCounter+"=\""+sUri+"\" />");++_sarissa_iNsCounter}
else
oDoc.loadXML("<"+sName+"/>")};return oDoc};Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(oDoc.parseError!=0){parseErrorText="XML Parsing Error: "+oDoc.parseError.reason+"\nLocation: "+oDoc.parseError.url+"\nLine Number "+oDoc.parseError.line+", Column "+oDoc.parseError.linepos+":\n"+oDoc.parseError.srcText+"\n";for(var i=0;i<oDoc.parseError.linepos;i++){parseErrorText+="-"};parseErrorText+="^\n"};return parseErrorText};Sarissa.setXpathNamespaces=function(oDoc,sNsSet){oDoc.setProperty("SelectionLanguage","XPath");oDoc.setProperty("SelectionNamespaces",sNsSet)};XSLTProcessor=function(){this.template=new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);this.processor=null};XSLTProcessor.prototype.importStylesheet=function(xslDoc){var converted=new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);converted.loadXML(xslDoc.xml);this.template.stylesheet=converted;this.processor=this.template.createProcessor();this.paramsSet=new Array()};XSLTProcessor.prototype.transformToDocument=function(sourceDoc){this.processor.input=sourceDoc;var outDoc=new ActiveXObject(_SARISSA_DOM_PROGID);this.processor.output=outDoc;this.processor.transform();return outDoc};XSLTProcessor.prototype.transformToFragment=function(sourceDoc,ownerDocument){return this.transformToDocument(sourceDoc)};XSLTProcessor.prototype.setParameter=function(nsURI,name,value){if(nsURI){this.processor.addParameter(name,value,nsURI)}else{this.processor.addParameter(name,value)};if(!this.paramsSet[""+nsURI]){this.paramsSet[""+nsURI]=new Array()};this.paramsSet[""+nsURI][name]=value};XSLTProcessor.prototype.getParameter=function(nsURI,name){if(this.paramsSet[""+nsURI]&&this.paramsSet[""+nsURI][name])
return this.paramsSet[""+nsURI][name];else
return null}}
else{if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){if(window.XMLDocument){XMLDocument.prototype.onreadystatechange=null;XMLDocument.prototype.readyState=0;XMLDocument.prototype.parseError=0;var _SARISSA_SYNC_NON_IMPLEMENTED=false;try{XMLDocument.prototype.async=true;_SARISSA_SYNC_NON_IMPLEMENTED=true}catch(e){};XMLDocument.prototype._sarissa_load=XMLDocument.prototype.load;XMLDocument.prototype.load=function(sURI){var oDoc=document.implementation.createDocument("","",null);Sarissa.copyChildNodes(this,oDoc);this.parseError=0;Sarissa.__setReadyState__(this,1);try{if(this.async==false&&_SARISSA_SYNC_NON_IMPLEMENTED){var tmp=new XMLHttpRequest();tmp.open("GET",sURI,false);tmp.send(null);Sarissa.__setReadyState__(this,2);Sarissa.copyChildNodes(tmp.responseXML,this);Sarissa.__setReadyState__(this,3)}
else{this._sarissa_load(sURI)}}
catch(objException){this.parseError=-1}
finally{if(this.async==false){Sarissa.__handleLoad__(this)}};return oDoc}};Sarissa.__handleLoad__=function(oDoc){if(!oDoc.documentElement||oDoc.documentElement.tagName=="parsererror")
oDoc.parseError=-1;Sarissa.__setReadyState__(oDoc,4)};_sarissa_XMLDocument_onload=function(){Sarissa.__handleLoad__(this)};Sarissa.__setReadyState__=function(oDoc,iReadyState){oDoc.readyState=iReadyState;if(oDoc.onreadystatechange!=null&&typeof oDoc.onreadystatechange=="function")
oDoc.onreadystatechange()};Sarissa.getDomDocument=function(sUri,sName){var oDoc=document.implementation.createDocument(sUri?sUri:"",sName?sName:"",null);oDoc.addEventListener("load",_sarissa_XMLDocument_onload,false);return oDoc}}};if(!window.DOMParser){DOMParser=function(){};DOMParser.prototype.parseFromString=function(sXml,contentType){var doc=Sarissa.getDomDocument();doc.loadXML(sXml);return doc}};if(window.XMLHttpRequest){Sarissa.IS_ENABLED_XMLHTTP=true}
else if(_SARISSA_IS_IE){XMLHttpRequest=function(){return new ActiveXObject(_SARISSA_XMLHTTP_PROGID)};Sarissa.IS_ENABLED_XMLHTTP=true};if(!window.document.importNode&&_SARISSA_IS_IE){try{window.document.importNode=function(oNode,bChildren){var importNode=document.createElement("div");if(bChildren)
importNode.innerHTML=Sarissa.serialize(oNode);else
importNode.innerHTML=Sarissa.serialize(oNode.cloneNode(false));return importNode.firstChild}}catch(e){}};if(!Sarissa.getParseErrorText){Sarissa.getParseErrorText=function(oDoc){var parseErrorText=Sarissa.PARSED_OK;if(oDoc.parseError!=0){if(oDoc.documentElement.tagName=="parsererror"){parseErrorText=oDoc.documentElement.firstChild.data;parseErrorText+="\n"+oDoc.documentElement.firstChild.nextSibling.firstChild.data}
else if(oDoc.documentElement.tagName=="html"){parseErrorText=Sarissa.getText(oDoc.documentElement.getElementsByTagName("h1")[0],false)+"\n";parseErrorText+=Sarissa.getText(oDoc.documentElement.getElementsByTagName("body")[0],false)+"\n";parseErrorText+=Sarissa.getText(oDoc.documentElement.getElementsByTagName("pre")[0],false)}};return parseErrorText}};Sarissa.getText=function(oNode,deep){var s="";var nodes=oNode.childNodes;for(var i=0;i<nodes.length;i++){var node=nodes[i];var nodeType=node.nodeType;if(nodeType==Node.TEXT_NODE||nodeType==Node.CDATA_SECTION_NODE){s+=node.data}
else if(deep==true&&(nodeType==Node.ELEMENT_NODE||nodeType==Node.DOCUMENT_NODE||nodeType==Node.DOCUMENT_FRAGMENT_NODE)){s+=Sarissa.getText(node,true)}};return s};if(window.XMLSerializer){Sarissa.serialize=function(oDoc){return(new XMLSerializer()).serializeToString(oDoc)}}else{if((Sarissa.getDomDocument("","foo",null)).xml){Sarissa.serialize=function(oDoc){return oDoc.xml};XMLSerializer=function(){};XMLSerializer.prototype.serializeToString=function(oNode){return oNode.xml}}};Sarissa.stripTags=function(s){return s.replace(/<[^>]+>/g,"")};Sarissa.clearChildNodes=function(oNode){while(oNode.hasChildNodes()){oNode.removeChild(oNode.firstChild)}};Sarissa.copyChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo)};var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;var nodes=nodeFrom.childNodes;if(ownerDoc.importNode&&(!_SARISSA_IS_IE)){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true))}}
else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true))}}};Sarissa.moveChildNodes=function(nodeFrom,nodeTo,bPreserveExisting){if(!bPreserveExisting){Sarissa.clearChildNodes(nodeTo)};var nodes=nodeFrom.childNodes;if(nodeFrom.ownerDocument==nodeTo.ownerDocument){nodeTo.appendChild(nodes[i])}else{var ownerDoc=nodeTo.nodeType==Node.DOCUMENT_NODE?nodeTo:nodeTo.ownerDocument;if(ownerDoc.importNode&&(!_SARISSA_IS_IE)){for(var i=0;i<nodes.length;i++){nodeTo.appendChild(ownerDoc.importNode(nodes[i],true))}}
else{for(var i=0;i<nodes.length;i++){nodeTo.appendChild(nodes[i].cloneNode(true))}};Sarissa.clearChildNodes(nodeFrom)}};Sarissa.xmlize=function(anyObject,objectName,indentSpace){indentSpace=indentSpace?indentSpace:'';var s=indentSpace+'<'+objectName+'>';var isLeaf=false;if(!(anyObject instanceof Object)||anyObject instanceof Number||anyObject instanceof String||anyObject instanceof Boolean||anyObject instanceof Date){s+=Sarissa.escape(""+anyObject);isLeaf=true}else{s+="\n";var itemKey='';var isArrayItem=anyObject instanceof Array;for(var name in anyObject){s+=Sarissa.xmlize(anyObject[name],(isArrayItem?"array-item key=\""+name+"\"":name),indentSpace+"   ")};s+=indentSpace};return s+=(objectName.indexOf(' ')!=-1?"</array-item>\n":"</"+objectName+">\n")};Sarissa.escape=function(sXml){return sXml.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g, "&quot;").replace(/'/g,"&apos;")};Sarissa.unescape=function(sXml){return sXml.replace(/&apos;/g,"'").replace(/&quot;/g,"\"").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")};

/* - login.js - */
// http://africaontv.com/portal_javascripts/login.js?original=1
function cookiesEnabled(){var c="areYourCookiesEnabled=0";document.cookie=c;var dc=document.cookie;if(dc.indexOf(c)==-1) return 0;c="areYourCookiesEnabled=1";document.cookie=c;dc=document.cookie;if(dc.indexOf(c)==-1) return 0;document.cookie="areYourCookiesEnabled=; expires=Thu, 01-Jan-70 00:00:01 GMT";return 1}
function setLoginVars(user_name_id,alt_user_name_id,password_id,empty_password_id,js_enabled_id,cookies_enabled_id){if(js_enabled_id){el=document.getElementById(js_enabled_id);if(el){el.value=1}}
if(cookies_enabled_id){el=document.getElementById(cookies_enabled_id);if(el){el.value=cookiesEnabled()}}
if(user_name_id&&alt_user_name_id){user_name=document.getElementById(user_name_id)
alt_user_name=document.getElementById(alt_user_name_id)
if(user_name&&alt_user_name){alt_user_name.value=user_name.value}}
if(password_id&&empty_password_id){password=document.getElementById(password_id)
empty_password=document.getElementById(empty_password_id)
if(password&&empty_password){if(password.value.length==0){empty_password.value='1'} else{empty_password.value='0'}}}
return 1}
function showCookieMessage(msg_id){msg=document.getElementById(msg_id)
if(msg){if(cookiesEnabled()){msg.style.display='none'} else{msg.style.display='block'}}}
function showEnableCookiesMessage(){showCookieMessage('enable_cookies_message')}
registerPloneFunction(showEnableCookiesMessage);

/* - formsubmithelpers.js - */
// http://africaontv.com/portal_javascripts/formsubmithelpers.js?original=1
function inputSubmitOnClick(event){if(!event) var event=window.event;if(hasClassName(this,'submitting')){return confirm(window.form_resubmit_message)} else{addClassName(this,'submitting')}
return true}
function registerSubmitHandler(){var nodes=cssQuery('input[type=submit]');for(var i=0;i<nodes.length;i++){var node=nodes[i];if(!node.onclick){node.onclick=inputSubmitOnClick}}}
registerPloneFunction(registerSubmitHandler);

/* - duration_formfield.js - */
// http://africaontv.com/portal_javascripts/duration_formfield.js?original=1
function update_duration_field(field,hour,minute,second){var field=document.getElementById(field)
var hour=document.getElementById(hour)
var minute=document.getElementById(minute)
var second=document.getElementById(second)
if(0<=hour.value){field.value=hour.value+":"+minute.value+":"+second.value}
else{field.value=''
hour.options[0].selected=1
minute.options[0].selected=1
second.options[0].selected=1}}


/* - vpip.js - */
// http://africaontv.com/portal_javascripts/vpip.js?original=1
function vPIPPlay(_oLink,_sParams,_sFlashVars,_sThickBox,_sJump){if(vpipPlayerRef==undefined||vpipPlayerRef==null){var vpipPlayer=new vPIPPlayer(_oLink,_sParams,_sFlashVars,_sThickBox,_sJump);vpipPlayerRef=vpipPlayer}
else{var vpipPlayer=vpipPlayerRef;vpipPlayer.setStartup(_oLink,_sParams,_sFlashVars,_sThickBox,_sJump)}
if(vpipPlayer.init()){vpipPlayer.show();return false}
else{if(vpipPlayer.oLink.href.toLowerCase().indexOf("http://")>-1)
window.open(vpipPlayer.oLink.href,"_self");return true}}
vPIPPlayer.DIVPOS=0;vPIPPlayer.DIVIDPOS=1;vPIPPlayer.ORIGHTMLPOS=2;vPIPPlayer.LINKSARRAYPOS=3;vPIPPlayer.OPENPOS=0;vPIPPlayer.HREFPOS=1;vPIPPlayer.WIDTHPOS=2;vPIPPlayer.HEIGHTPOS=3;vPIPPlayer.FLASHWIDTH=320;vPIPPlayer.FLASHHEIGHT=300;vPIPPlayer.AUTOSTARTPOS=4;vPIPPlayer.CONTROLLERPOS=5;vPIPPlayer.NAMEPOS=6;vPIPPlayer.QUALITYPOS=7;vPIPPlayer.BGCOLORPOS=8;vPIPPlayer.FLVPOS=9;vPIPPlayer.REVERTPOS=10;vPIPPlayer.SHOWCLOSEBTNPOS=11;vPIPPlayer.LINKIDPOS=12;vPIPPlayer.WIDTH=320;vPIPPlayer.HEIGHT=260;vPIPPlayer.AUTOSTART="true";vPIPPlayer.CONTROLLER="true";vPIPPlayer.NAME=""
vPIPPlayer.QUALITY="high"
vPIPPlayer.BGCOLOR="#FFFFFF";vPIPPlayer.FLV="false"
vPIPPlayer.REVERT="true";vPIPPlayer.SHOWCLOSEBTN="true";vPIPPlayer.FLVPLAYER450x340="cirneViewer450x340-025c.swf";vPIPPlayer.FLVPLAYER320x300="cirneViewer320x300-025c.swf";vPIPPlayer.WORKINGSAFARIBUILD=420;var vpipPlayerRef;var vPIPThickBoxCloseItem="close";
function vPIPPlayer(_oLink,_sParams,_sFlashVars,_sThickBox,_sJump){this.setStartup(_oLink,_sParams,_sFlashVars,_sThickBox,_sJump);this.aDIVs=new Array();this.iInitiator=0;this.vPIPpath=this.getvPIPPath()}
vPIPPlayer.prototype.setStartup=function(_oLink,_sParams,_sFlashVars,_sThickBox,_sJump){this.oLink=_oLink;this.sParams=_sParams;this.sFlashVars=_sFlashVars;this.sThickBox=_sThickBox;this.sJump=_sJump}
vPIPPlayer.prototype.init=function(){this.oDiv=this.oLink.parentNode;while(this.oDiv!=undefined&&this.oDiv!=null&&this.oDiv.nodeName.toLowerCase()!="div"&&(vPIPPlayer.findAttribute(this.oDiv,"class")==null||vPIPPlayer.findAttribute(this.oDiv,"class").toLowerCase()!="hvlog")){this.oDiv=this.oDiv.parentNode}
if(this.oDiv==undefined||this.oDiv==null||this.oDiv.nodeName.toLowerCase()!="div"||vPIPPlayer.findAttribute(this.oDiv,"class")==null||vPIPPlayer.findAttribute(this.oDiv,"class").toLowerCase()!="hvlog"){this.oDiv=this.constructDiv(this.oLink);if(this.oDiv!=undefined&&this.oDiv!=null&&this.oDiv.nodeName.toLowerCase()=="div"&&vPIPPlayer.findAttribute(this.oDiv,"class")!=null&&vPIPPlayer.findAttribute(this.oDiv,"class").toLowerCase()=="hvlog"){this.oLink.parentNode.replaceChild(this.oDiv,this.oLink);this.oLink=this.oDiv.firstChild}}
if(this.oDiv==undefined||this.oDiv==null||this.oDiv.nodeName.toLowerCase()!="div"||vPIPPlayer.findAttribute(this.oDiv,"class")==null||vPIPPlayer.findAttribute(this.oDiv,"class").toLowerCase()!="hvlog")
this.byDivExists=false;else
this.byDivExists=true;if(this.byDivExists){var byDivFound=false;this.iNextPos=this.findDIV(this.oDiv);if(this.iNextPos==-1)
this.iNextPos=this.aDIVs.length;else
byDivFound=true;this.sLinkid="";this.sHREF=vPIPPlayer.toAlphaNum(this.oLink.href,"~");if(!byDivFound){this.oDiv.setAttribute("id","vPIP"+this.iNextPos);this.sOnClick=vPIPPlayer.toAlphaNum(this.oLink.onclick.toString());this.sLinkid="vPIPMovie"+this.iInitiator;this.oLink.setAttribute("id",this.sLinkid);this.aDIVs[this.iNextPos]=new Array(3);this.aDIVs[this.iNextPos][vPIPPlayer.DIVPOS]=this.oDiv;this.aDIVs[this.iNextPos][vPIPPlayer.DIVIDPOS]="vPIP"+this.iNextPos;this.aDIVs[this.iNextPos][3]=new Array(vPIPPlayer.LINKIDPOS+1);this.aDIVs[this.iNextPos][3][vPIPPlayer.OPENPOS]=false;this.aDIVs[this.iNextPos][3][vPIPPlayer.HREFPOS]=this.sHREF;this.aDIVs[this.iNextPos][3][vPIPPlayer.LINKIDPOS]=parseInt(this.sLinkid.substring(9));this.iInitiator++}
else{this.byLinkFound=false;this.iNextLinkPos=-1;this.sLinkid=this.oLink.id;if(this.sLinkid!=undefined&&this.sLinkid!=null&&this.sLinkid.length>9){this.iLinkid=parseInt(this.sLinkid.substring(9));this.iNextLinkPos=this.findLinkInDiv(this.aDIVs[this.iNextPos],this.iLinkid);if(this.iNextLinkPos<3)
this.iNextLinkPos=3;else
this.byLinkFound=true}
else{this.iNextLinkPos=this.aDIVs[this.iNextPos].length;if(this.iNextLinkPos<3)
this.iNextLinkPos=3;this.sLinkid="vPIPMovie"+this.iInitiator;this.oLink.setAttribute("id",this.sLinkid);this.iInitiator++}
if(!this.byLinkFound){this.aDIVs[this.iNextPos][this.iNextLinkPos]=new Array(vPIPPlayer.LINKIDPOS+1);this.aDIVs[this.iNextPos][this.iNextLinkPos][vPIPPlayer.OPENPOS]=false;this.aDIVs[this.iNextPos][this.iNextLinkPos][vPIPPlayer.HREFPOS]=this.sHREF;this.aDIVs[this.iNextPos][this.iNextLinkPos][vPIPPlayer.LINKIDPOS]=parseInt(this.sLinkid.substring(9))}}}
return true}
vPIPPlayer.prototype.show=function(){this.iWidth=vPIPPlayer.WIDTH;this.iHeight=vPIPPlayer.HEIGHT;this.byAutostart=vPIPPlayer.AUTOSTART;this.byController=vPIPPlayer.CONTROLLER;this.sName=vPIPPlayer.NAME;this.sQuality=vPIPPlayer.QUALITY;this.sBGColor=vPIPPlayer.BGCOLOR;this.byFLV=vPIPPlayer.FLV;this.byRevert=vPIPPlayer.REVERT;this.byShowCloseBtn=vPIPPlayer.SHOWCLOSEBTN;var iPos;if(this.byDivExists){if(this.oLink!=undefined&&this.oLink!=null&&this.oLink.nodeName.toLowerCase()=="a"){this.iCurrDIVid=parseInt(this.oDiv.id.substring(4));this.iCurrLinkid=parseInt(this.oLink.id.substring(9));this.iCurrLink=this.findLinkID(this.aDIVs[this.iCurrDIVid],this.iCurrLinkid);this.sHREF=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.HREFPOS];if(this.sHREF==undefined||this.sHREF==null)
this.sHREF=this.oLink.href;if(this.sHREF!=undefined&&this.sHREF!=null){var movieType=vPIPPlayer.isMovieFile(this.oLink);this.sMimeType=movieType.sMimeType;this.sType=movieType.sType;this.sMediaFormat=movieType.sMediaFormat;this.sFileExt=movieType.sFileExt;if(this.sMediaFormat=="flash"){this.iWidth=vPIPPlayer.FLASHWIDTH;this.iHeight=vPIPPlayer.FLASHHEIGHT;if(this.sFileExt==".flv")
this.byFLV="true"}
var byInitArray=true;if(this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.WIDTHPOS]!=undefined){this.iWidth=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.WIDTHPOS];this.iHeight=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.HEIGHTPOS];this.byAutostart=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.AUTOSTARTPOS];this.byController=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.CONTROLLERPOS];this.sName=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.NAMEPOS];this.sQuality=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.QUALITYPOS];this.sBGColor=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.BGCOLORPOS];this.byFLV=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.FLVPOS];this.byRevert=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.REVERTPOS];this.byShowCloseBtn=this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.SHOWCLOSEBTNPOS];byInitArray=false}
else{if(this.sParams!=undefined&&this.sParams!=null){var aParams=this.sParams.split(",");var aMatch;for(var i=0;i<aParams.length;i++){if(aMatch=aParams[i].match(/(width\s*=\s*)(\d*)/i)){this.iWidth=aMatch[2]}
else if(aMatch=aParams[i].match(/(height\s*=\s*)(\d*)/i)){this.iHeight=aMatch[2]}
else if(aMatch=aParams[i].match(/(autostart\s*=\s*)(\w*)/i)){this.byAutostart=(aMatch[2].toLowerCase()==="true")}
else if(aMatch=aParams[i].match(/(controller\s*=\s*)(\w*)/i)){this.byController=(aMatch[2].toLowerCase()==="true")}
else if(aMatch=aParams[i].match(/(name\s*=\s*)(\w*)/i)){this.sName=aMatch[2]}
else if(aMatch=aParams[i].match(/(quality\s*=\s*)(\w*)/i)){this.sQuality=aMatch[2]}
else if(aMatch=aParams[i].match(/(bgcolor\s*=\s*)(\w*)/i)){this.sBGColor=aMatch[2]}
else if(aMatch=aParams[i].match(/(flv\s*=\s*)(\w*)/i)){this.byFLV=aMatch[2]}
else if(aMatch=aParams[i].match(/(revert\s*=\s*)(\w*)/i)){this.byRevert=(aMatch[2].toLowerCase()==="true")}
else if(aMatch=aParams[i].match(/(showclose\s*=\s*)(\w*)/i)){this.byShowCloseBtn=(aMatch[2].toLowerCase()==="true")}}}}
this.closeThisDiv(this.aDIVs,this.iCurrDIVid);var sInnerHTML=this.oDiv.innerHTML;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.OPENPOS]=false;if(this.sName==undefined||this.sName==null||this.sName==""){this.sName="Embed"+this.iCurrLinkid}
if(byInitArray){this.aDIVs[this.iCurrDIVid][vPIPPlayer.ORIGHTMLPOS]=sInnerHTML;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.WIDTHPOS]=this.iWidth;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.HEIGHTPOS]=this.iHeight;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.AUTOSTARTPOS]=this.byAutostart;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.CONTROLLERPOS]=this.byController;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.NAMEPOS]=this.sName;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.QUALITYPOS]=this.sQuality;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.BGCOLORPOS]=this.sBGColor;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.FLVPOS]=this.byFLV;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.REVERTPOS]=this.byRevert;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.SHOWCLOSEBTNPOS]=this.byShowCloseBtn}
this.sReplace="";if(this.sType=="video"||this.sType=="application"){if(this.sMediaFormat=="quicktime"){this.sReplace="<object class=\"vPIPEmbed\" width=\""+this.iWidth+"\" height=\""+this.iHeight+"\" id=\""+this.sName+"\" classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\" ";if(this.sMimeType=="smil")
this.sReplace+="codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\"> <param name=\"src\" value=\""+this.vPIPpath+"InitSMIL.mov\"><param name=\"qtsrc\" value=\""+this.sHREF;else
this.sReplace+="codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\"> <param name=\"src\" value=\""+this.sHREF;this.sReplace+="\"><param name=\"autoplay\" value=\""+this.byAutostart+"\"><param name='scale' value='tofit' /><param name=\"controller\" value=\"";if(this.sMimeType=="smil")
this.sReplace+=this.byController+"\"><embed src=\""+this.vPIPpath+"InitSMIL.mov\" qtsrc=\""+this.sHREF+"\" width=\""+this.iWidth+"\" height=\""+this.iHeight;else
this.sReplace+=this.byController+"\"><embed src=\""+this.sHREF+"\" width=\""+this.iWidth+"\" height=\""+this.iHeight;this.sReplace+="\" name=\""+this.sName+"\" autoplay=\""+this.byAutostart+"\" controller=\""+this.byController;this.sReplace+="\"  scale=\"tofit\" pluginspage=\"http://www.apple.com/quicktime/download/\"></embed></object>"}
else if(this.sMediaFormat=="windowsmedia"){this.sReplace="<OBJECT class=\"vPIPEmbed\" CLASSID='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'  ";this.sReplace+="codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701' ";this.sReplace+="standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'  ";this.sReplace+="width='"+this.iWidth+"' height='"+this.iHeight+"' id='"+this.sName+"' >";this.sReplace+="<PARAM NAME='fileName' VALUE='"+this.sHREF+"' ><PARAM NAME='autoStart' VALUE='"+this.byAutostart;this.sReplace+="'><PARAM NAME='showControls' VALUE='"+this.byController+"'>";this.sReplace+="<EMBED type='application/x-mplayer2' pluginspage='http://www.microsoft.com/Windows/MediaPlayer/' id='";this.sReplace+=this.sName+"' name='"+this.sName+"' showcontrols='"+this.byController+"' width='"+this.iWidth+"' height='";this.sReplace+=this.iHeight+"' src='"+this.sHREF+"' autostart='"+this.byAutostart+"'></EMBED></OBJECT>"}
else if(this.sMediaFormat=="flash"){this.sReplace="<OBJECT class=\"vPIPEmbed\" classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' ";this.sReplace+="codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0' ";this.sReplace+="WIDTH='"+this.iWidth+"' HEIGHT='"+this.iHeight+"' id='"+this.sName+"' >";this.sReplace+="<PARAM NAME='movie' VALUE='";if(this.byFLV=="true"){if(Number(this.iWidth)>320)
this.sFLVPlayer=this.vPIPpath+vPIPPlayer.FLVPLAYER450x340;else
this.sFLVPlayer=this.vPIPpath+vPIPPlayer.FLVPLAYER320x300;var sJumpFlashVars="";if(this.sJump!=null&&this.sJump.length>0){var aParams=this.sJump.split(",");var aMatch;for(var i=0;i<aParams.length;i++){if(aMatch=aParams[i].match(/(\w*)(\s*=\s*)(.*)/))
sJumpFlashVars+="&"+aMatch[1]+"="+aMatch[3]}}
this.sReplace+=this.sFLVPlayer+"'> <PARAM NAME='quality' VALUE='"+this.sQuality+"' > <PARAM NAME='bgcolor' VALUE='"+this.sBGColor+"'> ";this.sReplace+="<PARAM NAME='FlashVars' VALUE='flvURL="+this.sHREF+"&cvhome="+this.vPIPpath;if(this.sFlashVars!=undefined&&this.sFlashVars!=null&&this.sFlashVars.length>0)
this.sReplace+="&"+this.sFlashVars;this.sReplace+=sJumpFlashVars+"' > <EMBED src='"+this.sFLVPlayer+"' quality='"+this.sQuality+"' bgcolor='"+this.sBGColor+"' width='"+this.iWidth+"' height='"+this.iHeight+"' ";this.sReplace+="FlashVars='flvURL="+this.sHREF+"&cvhome="+this.vPIPpath;if(this.sFlashVars!=undefined&&this.sFlashVars!=null&&this.sFlashVars.length>0){this.sReplace+="&"+this.sFlashVars}
this.sReplace+=sJumpFlashVars+"' NAME='' ALIGN='' TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'> "}
else{this.sReplace+=this.sHREF+"'> <PARAM NAME='quality' VALUE='"+this.sQuality+"' > <PARAM NAME='bgcolor' VALUE='"+this.sBGColor+"'> ";if(this.sFlashVars!=undefined&&this.sFlashVars!=null&&this.sFlashVars.length>0)
this.sReplace+="<PARAM NAME='FlashVars' VALUE='"+this.sFlashVars+"' > ";this.sReplace+="<EMBED src='"+this.sHREF+"' quality='"+this.sQuality+"' bgcolor='"+this.sBGColor+"' width='"+this.iWidth+"' height='"+this.iHeight+"' ";if(this.sFlashVars!=undefined&&this.sFlashVars!=null&&this.sFlashVars.length>0)
this.sReplace+="FlashVars='"+this.sFlashVars+"' ";this.sReplace+="NAME='' ALIGN='' TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'> "}
this.sReplace+="</EMBED> </OBJECT>"}
if(this.sReplace.length>0){var sUserAgent=navigator.userAgent;this.bySafari=sUserAgent.indexOf('Safari')>-1;this.byOpera=sUserAgent.indexOf('Opera')>-1;this.byIE7=sUserAgent.indexOf("MSIE 7")>-1;this.byIE6=sUserAgent.indexOf("MSIE 6")>-1;this.nSafariBuild=-1;if(this.bySafari){this.nSafariBuild=Number(sUserAgent.substring(sUserAgent.indexOf('Safari')+7))}
this.byThickBox=false;if(this.sThickBox!=undefined&&this.sThickBox!=null&&this.sThickBox.length>0&&!this.bySafari&&!this.byIE6){var aParams=this.sThickBox.split(",");var aMatch;var sThickBoxActive="true";var sThickBoxCaption="";var sThickBoxBackground="#E1E1E1";for(var i=0;i<aParams.length;i++){if(aMatch=aParams[i].match(/(active\s*=\s*)(\w*)/i)){sThickBoxActive=aMatch[2]}
else if(aMatch=aParams[i].match(/(caption\s*=\s*)(.*)/i)){sThickBoxCaption=aMatch[2]}
else if(aMatch=aParams[i].match(/(background\s*=\s*)(\d*)/i)){sThickBoxBackground=aMatch[2]}}
if(sThickBoxActive.toLowerCase()=="true")
this.byThickBox=true}
if(this.byThickBox){this.revert(this.aDIVs);this.thickBox_show(sThickBoxCaption,this.sReplace,Number(this.iWidth),Number(this.iHeight),sThickBoxBackground)}
else{if(this.byShowCloseBtn){this.sReplace="<div style=\"padding-right: "+(this.iWidth-49)+"px\" ><a href=\"javascript: vPIPClose("+this.iCurrDIVid+", "+this.iCurrLink+");\" title=\"Close Movie\" onMouseOver=\"document.vPIPImage"+(this.iCurrDIVid * 10)+this.iCurrLink+".src='"+this.vPIPpath+"close_hover.gif';\" onMouseOut=\"document.vPIPImage"+(this.iCurrDIVid * 10)+this.iCurrLink+".src='"+this.vPIPpath+"close_grey.gif';\" style=\" background: transparent;\" ><img src=\""+this.vPIPpath+"close_grey.gif\" name=\"vPIPImage"+(this.iCurrDIVid * 10)+this.iCurrLink+"\" style=\"border: none;\"  /></a></div>"+this.sReplace}
if(!(this.bySafari&&this.nSafariBuild<vPIPPlayer.WORKINGSAFARIBUILD)){this.revert(this.aDIVs)}
this.sReplace=this.addOutsideTarget(sInnerHTML,this.sReplace);this.oDiv.innerHTML=this.sReplace;this.aDIVs[this.iCurrDIVid][this.iCurrLink][vPIPPlayer.OPENPOS]=true}}}
else{if(this.sMimeType!=undefined&&this.sMimeType!=null){setTimeout("Unsuported mime type: \""+this.sMimeType+"\".",0);if(this.oLink.href.toLowerCase().indexOf("http://")>-1)
window.open(this.oLink.href,"_self");else if(this.sHREF!=undefined&&this.sHREF!=null)
window.open(this.sHREF,"_self")}
else{setTimeout("Unsuported file extension: \""+this.sFileExt+"\".",0);if(this.oLink.href.toLowerCase().indexOf("http://")>-1)
window.open(this.oLink.href,"_self");else if(this.sHREF!=undefined&&this.sHREF!=null)
window.open(this.sHREF,"_self")}}}
else{setTimeout("Missing href=\"...\" attribute.",0);if(this.oLink.href.toLowerCase().indexOf("http://")>-1)
window.open(this.oLink.href,"_self");else if(this.sHREF!=undefined&&this.sHREF!=null)
window.open(this.sHREF,"_self")}}
else{setTimeout("video Playing In Place cannot execute because the link is not identified.",0);if(this.sHREF!=undefined&&this.sHREF!=null)
window.open(this.sHREF,"_self")}}
else{setTimeout("video Playing In Place cannot execute because the hVlog DIV is not identified.",0);if(this.oLink.href.toLowerCase().indexOf("http://")>-1)
window.open(this.oLink.href,"_self");else if(this.sHREF!=undefined&&this.sHREF!=null)
window.open(this.sHREF,"_self")}
return}
function MovieType(_MimeType,_sType,_sMediaFormat,_sFileExt){this.sMimeType=_MimeType;this.sType=_sType;this.sMediaFormat=_sMediaFormat;this.sFileExt=_sFileExt}
vPIPPlayer.isMovieFile=function(oLink){var movieType=null;if(oLink!=undefined&&oLink!=null&&oLink.nodeName.toLowerCase()=="a"){var sMimeType=oLink.type;if(sMimeType!=undefined&&sMimeType!=null&&sMimeType.length>0){var iPos=sMimeType.search(/\//);if(iPos>-1)
sMimeType=sMimeType.substring(iPos+1);else
sMimeType=null}
var sType="false";var sMediaFormat="";var sFileExt;var sHREF=vPIPPlayer.toAlphaNum(oLink.href,"~");var iURLGET=sHREF.indexOf('?');if(iURLGET>-1){var sHREFFile=sHREF.substring(0,iURLGET);sFileExt=sHREFFile.substring(sHREFFile.lastIndexOf('.'),iURLGET).toLowerCase()}
else{sFileExt=sHREF.substring(sHREF.lastIndexOf('.'),sHREF.length).toLowerCase()}
if(sMimeType!=undefined&&sMimeType!=null&&sMimeType.length>0){switch(sMimeType.toLowerCase()){case "quicktime":case "mp4":case "x-m4v":case "x-mp3":case "mp3":case "mpeg":case "smil":case "3gpp":sMediaFormat="quicktime";sType="video";break;case "x-msvideo":case "x-ms-wmv":case "x-ms-asf":case "x-ms-wma":sMediaFormat="windowsmedia";sType="video";break;case "x-shockwave-flash":case "x-flv":sMediaFormat="flash";sType="application";break}}
else{sMimeType="";switch(sFileExt.toLowerCase()){case ".mov":case ".mp4":case ".m4v":case ".mp3":case ".3gp":sMediaFormat="quicktime";sType="video";break;case ".smi":case ".smil":sMediaFormat="quicktime";sType="video";sMimeType="smil";break;case ".avi":case ".wmv":case ".asf":case ".wma":sMediaFormat="windowsmedia";sType="video";break;case ".swf":case ".flv":sMediaFormat="flash";sType="application";break}}
movieType=new MovieType(sMimeType,sType,sMediaFormat,sFileExt)}
return movieType}
vPIPPlayer.prototype.revert=function(aDIVs){for(var j=0;j<aDIVs.length;j++){for(var k=vPIPPlayer.LINKSARRAYPOS;k<aDIVs[j].length;k++){if(aDIVs[j][k][vPIPPlayer.REVERTPOS]){aDIVs[j][vPIPPlayer.DIVPOS].innerHTML=aDIVs[j][vPIPPlayer.ORIGHTMLPOS];aDIVs[j][k][vPIPPlayer.OPENPOS]=false}}}}
vPIPPlayer.prototype.closeThisDiv=function(aDIVs,iCurrDIVid){for(var k=vPIPPlayer.LINKSARRAYPOS;k<aDIVs[iCurrDIVid].length;k++){if(aDIVs[iCurrDIVid][k][vPIPPlayer.REVERTPOS]){aDIVs[iCurrDIVid][vPIPPlayer.DIVPOS].innerHTML=aDIVs[iCurrDIVid][vPIPPlayer.ORIGHTMLPOS];aDIVs[iCurrDIVid][k][vPIPPlayer.OPENPOS]=false}}}
vPIPPlayer.prototype.constructDiv=function(oLink){var oDiv=document.createElement("div");oDiv.setAttribute("class","hVlog");var oReplaceLink=document.createElement("a");oReplaceLink.setAttribute("href",oLink.href);if(oLink.type!=""){oReplaceLink.setAttribute("type",oLink.type)}
if(oLink.name!=""){oReplaceLink.setAttribute("name",oLink.type)}
if(oLink.href!=""){oReplaceLink.setAttribute("href",oLink.href)}
if(oLink.rel!=""){oReplaceLink.setAttribute("rel",oLink.rel)}
if(oLink.onclick.toString()!=""){oReplaceLink.onclick=oLink.onclick}
if(oLink.hasChildNodes()){var oLinkChildren=oLink.childNodes;for(var i=0;i<oLinkChildren.length;i++){oReplaceLink.appendChild(oLinkChildren[i])}}
if(oLink.innerHTML!=""){oReplaceLink.innerHTML=oLink.innerHTML}
oDiv.appendChild(oReplaceLink);return oDiv}
vPIPPlayer.prototype.addOutsideTarget=function(sInnerHTML,sRevert){var iTargetStart=sInnerHTML.toLowerCase().indexOf("hvlogtarget");if(iTargetStart>-1){iTargetStart=sInnerHTML.toLowerCase().substring(0,iTargetStart).lastIndexOf("<");var iTargetEnd=sInnerHTML.toLowerCase().indexOf("</a",iTargetStart);iTargetEnd=sInnerHTML.toLowerCase().indexOf(">",iTargetEnd);if(iTargetEnd>-1){var sPrior=sInnerHTML.substring(0,iTargetStart);var sAfter=sInnerHTML.substring(iTargetEnd+1);sRevert=sPrior+sRevert+sAfter}}
return sRevert}
function vPIPClose(sDivLoc,sLinkLoc){var sUserAgent=navigator.userAgent;var bySafari=sUserAgent.indexOf('Safari')>-1;var nSafariBuild=-1;if(bySafari){nSafariBuild=Number(sUserAgent.substring(sUserAgent.indexOf('Safari')+7))}
if(bySafari&&nSafariBuild<vPIPPlayer.WORKINGSAFARIBUILD){document.location.reload()}
else{if(Number(sDivLoc)!=NaN&&Number(sLinkLoc)!=NaN){var iDivLoc=Number(sDivLoc);var iLinkLoc=Number(sLinkLoc);vpipPlayerRef.aDIVs[iDivLoc][vPIPPlayer.DIVPOS].innerHTML=vpipPlayerRef.aDIVs[iDivLoc][vPIPPlayer.ORIGHTMLPOS];vpipPlayerRef.aDIVs[iDivLoc][iLinkLoc][vPIPPlayer.OPENPOS]=false;if(typeof vPIPIt=="function"){vPIPIt()}}}}
vPIPPlayer.prototype.findDIV=function(oDiv){var i;var iFound=-1;if(oDiv.id!=undefined&&oDiv.id!=null&&oDiv.id.length>0){for(i=0;i<this.aDIVs.length;i++){if(this.aDIVs[i][vPIPPlayer.DIVIDPOS]===this.oDiv.id){iFound=i;break}}}
return iFound}
vPIPPlayer.prototype.findLinkID=function(aDIV,iCurrLinkid){var iFound=-1;for(var i=3;i<aDIV.length;i++){if(aDIV[i][vPIPPlayer.LINKIDPOS]==iCurrLinkid){iFound=i;break}}
return iFound}
vPIPPlayer.prototype.findLinkInDiv=function(aDiv,iLinkid){var iLinkPosInDiv=-1;for(var i=3;i<aDiv.length;i++){if(aDiv[i][vPIPPlayer.LINKIDPOS]!=undefined){if(aDiv[i][vPIPPlayer.LINKIDPOS]==iLinkid){iLinkPosInDiv=i;break}}}
return iLinkPosInDiv}
vPIPPlayer.prototype.addEvent=function(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,false);return true} else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r} else{return false}}
vPIPPlayer.prototype.getvPIPPath=function(){var scripts=document.getElementsByTagName("script");var src;var index;var sVPIPpath="";for(var i=0;i<scripts.length;i++){src=scripts[i].getAttribute("src");if(src!=undefined&&src!=null){index=src.search(/vpip.js/i);if(index>-1){sVPIPpath=src.substring(0,index);break}}}
return sVPIPpath}
vPIPPlayer.findAttribute=function(oElement,sAttribute){var oValue=null;var attrs=oElement.attributes;if(attrs!=undefined&&attrs!=null){for(var i=attrs.length-1;i>=0;i--){if(attrs[i].name.toLocaleLowerCase()==sAttribute.toLocaleLowerCase()){oValue=attrs[i].value;break}}}
return oValue}
vPIPPlayer.toAlphaNum=function(sString,sAllowed){var i;var sNewString="";if(sString==undefined||sString==null){return sString}
else{for(i=0;i<sString.length;i++){ch=sString.charAt(i);if(ch>=" "&&ch<="z"){sNewString+=sString.charAt(i)}
else if(sAllowed!=undefined&&sAllowed!=null&&sAllowed.indexOf(ch)>-1){sNewString+=sString.charAt(i)}}
return sNewString}}
vPIPPlayer.prototype.thickBox_show=function(sCaption,sEmbed,vPIP_TB_WIDTH,vPIP_TB_HEIGHT,sBackground){try{jQuery("body").append("<div id='vPIP_TB_overlay'></div><div id='vPIP_TB_window'></div>");jQuery("#vPIP_TB_overlay").click(this.thickBox_remove);jQuery(window).scroll(this.thickBox_position);if(sCaption==undefined||sCaption==null)
sCaption='';vPIP_TB_WIDTH+=30;vPIP_TB_HEIGHT+=60;var sEntry="<div id='vPIP_TB_caption'>"+sCaption+"</div><div id='vPIP_TB_closeWindow'><a href='javascript: none' id='vPIP_TB_closeWindowButton'>"+vPIPThickBoxCloseItem+"</a></div><div id='vPIP_Object'>"+sEmbed+"</div>";jQuery("#vPIP_TB_window").html(sEntry);document.getElementById("vPIP_TB_window").style.backgroundColor=sBackground;document.getElementById("vPIP_TB_window").style.backgroundColor=sBackground;jQuery("#vPIP_TB_closeWindowButton").click(this.thickBox_remove);this.thickBox_position(vPIP_TB_WIDTH,vPIP_TB_HEIGHT);jQuery("#vPIP_TB_window").show()} catch(e){setTimeout(e,0)}}
vPIPPlayer.prototype.thickBox_remove=function(){jQuery("#vPIP_TB_window").html("");jQuery("#vPIP_TB_window").fadeOut("fast",function(){jQuery('#vPIP_TB_window,#vPIP_TB_overlay').remove()});if(typeof vPIPIt=="function"){vPIPIt()}
return false}
vPIPPlayer.prototype.thickBox_position=function(vPIP_TB_WIDTH,vPIP_TB_HEIGHT){var de=document.documentElement;var w=self.innerWidth||(de&&de.clientWidth)||document.body.clientWidth;var h=self.innerHeight||(de&&de.clientHeight)||document.body.clientHeight;if(window.innerHeight&&window.scrollMaxY){yScroll=window.innerHeight+window.scrollMaxY} else if(document.body.scrollHeight>document.body.offsetHeight){yScroll=document.body.scrollHeight} else{yScroll=document.body.offsetHeight}
jQuery("#vPIP_TB_window").css({width:vPIP_TB_WIDTH+"px",height:vPIP_TB_HEIGHT+"px",left:((w-vPIP_TB_WIDTH)/2)+"px",top:((h-vPIP_TB_HEIGHT)/2)+"px"});jQuery("#vPIP_TB_overlay").css("height",yScroll+"px")}


/* - jquery.js - */
/*
 * jQuery - New Wave Javascript
 *
 * Copyright (c) 2006 John Resig (jquery.com)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * $Date: 2006-07-01 10:05:50 -0400 (Sat, 01 Jul 2006) $
 * $Rev: 110 $
 */

// Global undefined variable
window.undefined = window.undefined;

/**
 * Create a new jQuery Object
 * @constructor
 */
function jQuery(a,c) {
	// Watch for when a jQuery object is passed in as an arg
	if ( a && a.jquery )
		return a;
	
	// If the context is global, return a new object
	if ( window == this )
		return new jQuery(a,c);
	
	// Find the matching elements and save them for later
	this.cur = jQuery.Select(
		a || jQuery.context || document,
		c && c.jquery && c.get(0) || c
	);
}

/**
 * The jQuery query object.
 */
if ( !window.$ )
  var $ = jQuery;

/*
 * Handle support for overriding other $() functions. Way too many libraries
 * provide this function to simply ignore it and overwrite it.
 */
else
  var $ = function(a,c) {
    // Check to see if this is a possible collision case
    if ( !c && a.constructor == String && 
      
        // Make sure that the expression is a colliding one
        !/[^a-zA-Z0-9_-]/.test(a) &&
        
        // and that there are no elements that match it
        // (this is the one truly ambiguous case)
        !document.getElementsByTagName(a).length ) {
          
      // Only return the element if it's  found
      var obj = document.getElementById(a);
      if ( obj ) return obj;
      
    }
    
    return jQuery(a,c);
  };

jQuery.fn = jQuery.prototype = {
	/**
	 * The current SVN version of jQuery.
	 *
	 * @private
	 * @type String
	 */
	jquery: "$Rev: 110 $",
	
	/**
	 * The number of elements currently matched.
	 *
	 * @type Number
	 */
	size: function() {
		return this.get().length;
	},
	
	/**
	 * Access the elements matched. If a number is provided,
	 * the Nth element is returned, otherwise, an array of all
	 * matched items is returned.
	 *
	 * @type Array,DOMElement
	 */
	get: function(num) {
		return num == undefined ? this.cur : this.cur[num];
	},
	
	each: function(f) {
		for ( var i = 0; i < this.size(); i++ )
			f.apply( this.get(i), [i] );
		return this;
	},
	set: function(a,b) {
		return this.each(function(){
			if ( b === undefined )
				for ( var j in a )
					jQuery.attr(this,j,a[j]);
			else
				jQuery.attr(this,a,b);
		});
	},
	html: function(h) {
		return h == undefined && this.size() ?
			this.get(0).innerHTML : this.set( "innerHTML", h );
	},
	val: function(h) {
		return h == undefined && this.size() ?
			this.get(0).value : this.set( "value", h );
	},
	text: function(e) {
		e = e || this.get();
		var t = "";
		for ( var j = 0; j < e.length; j++ )
			for ( var i = 0; i < e[j].childNodes.length; i++ )
				t += e[j].childNodes[i].nodeType != 1 ?
					e[j].childNodes[i].nodeValue :
					jQuery.fn.text(e[j].childNodes[i].childNodes);
		return t;
	},
	
	css: function(a,b) {
		return a.constructor != String || b ?
			this.each(function(){
				if ( b === undefined )
					for ( var j in a )
						jQuery.attr(this.style,j,a[j]);
				else
					jQuery.attr(this.style,a,b);
			}) : jQuery.css( this.get(0), a );
	},
	toggle: function() {
		return this.each(function(){
			var d = jQuery.css(this,"display");
			if ( !d || d == "none" )
				$(this).show();
			else
				$(this).hide();
		});
	},
	show: function() {
		return this.each(function(){
			this.style.display = this.oldblock ? this.oldblock : "";
			if ( jQuery.css(this,"display") == "none" )
				this.style.display = "block";
		});
	},
	hide: function() {
		return this.each(function(){
			this.oldblock = jQuery.css(this,"display");
			if ( this.oldblock == "none" )
				this.oldblock = "block";
			this.style.display = "none";
		});
	},
	addClass: function(c) {
		return this.each(function(){
			jQuery.className.add(this,c);
		});
	},
	removeClass: function(c) {
		return this.each(function(){
			jQuery.className.remove(this,c);
		});
	},

	toggleClass: function(c) {
		return this.each(function(){
			if (jQuery.hasWord(this,c))
				jQuery.className.remove(this,c);
			else
				jQuery.className.add(this,c);
		});
	},
	remove: function() {
		this.each(function(){this.parentNode.removeChild( this );});
		return this.pushStack( [] );
	},
	
	wrap: function() {
		var a = jQuery.clean(arguments);
		return this.each(function(){
			var b = a[0].cloneNode(true);
			this.parentNode.insertBefore( b, this );
			while ( b.firstChild )
				b = b.firstChild;
			b.appendChild( this );
		});
	},
	
	append: function() {
		var clone = this.size() > 1;
		var a = jQuery.clean(arguments);
		return this.domManip(function(){
			for ( var i = 0; i < a.length; i++ )
				this.appendChild( clone ? a[i].cloneNode(true) : a[i] );
		});
	},
	
	appendTo: function() {
		var a = arguments;
		return this.each(function(){
			for ( var i = 0; i < a.length; i++ )
				$(a[i]).append( this );
		});
	},
	
	prepend: function() {
		var clone = this.size() > 1;
		var a = jQuery.clean(arguments);
		return this.domManip(function(){
			for ( var i = a.length - 1; i >= 0; i-- )
				this.insertBefore( clone ? a[i].cloneNode(true) : a[i], this.firstChild );
		});
	},
	
	before: function() {
		var clone = this.size() > 1;
		var a = jQuery.clean(arguments);
		return this.each(function(){
			for ( var i = 0; i < a.length; i++ )
				this.parentNode.insertBefore( clone ? a[i].cloneNode(true) : a[i], this );
		});
	},
	
	after: function() {
		var clone = this.size() > 1;
		var a = jQuery.clean(arguments);
		return this.each(function(){
			for ( var i = a.length - 1; i >= 0; i-- )
				this.parentNode.insertBefore( clone ? a[i].cloneNode(true) : a[i], this.nextSibling );
		});
	},
	
	empty: function() {
		return this.each(function(){
			while ( this.firstChild )
				this.removeChild( this.firstChild );
		});
	},
	
	bind: function(t,f) {
		return this.each(function(){jQuery.event.add(this,t,f);});
	},
	unbind: function(t,f) {
		return this.each(function(){jQuery.event.remove(this,t,f);});
	},
	trigger: function(t) {
		return this.each(function(){jQuery.event.trigger(this,t);});
	},
	
	pushStack: function(a) {
		if ( !this.stack ) this.stack = [];
		this.stack.unshift( this.cur );
		if ( a ) this.cur = a;
		return this;
	},
	
	find: function(t) {
		var ret = [];
		this.each(function(){
			ret = jQuery.merge( ret, jQuery.Select(t,this) );
		});
		this.pushStack( ret );
		return this;
	},
	
	end: function() {
		this.cur = this.stack.shift();
		return this;
	},
	
	parent: function(a) {
		var ret = jQuery.map(this.cur,"d.parentNode");
		if ( a ) ret = jQuery.filter(a,ret).r;
		return this.pushStack(ret);
	},
	
	parents: function(a) {
		var ret = jQuery.map(this.cur,jQuery.parents);
		if ( a ) ret = jQuery.filter(a,ret).r;
		return this.pushStack(ret);
	},
	
	siblings: function(a) {
		// Incorrect, need to exclude current element
		var ret = jQuery.map(this.cur,jQuery.sibling);
		if ( a ) ret = jQuery.filter(a,ret).r;
		return this.pushStack(ret);
	},
	
	filter: function(t) {
		return this.pushStack( jQuery.filter(t,this.cur).r );
	},
	not: function(t) {
		return this.pushStack( t.constructor == String ?
			jQuery.filter(t,this.cur,false).r :
			jQuery.grep(this.cur,function(a){ return a != t; }) );
	},
	add: function(t) {
		return this.pushStack( jQuery.merge( this.cur, t.constructor == String ?
			jQuery.Select(t) : t.constructor == Array ? t : [t] ) );
	},
	
	/**
	 * A wrapper function for each() to be used by append and prepend.
	 * Handles cases where you're trying to modify the inner contents of
	 * a table, when you actually need to work with the tbody.
	 *
	 * @member jQuery
	 * @param {String} expr The expression with which to filter
	 * @type Boolean
	 */
	is: function(expr) {
		return jQuery.filter(expr,this.cur).r.length > 0;
	},
	
	/**
	 * A wrapper function for each() to be used by append and prepend.
	 * Handles cases where you're trying to modify the inner contents of
	 * a table, when you actually need to work with the tbody.
	 *
	 * @private
	 * @member jQuery
	 * @param {Function} fn The function doing the DOM manipulation.
	 * @type jQuery
	 */
	domManip: function(fn){
		return this.each(function(){
			var obj = this;
			
			if ( this.nodeName == "TABLE" ) {
				var tbody = this.getElementsByTagName("tbody");

				if ( !tbody.length ) {
					obj = document.createElement("tbody");
					this.appendChild( obj );
				} else
					obj = tbody[0];
			}
	
			fn.apply( obj );
		});
	}
};

jQuery.className = {
	add: function(o,c){
		if (jQuery.hasWord(o,c)) return;
		o.className += ( o.className ? " " : "" ) + c;
	},
	remove: function(o,c){
		o.className = !c ? "" :
			o.className.replace(
				new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "");
	}
};

(function(){
	var b = navigator.userAgent.toLowerCase();

	// Figure out what browser is being used
	jQuery.browser =
		( /webkit/.test(b) && "safari" ) ||
		( /opera/.test(b) && "opera" ) ||
		( /msie/.test(b) && "msie" ) ||
		( !/compatible/.test(b) && "mozilla" ) ||
		"other";

	// Check to see if the W3C box model is being used
	jQuery.boxModel = ( jQuery.browser != "msie" || document.compatMode == "CSS1Compat" );
})();

jQuery.css = function(e,p) {
	// Adapted from Prototype 1.4.0
	if ( p == "height" || p == "width" ) {

		// Handle extra width/height provided by the W3C box model
		var ph = (!jQuery.boxModel ? 0 :
			jQuery.css(e,"paddingTop") + jQuery.css(e,"paddingBottom") +
			jQuery.css(e,"borderTopWidth") + jQuery.css(e,"borderBottomWidth")) || 0;

		var pw = (!jQuery.boxModel ? 0 :
			jQuery.css(e,"paddingLeft") + jQuery.css(e,"paddingRight") +
			jQuery.css(e,"borderLeftWidth") + jQuery.css(e,"borderRightWidth")) || 0;

		var oHeight, oWidth;

		if (jQuery.css(e,"display") != 'none') {
			oHeight = e.offsetHeight || parseInt(e.style.height) || 0;
			oWidth = e.offsetWidth || parseInt(e.style.width) || 0;
		} else {
			var els = e.style;
			var ov = els.visibility;
			var op = els.position;
			var od = els.display;
			els.visibility = "hidden";
			els.position = "absolute";
			els.display = "";
			oHeight = e.clientHeight || parseInt(e.style.height);
			oWidth = e.clientWidth || parseInt(e.style.width);
			els.display = od;
			els.position = op;
			els.visibility = ov;
		}

		return p == "height" ?
			(oHeight - ph < 0 ? 0 : oHeight - ph) :
			(oWidth - pw < 0 ? 0 : oWidth - pw);
	}
	
	var r;

	if (e.style[p])
		r = e.style[p];
 	else if (e.currentStyle)
		r = e.currentStyle[p];
	else if (document.defaultView && document.defaultView.getComputedStyle) {
		p = p.replace(/([A-Z])/g,"-$1").toLowerCase();
		var s = document.defaultView.getComputedStyle(e,"");
		r = s ? s.getPropertyValue(p) : null;
 	}
	
	return /top|right|left|bottom/i.test(p) ? parseFloat( r ) : r;
};

jQuery.clean = function(a) {
	var r = [];
	for ( var i = 0; i < a.length; i++ ) {
		if ( a[i].constructor == String ) {

			if ( !a[i].indexOf("<tr") ) {
				var tr = true;
				a[i] = "<table>" + a[i] + "</table>";
			} else if ( !a[i].indexOf("<td") || !a[i].indexOf("<th") ) {
				var td = true;
				a[i] = "<table><tbody><tr>" + a[i] + "</tr></tbody></table>";
			}

			var div = document.createElement("div");
			div.innerHTML = a[i];

			if ( tr || td ) {
				div = div.firstChild.firstChild;
				if ( td ) div = div.firstChild;
			}

			for ( var j = 0; j < div.childNodes.length; j++ )
				r[r.length] = div.childNodes[j];
		} else if ( a[i].length && !a[i].nodeType )
			for ( var k = 0; k < a[i].length; k++ )
				r[r.length] = a[i][k];
		else if ( a[i] !== null )
			r[r.length] =
				a[i].nodeType ? a[i] : document.createTextNode(a[i].toString());
	}
	return r;
};

jQuery.g = {
	"": "m[2]== '*'||a.nodeName.toUpperCase()==m[2].toUpperCase()",
	"#": "a.getAttribute('id')&&a.getAttribute('id')==m[2]",
	":": {
		lt: "i<m[3]-0",
		gt: "i>m[3]-0",
		nth: "m[3]-0==i",
		eq: "m[3]-0==i",
		first: "i==0",
		last: "i==r.length-1",
		even: "i%2==0",
		odd: "i%2==1",
		"first-child": "jQuery.sibling(a,0).cur",
		"nth-child": "(m[3]=='even'?jQuery.sibling(a,m[3]).n%2==0:(m[3]=='odd'?jQuery.sibling(a,m[3]).n%2==1:jQuery.sibling(a,m[3]).cur))",
		"last-child": "jQuery.sibling(a,0,true).cur",
		"nth-last-child": "jQuery.sibling(a,m[3],true).cur",
		"first-of-type": "jQuery.ofType(a,0)",
		"nth-of-type": "jQuery.ofType(a,m[3])",
		"last-of-type": "jQuery.ofType(a,0,true)",
		"nth-last-of-type": "jQuery.ofType(a,m[3],true)",
		"only-of-type": "jQuery.ofType(a)==1",
		"only-child": "jQuery.sibling(a).length==1",
		parent: "a.childNodes.length",
		empty: "!a.childNodes.length",
		root: "a==(a.ownerDocument||document).documentElement",
		contains: "(a.innerText||a.innerHTML).indexOf(m[3])!=-1",
		visible: "(!a.type||a.type!='hidden')&&(jQuery.css(a,'display')!='none'&&jQuery.css(a,'visibility')!= 'hidden')",
		hidden: "(a.type&&a.type=='hidden')||jQuery.css(a,'display')=='none'||jQuery.css(a,'visibility')== 'hidden'",
		enabled: "!a.disabled",
		disabled: "a.disabled",
		checked: "a.checked"
	},
	".": "jQuery.hasWord(a,m[2])",
	"@": {
		"=": "jQuery.attr(a,m[3])==m[4]",
		"!=": "jQuery.attr(a,m[3])!=m[4]",
		"~=": "jQuery.hasWord(jQuery.attr(a,m[3]),m[4])",
		"|=": "!jQuery.attr(a,m[3]).indexOf(m[4])",
		"^=": "!jQuery.attr(a,m[3]).indexOf(m[4])",
		"$=": "jQuery.attr(a,m[3]).substr( jQuery.attr(a,m[3]).length - m[4].length,m[4].length )==m[4]",
		"*=": "jQuery.attr(a,m[3]).indexOf(m[4])>=0",
		"": "m[3]=='*'?a.attributes.length>0:jQuery.attr(a,m[3])"
	},
	"[": "jQuery.Select(m[2],a).length"
};

jQuery.token = [
	"\\.\\.|/\\.\\.", "a.parentNode",
	">|/", "jQuery.sibling(a.firstChild)",
	"\\+", "jQuery.sibling(a).next",
	"~", function(a){
		var r = [];
		var s = jQuery.sibling(a);
		if ( s.n > 0 )
			for ( var i = s.n; i < s.length; i++ )
				r[r.length] = s[i];
		return r;
	}
];

jQuery.Select = function( t, context ) {
	context = context || jQuery.context || document;
	if ( t.constructor != String )
		return t.constructor == Array ? t : [t];

	if ( !t.indexOf("//") ) {
		context = context.documentElement;
		t = t.substr(2,t.length);
	} else if ( !t.indexOf("/") ) {
		context = context.documentElement;
		t = t.substr(1,t.length);
		// FIX Assume the root element is right :(
		if ( t.indexOf("/") >= 1 )
			t = t.substr(t.indexOf("/"),t.length);
	}

	var ret = [context];
	var done = [];
	var last = null;

	while ( t.length > 0 && last != t ) {
    var r = [];
		last = t;

    t = jQuery.cleanSpaces(t).replace( /^\/\//i, "" );
		
		var foundToken = false;
		
		for ( var i = 0; i < jQuery.token.length; i += 2 ) {
			var re = new RegExp("^(" + jQuery.token[i] + ")");
			var m = re.exec(t);
			
			if ( m ) {
				r = ret = jQuery.map( ret, jQuery.token[i+1] );
				t = jQuery.cleanSpaces( t.replace( re, "" ) );
				foundToken = true;
			}
		}
		
		if ( !foundToken ) {

			if ( !t.indexOf(",") || !t.indexOf("|") ) {
				if ( ret[0] == context ) ret.shift();
				done = jQuery.merge( done, ret );
				r = ret = [context];
				t = " " + t.substr(1,t.length);
			} else {
				var re2 = /^([#.]?)([a-z0-9\\*_-]*)/i;
				var m = re2.exec(t);
	
				if ( m[1] == "#" ) {
					// Ummm, should make this work in all XML docs
					var oid = document.getElementById(m[2]);
					r = ret = oid ? [oid] : [];
					t = t.replace( re2, "" );
				} else {
					if ( !m[2] || m[1] == "." ) m[2] = "*";
	
					for ( var i = 0; i < ret.length; i++ )
						r = jQuery.merge( r,
							m[2] == "*" ?
								jQuery.getAll(ret[i]) :
								ret[i].getElementsByTagName(m[2])
						);
				}
			}
			
		}

		if ( t ) {
			var val = jQuery.filter(t,r);
			ret = r = val.r;
			t = jQuery.cleanSpaces(val.t);
		}
	}

	if ( ret && ret[0] == context ) ret.shift();
	done = jQuery.merge( done, ret );

	return done;
};

jQuery.getAll = function(o,r) {
	r = r || [];
	var s = o.childNodes;
	for ( var i = 0; i < s.length; i++ )
		if ( s[i].nodeType == 1 ) {
			r[r.length] = s[i];
			jQuery.getAll( s[i], r );
		}
	return r;
};

jQuery.attr = function(o,a,v){
	if ( a && a.constructor == String ) {
		var fix = {
			"for": "htmlFor",
			"class": "className",
			"float": "cssFloat"
		};
		a = (fix[a] && fix[a].replace && fix[a]) || a;
		var r = /-([a-z])/ig;
		a = a.replace(r,function(z,b){return b.toUpperCase();});
		if ( v != undefined ) {
			o[a] = v;
			if ( o.setAttribute && a != "disabled" )
				o.setAttribute(a,v);
		}
		return o[a] || o.getAttribute(a) || "";
	} else
		return "";
};

jQuery.filter = function(t,r,not) {
	var g = jQuery.grep;
	if ( not === false )
		g = function(a,f) {return jQuery.grep(a,f,true);};

	while ( t && t.match(/^[:\\.#\\[a-zA-Z\\*]/) ) {
		var re = /^\[ *@([a-z0-9*()_-]+) *([~!|*$^=]*) *'?"?([^'"]*)'?"? *\]/i;
		var m = re.exec(t);

		if ( m )
			m = ["", "@", m[2], m[1], m[3]];
		else {
			re = /^(\[) *([^\]]*) *\]/i;
			m = re.exec(t);

			if ( !m ) {
				re = /^(:)([a-z0-9*_-]*)\( *["']?([^ \)'"]*)['"]? *\)/i;
				m = re.exec(t);

				if ( !m ) {
					re = /^([:\.#]*)([a-z0-9*_-]*)/i;
					m = re.exec(t);
				}
			}
		}
		t = t.replace( re, "" );

		if ( m[1] == ":" && m[2] == "not" )
			r = jQuery.filter(m[3],r,false).r;
		else {
			var f = null;

			if ( jQuery.g[m[1]].constructor == String )
				f = jQuery.g[m[1]];
			else if ( jQuery.g[m[1]][m[2]] )
				f = jQuery.g[m[1]][m[2]];

			if ( f ) {
				eval("f = function(a,i){return " + f + "}");
				r = g( r, f );
			}
		}
	}

	return { r: r, t: t };
};

jQuery.parents = function(a){
	var b = [];
	var c = a.parentNode;
	while ( c && c != document ) {
		b[b.length] = c;
		c = c.parentNode;
	}
	return b;
};

jQuery.cleanSpaces = function(t){
	return t.replace(/^\s+|\s+$/g, "");
};

jQuery.ofType = function(a,n,e) {
	var t = jQuery.grep(jQuery.sibling(a),function(b){ return b.nodeName == a.nodeName; });
	if ( e ) n = t.length - n - 1;
	return n != undefined ? t[n] == a : t.length;
};

jQuery.sibling = function(a,n,e) {
	var type = [];
	var tmp = a.parentNode.childNodes;
	for ( var i = 0; i < tmp.length; i++ ) {
		if ( tmp[i].nodeType == 1 )
			type[type.length] = tmp[i];
		if ( tmp[i] == a )
			type.n = type.length - 1;
	}
	if ( e ) n = type.length - n - 1;
	type.cur = ( type[n] == a );
	type.prev = ( type.n > 0 ? type[type.n - 1] : null );
	type.next = ( type.n < type.length - 1 ? type[type.n + 1] : null );
	return type;
};

jQuery.hasWord = function(e,a) {
	if ( e == undefined ) return;
	if ( e.className ) e = e.className;
	return new RegExp("(^|\\s)" + a + "(\\s|$)").test(e);
};

jQuery.merge = function(a,b) {
	var d = [];
	for ( var k = 0; k < b.length; k++ ) d[k] = b[k];

	for ( var i = 0; i < a.length; i++ ) {
		var c = true;
		for ( var j = 0; j < b.length; j++ )
			if ( a[i] == b[j] )
				c = false;
		if ( c ) d[d.length] = a[i];
	}

	return d;
};

jQuery.grep = function(a,f,s) {
	if ( f.constructor == String )
		f = new Function("a","i","return " + f);
	var r = [];
	if ( a )
		for ( var i = 0; i < a.length; i++ )
			if ( (!s && f(a[i],i)) || (s && !f(a[i],i)) )
				r[r.length] = a[i];
	return r;
};

jQuery.map = function(a,f) {
	if ( f.constructor == String )
		f = new Function("a","return " + f);
	
	var r = [];
	for ( var i = 0; i < a.length; i++ ) {
		var t = f(a[i],i);
		if ( t !== null ) {
			if ( t.constructor != Array ) t = [t];
			r = jQuery.merge( t, r );
		}
	}
	return r;
};

jQuery.event = {

	// Bind an event to an element
	// Original by Dean Edwards
	add: function(element, type, handler) {
		// For whatever reason, IE has trouble passing the window object
		// around, causing it to be cloned in the process
		if ( jQuery.browser == "msie" && element.setInterval != undefined )
			element = window;
	
		if (!handler.guid) handler.guid = jQuery.event.guid++;
		if (!element.events) element.events = {};
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			if (element["on" + type])
				handlers[0] = element["on" + type];
		}
		handlers[handler.guid] = handler;
		element["on" + type] = jQuery.event.handle;
	},
	
	guid: 1,
	
	// Detach an event or set of events from an element
	remove: function(element, type, handler) {
		if (element.events)
			if (type && element.events[type])
				if ( handler )
					delete element.events[type][handler.guid];
				else
					for ( var i in element.events[type] )
						delete element.events[type][i];
			else
				for ( var j in element.events )
					jQuery.event.remove( element, j );
	},
	
	trigger: function(element,type,data) {
		data = data || [ jQuery.event.fix({ type: type }) ];
		if ( element && element["on" + type] )
			element["on" + type].apply( element, data );
	},
	
	handle: function(event) {
		if ( !event && !window.event ) return;
	
		var returnValue = true, handlers = [];
		event = event || jQuery.event.fix(window.event);
	
		for ( var j in this.events[event.type] )
			handlers[handlers.length] = this.events[event.type][j];
	
		for ( var i = 0; i < handlers.length; i++ ) {
			if ( handlers[i].constructor == Function ) {
				this.handleEvent = handlers[i];
				if (this.handleEvent(event) === false) {
					event.preventDefault();
					event.stopPropagation();
					returnValue = false;
				}
			}
		}
		return returnValue;
	},
	
	fix: function(event) {
		event.preventDefault = function() {
			this.returnValue = false;
		};
		
		event.stopPropagation = function() {
			this.cancelBubble = true;
		};
		
		return event;
	}

};
// We're overriding the old toggle function, so
// remember it for later
jQuery.prototype._toggle = jQuery.prototype.toggle;

/**
 * Toggle between two function calls every other click.
 */
jQuery.prototype.toggle = function(a,b) {
	// If two functions are passed in, we're
	// toggling on a click
	return a && b ? this.click(function(e){
		// Figure out which function to execute
		this.last = this.last == a ? b : a;
		
		// Make sure that clicks don't pass through
		e.preventDefault();
		
		// and execute the function
		return this.last.apply( this, [e] ) || false;
	}) :
	
	// Otherwise, execute the old toggle function
	this._toggle();
};

/**
 * Toggle between two function calls on mouse over/out.
 */
jQuery.prototype.hover = function(f,g) {
	
	// A private function for haandling mouse 'hovering'
	function handleHover(e) {
		// Check if mouse(over|out) are still within the same parent element
		var p = e.fromElement || e.toElement || e.relatedTarget;
		while ( p && p != this ) p = p.parentNode;
		
		// If we actually just moused on to a sub-element, ignore it
		if ( p == this ) return false;
		
		// Execute the right function
		return (e.type == "mouseover" ? f : g).apply(this, [e]);
	}
	
	// Bind the function to the two event listeners
	return this.mouseover(handleHover).mouseout(handleHover);
};

/**
 * Bind a function to fire when the DOM is ready.
 */
jQuery.prototype.ready = function(f) {
	// If the DOM is already ready
	if ( jQuery.isReady )
		// Execute the function immediately
		f.apply( document );
		
	// Otherwise, remember the function for later
	else {
		// Add the function to the wait list
		jQuery.readyList.push( f );
	}

	return this;
};

(function(){
	/*
	 * Bind a number of event-handling functions, dynamically
	 */
	var e = ("blur,focus,contextmenu,load,resize,scroll,unload,click,dblclick," +
		"mousedown,mouseup,mouseenter,mouseleave,mousemove,mouseover,mouseout," +
		"change,reset,select,submit,keydown,keypress,keyup").split(",");

	// Go through all the event names, but make sure that
	// it is enclosed properly
	for ( var i = 0; i < e.length; i++ ) {(function(){
			
		var o = e[i];
		
		// Handle event binding
		jQuery.prototype[o] = function(f){ return this.bind(o, f); };
		
		// Handle event unbinding
		jQuery.prototype["un"+o] = function(f){ return this.unbind(o, f); };
		
		// Handle event triggering
		jQuery.prototype["do"+o] = function(){ return this.trigger(o); };
		
		// Finally, handle events that only fire once
		jQuery.prototype["one"+o] = function(f){
			// Attach the event listener
			return this.bind(o, function(e){
				// TODO: Remove the event listener, instead of this hack
				
				// If this function has already been executed, stop
				if ( this[o+f] !== null )
					return true;
				
				// Otherwise, mark as having been executed
				this[o+f]++;
				
				// And execute the bound function
				return f.apply(this, [e]);
			});
		};
			
	})();}
		
	/*
	 * All the code that makes DOM Ready work nicely.
	 */
	 
	jQuery.isReady = false;
	jQuery.readyList = [];
	
	// Handle when the DOM is ready
	jQuery.ready = function() {
		// Make sure that the DOM hasn't already loaded
		if ( !jQuery.isReady ) {
			// Remember that the DOM is ready
			jQuery.isReady = true;
			
			// If there are functions bound, to execute
			if ( jQuery.readyList ) {
				// Execute all of them
				for ( var i = 0; i < jQuery.readyList.length; i++ )
					jQuery.readyList[i].apply( document );
				
				// Reset the list of functions
				jQuery.readyList = null;
			}
		}
	};
	
	// If Mozilla is used
	if ( jQuery.browser == "mozilla" || jQuery.browser == "opera" ) {
		// Use the handy event callback
		jQuery.event.add( document, "DOMContentLoaded", jQuery.ready );
	
	// If IE is used, use the excellent hack by Matthias Miller
	// http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
	} else if ( jQuery.browser == "msie" ) {
	
		// Only works if you document.write() it
		document.write("<scr" + "ipt id=__ie_init defer=true " + 
			"src=javascript:void(0)><\/script>");
	
		// Use the defer script hack
		var script = document.getElementById("__ie_init");
		script.onreadystatechange = function() {
			if ( this.readyState == "complete" )
				jQuery.ready();
		};
	
		// Clear from memory
		script = null;
	
	// If Safari  is used
	} else if ( jQuery.browser == "safari" ) {
		// Continually check to see if the document.readyState is valid
		jQuery.safariTimer = setInterval(function(){
			// loaded and complete are both valid states
			if ( document.readyState == "loaded" || 
				document.readyState == "complete" ) {
	
				// If either one are found, remove the timer
				clearInterval( jQuery.safariTimer );
				jQuery.safariTimer = null;
	
				// and execute any waiting functions
				jQuery.ready();
			}
		}, 10);
	}
	
	// A fallback to window.onload, that will always work
	jQuery.event.add( window, "load", jQuery.ready );
	
})();
// overwrite the old show method
jQuery.prototype._show = jQuery.prototype.show;

/**
 * The effects module overloads the show method to now allow 
 * for a speed to the show operation. What actually happens is 
 * that the height, width, and opacity to the matched elements 
 * are changed dynamically. The only three current speeds are 
 * "slow", "normal", and "fast". For example:
 *   $("p").show("slow");
 * Note: You should not run the show method on things 
 * that are already shown. This can be circumvented by doing this:
 *   $("p:hidden").show("slow");
 */
jQuery.prototype.show = function(speed,callback){
	return speed ? this.animate({
		height: "show", width: "show", opacity: "show"
	}, speed, callback) : this._show();
};

// We're overwriting the old hide method
jQuery.prototype._hide = jQuery.prototype.hide;


/**
 * The hide function behaves very similary to the show function, 
 * but is just the opposite.
 *   $("p:visible").hide("slow");
 */
jQuery.prototype.hide = function(speed,callback){
	return speed ? this.animate({
		height: "hide",
		width: "hide",
		opacity: "hide"
	}, speed, callback) : this._hide();
};

/**
 * This function increases the height and opacity for all matched 
 * elements. This is very similar to 'show', but does not change 
 * the width - creating a neat sliding effect.
 *   $("p:hidden").slideDown("slow");
 */
jQuery.prototype.slideDown = function(speed,callback){
	return this.animate({height: "show"}, speed, callback);
};

/**
 * Just like slideDown, only it hides all matched elements.
 *   $("p:visible").slideUp("slow");
 */
jQuery.prototype.slideUp = function(speed,callback){
	return this.animate({height: "hide"}, speed, callback);
};

/**
 * Adjusts the opacity of all matched elements from a hidden, 
 * to a fully visible, state.
 *   $("p:hidden").fadeIn("slow");
 */
jQuery.prototype.fadeIn = function(speed,callback){
	return this.animate({opacity: "show"}, speed, callback);
};

/**
 * Same as fadeIn, but transitions from a visible, to a hidden state.
 *   $("p:visible").fadeOut("slow");
 */
jQuery.prototype.fadeOut = function(speed,callback){
	return this.animate({opacity: "hide"}, speed, callback);
};

/**
 * ...
 */
jQuery.prototype.fadeTo = function(speed,to,callback){
	return this.animate({opacity: to}, speed, callback);
};

/**
 *
 */
jQuery.prototype.animate = function(prop,speed,callback) {
	return this.queue(function(){
		var i = 0;
		for ( var p in prop ) {
			var e = new jQuery.fx( this, jQuery.speed(speed,callback,i++), p );
			if ( prop[p].constructor == Number )
				e.custom( e.cur(), prop[p] );
			else
				e[ prop[p] ]();
		}
	});
};

jQuery.speed = function(s,o,i) {
	o = o || {};
	
	if ( o.constructor == Function )
		o = { complete: o };
	
	var ss = {"slow":600,"fast":200};
	o.duration = (s && s.constructor == Number ? s : ss[s]) || 400;

	// Queueing
	o.oldComplete = o.complete;
	o.complete = function(){
		jQuery.dequeue(this, "fx");
		if ( o.oldComplete && o.oldComplete.constructor == Function )
			o.oldComplete.apply( this );
	};
	
	if ( i > 0 )
		o.complete = null;

	return o;
};

jQuery.queue = {};

jQuery.dequeue = function(elem,type){
	type = type || "fx";

	if ( elem.queue && elem.queue[type] ) {
		// Remove self
		elem.queue[type].shift();

		// Get next function
		var f = elem.queue[type][0];
	
		if ( f )
			f.apply( elem );
	}
};

jQuery.prototype.queue = function(type,fn){
	if ( !fn ) {
		fn = type;
		type = "fx";
	}

	return this.each(function(){
		if ( !this.queue )
			this.queue = {};

		if ( !this.queue[type] )
			this.queue[type] = [];

		this.queue[type].push( fn );
	
		if ( this.queue[type].length == 1 )
			fn.apply(this);
	});
};

jQuery.setAuto = function(e,p) {
	var a = e.style[p];
	var o = jQuery.css(e,p);
	e.style[p] = "auto";
	var n = jQuery.css(e,p);
	if ( o != n )
		e.style[p] = a;
};

/*
 * I originally wrote fx() as a clone of moo.fx and in the process
 * of making it small in size the code became illegible to sane
 * people. You've been warned.
 */

jQuery.fx = function( elem, options, prop ){

	var z = this;

	// The users options
	z.o = {
		duration: options.duration || 400,
		complete: options.complete
	};

	// The element
	z.el = elem;

	// The styles
	var y = z.el.style;

	// Simple function for setting a style value
	z.a = function(){
		if ( prop == "opacity" ) {
			if (z.now == 1) z.now = 0.9999;
			if (window.ActiveXObject)
				y.filter = "alpha(opacity=" + z.now*100 + ")";
			y.opacity = z.now;
		} else
			y[prop] = z.now+"px";
	};

	// Figure out the maximum number to run to
	z.max = function(){
		return z.el["orig"+prop] || z.cur();
	};

	// Get the current size
	z.cur = function(){
		return parseFloat( jQuery.css(z.el,prop) );
	};

	// Start an animation from one number to another
	z.custom = function(from,to){
		z.startTime = (new Date()).getTime();
		z.now = from;
		z.a();

		z.timer = setInterval(function(){
			z.step(from, to);
		}, 13);
	};

	// Simple 'show' function
	z.show = function(){
		y.display = "block";
		z.o.auto = true;
		z.custom(0,z.max());
	};

	// Simple 'hide' function
	z.hide = function(){
		// Remember where we started, so that we can go back to it later
		z.el["orig"+prop] = this.cur();

		// Begin the animation
		z.custom(z.cur(),0);
	};

	// IE has trouble with opacity if it doesn't have layout
	if ( jQuery.browser == "msie" && !z.el.currentStyle.hasLayout )
		y.zoom = 1;

	// Remember  the overflow of the element
	z.oldOverflow = y.overflow;

	// Make sure that nothing sneaks out
	y.overflow = "hidden";

	// Each step of an animation
	z.step = function(firstNum, lastNum){
		var t = (new Date()).getTime();

		if (t > z.o.duration + z.startTime) {
			// Stop the timer
			clearInterval(z.timer);
			z.timer = null;

			z.now = lastNum;
			z.a();

			// Reset the overflow
			y.overflow = z.oldOverflow;

			// If the element was shown, and not using a custom number,
			// set its height and/or width to auto
			if ( (prop == "height" || prop == "width") && z.o.auto )
				jQuery.setAuto( z.el, prop );

			// If a callback was provided, execute it
			if( z.o.complete.constructor == Function ) {

				// Yes, this is a weird place for this, but it needs to be executed
				// only once per cluster of effects.
				// If the element is, effectively, hidden - hide it
				if ( y.height == "0px" || y.width == "0px" )
					y.display = "none";

				// Execute the complete function
				z.o.complete.apply( z.el );
			}
		} else {
			// Figure out where in the animation we are and set the number
			var p = (t - this.startTime) / z.o.duration;
			z.now = ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;

			// Perform the next step of the animation
			z.a();
		}
	};

};
// AJAX Plugin
// Docs Here:
// http://jquery.com/docs/ajax/

/**
 * Load HTML from a remote file and inject it into the DOM
 */
jQuery.prototype.load = function( url, params, callback ) {
	// I overwrote the event plugin's .load
	// this won't happen again, I hope -John
	if ( url && url.constructor == Function )
		return this.bind("load", url);

	// Default to a GET request
	var type = "GET";

	// If the second parameter was provided
	if ( params ) {
		// If it's a function
		if ( params.constructor == Function ) {
			// We assume that it's the callback
			callback = params;
			params = null;
			
		// Otherwise, build a param string
		} else {
			params = jQuery.param( params );
			type = "POST";
		}
	}
	
	var self = this;
	
	// Request the remote document
	jQuery.ajax( type, url, params,function(res){
			
		// Inject the HTML into all the matched elements
		self.html(res.responseText).each(function(){
			// If a callback function was provided
			if ( callback && callback.constructor == Function )
				// Execute it within the context of the element
				callback.apply( self, [res.responseText] );
		});
		
		// Execute all the scripts inside of the newly-injected HTML
		$("script", self).each(function(){
			eval( this.text || this.textContent || this.innerHTML || "");
		});

	});
	
	return this;
};

/**
 * Load a remote page using a GET request
 */
jQuery.get = function( url, callback, type ) {
	// Build and start the HTTP Request
	jQuery.ajax( "GET", url, null, function(r) {
		if ( callback ) callback( jQuery.httpData(r,type) );
	});
};

/**
 * Load a remote page using a POST request.
 */
jQuery.post = function( url, data, callback, type ) {
	// Build and start the HTTP Request
	jQuery.ajax( "POST", url, jQuery.param(data), function(r) {
		if ( callback ) callback( jQuery.httpData(r,type) );
	});
};

// If IE is used, create a wrapper for the XMLHttpRequest object
if ( jQuery.browser == "msie" )
	XMLHttpRequest = function(){
		return new ActiveXObject(
			(navigator.userAgent.toLowerCase().indexOf("msie 5") >= 0) ?
			"Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
		);
	};

// Attach a bunch of functions for handling common AJAX events
(function(){
	var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(',');
	
	for ( var i = 0; i < e.length; i++ ){ (function(){
		var o = e[i];
		jQuery.fn[o] = function(f){return this.bind(o, f);};
	})();}
})();

/**
 * A common wrapper for making XMLHttpRequests
 */
jQuery.ajax = function( type, url, data, ret ) {
	// If only a single argument was passed in,
	// assume that it is a object of key/value pairs
	if ( !url ) {
		ret = type.complete;
		var success = type.success;
		var error = type.error;
		data = type.data;
		url = type.url;
		type = type.type;
	}
	
	// Watch for a new set of requests
	if ( ! jQuery.ajax.active++ )
		jQuery.event.trigger( "ajaxStart" );

	// Create the request object
	var xml = new XMLHttpRequest();

	// Open the socket
	xml.open(type || "GET", url, true);
	
	// Set the correct header, if data is being sent
	if ( data )
		xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	// Set header so calling script knows that it's an XMLHttpRequest
	xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");

	// Make sure the browser sends the right content length
	if ( xml.overrideMimeType )
		xml.setRequestHeader("Connection", "close");

	// Wait for a response to come back
	xml.onreadystatechange = function(){
		// The transfer is complete and the data is available
		if ( xml.readyState == 4 ) {
			// Make sure that the request was successful
			if ( jQuery.httpSuccess( xml ) ) {
			
				// If a local callback was specified, fire it
				if ( success ) success( xml );
				
				// Fire the global callback
				jQuery.event.trigger( "ajaxSuccess" );
			
			// Otherwise, the request was not successful
			} else {
				// If a local callback was specified, fire it
				if ( error ) error( xml );
				
				// Fire the global callback
				jQuery.event.trigger( "ajaxError" );
			}
			
			// The request was completed
			jQuery.event.trigger( "ajaxComplete" );
			
			// Handle the global AJAX counter
			if ( ! --jQuery.ajax.active )
				jQuery.event.trigger( "ajaxStop" );

			// Process result
			if ( ret ) ret(xml);
		}
	};

	// Send the data
	xml.send(data);
};

// Counter for holding the number of active queries
jQuery.ajax.active = 0;

// Determines if an XMLHttpRequest was successful or not
jQuery.httpSuccess = function(r) {
	return ( r.status && ( r.status >= 200 && r.status < 300 ) || 
		r.status == 304 ) || !r.status && location.protocol == "file:";
};

// Get the data out of an XMLHttpRequest
jQuery.httpData = function(r,type) {
	// Check the headers, or watch for a force override
	return r.getResponseHeader("content-type").indexOf("xml") > 0 || 
		type == "xml" ? r.responseXML : r.responseText;
};

// Serialize an array of form elements or a set of
// key/values into a query string
jQuery.param = function(a) {
	var s = [];
	
	// If an array was passed in, assume that it is an array
	// of form elements
	if ( a.constructor == Array )
		// Serialize the form elements
		for ( var i = 0; i < a.length; i++ )
			s.push( a[i].name + "=" + encodeURIComponent( a[i].value ) );
		
	// Otherwise, assume that it's an object of key/value pairs
	else
		// Serialize the key/values
		for ( var j in a )
			s.push( j + "=" + encodeURIComponent( a[j] ) );
	
	// Return the resulting serialization
	return s.join("&");
};

