function initAjaxDemo(){
articleListObj=document.getElementById('articleList')
var articles=articleListObj.getElementsByTagName('LI')
for(var no=0;no<articles.length;no++){
articles[no].onmouseover=mouseoverArticle
articles[no].onclick=selectArticle;}
contentObj=document.getElementById('contentContainer');}
function sack(file){
this.xmlhttp=null
this.resetData=function(){
this.method="GET"
this.queryStringSeparator="?"
this.argumentSeparator="&"
this.URLString=""
this.encodeURIString=true
this.execute=false
this.element=null
this.elementObj=null
this.requestFile=file
this.vars=new Object()
this.responseStatus=new Array(2);}
this.resetFunctions=function(){
this.onLoading=function(){}
this.onLoaded=function(){}
this.onInteractive=function(){}
this.onCompletion=function(){}
this.onError=function(){}
this.onFail=function(){};}
this.reset=function(){this.resetFunctions();this.resetData();}
this.createAJAX=function(){try{
this.xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}catch(e1){try{
this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
}catch(e2){this.xmlhttp=null;}}
if(! this.xmlhttp){if(typeof XMLHttpRequest !="undefined"){
this.xmlhttp=new XMLHttpRequest()
}else{this.failed=true;}}}
this.setVar=function(name,value){
this.vars[name]=Array(value,false);}
this.encVar=function(name,value,returnvars){
if(true==returnvars){
return Array(encodeURIComponent(name),encodeURIComponent(value))
}else{this.vars[encodeURIComponent(name)]=Array(encodeURIComponent(value),true);}}
this.processURLString=function(string,encode){
encoded=encodeURIComponent(this.argumentSeparator)
regexp=new RegExp(this.argumentSeparator+"|"+encoded)
varArray=string.split(regexp)
for(i=0;i<varArray.length;i++){
urlVars=varArray[i].split("=")
if(true==encode){this.encVar(urlVars[0],urlVars[1])
}else{this.setVar(urlVars[0],urlVars[1]);}}}
this.createURLString=function(urlstring){
if(this.encodeURIString&&this.URLString.length){
this.processURLString(this.URLString,true);}
if(urlstring){if(this.URLString.length){
this.URLString+=this.argumentSeparator+urlstring
}else{this.URLString=urlstring;}}
this.setVar("rndval",new Date().getTime())
urlstringtemp=new Array()
for(key in this.vars){
if(false==this.vars[key][1]&&true==this.encodeURIString){
encoded=this.encVar(key,this.vars[key][0],true)
delete this.vars[key]
this.vars[encoded[0]]=Array(encoded[1],true)
key=encoded[0];}
urlstringtemp[urlstringtemp.length]=key+"="+this.vars[key][0]
}if(urlstring){
this.URLString+=this.argumentSeparator+urlstringtemp.join(this.argumentSeparator)
}else{this.URLString+=urlstringtemp.join(this.argumentSeparator);}}
this.runResponse=function(){eval(this.response);}
this.runAJAX=function(urlstring){
if(this.failed){
this.onFail();}else{this.createURLString(urlstring)
if(this.element){this.elementObj=document.getElementById(this.element);}
if(this.xmlhttp){var self=this
if(this.method=="GET"){
totalurlstring=this.requestFile+this.queryStringSeparator+this.URLString
this.xmlhttp.open(this.method,totalurlstring,true);}else{
this.xmlhttp.open(this.method,this.requestFile,true)
try{this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}}
this.xmlhttp.onreadystatechange=function(){switch(self.xmlhttp.readyState){case 1:self.onLoading();break
case 2:self.onLoaded();break
case 3:self.onInteractive();break
case 4: self.response=self.xmlhttp.responseText
self.responseXML=self.xmlhttp.responseXML
self.responseStatus[0]=self.xmlhttp.status
self.responseStatus[1]=self.xmlhttp.statusText
if(self.execute){self.runResponse();}
if(self.elementObj){
elemNodeName=self.elementObj.nodeName
elemNodeName.toLowerCase()
if(elemNodeName=="input"
|| elemNodeName=="select"
|| elemNodeName=="option"
|| elemNodeName=="textarea"){
self.elementObj.value=self.response;}else{
self.elementObj.innerHTML=self.response;}}
if(self.responseStatus[0]=="200"){
self.onCompletion();}else{self.onError();}self.URLString="";break;}}
this.xmlhttp.send(this.URLString);}}};this.reset();this.createAJAX();}
var ajax=new sack()
var articleListObj
var activeArticle=false
var clickedArticle=false
var contentObj
function mouseoverArticle(){
if(this==clickedArticle)return
if(activeArticle!=this){
if(activeArticle==clickedArticle)
activeArticle.className='articleClick'
else activeArticle.className='';}
this.className='articleMouseOver'
activeArticle=this;}
function getAjaxFile(fileName){
ajax.requestFile=fileName
ajax.onCompletion=showContent
ajax.runAJAX()
ajax.onLoading=showWaitMessage;}
function selectArticle(){
getAjaxFile(this.id+'.a.php')
if(clickedArticle!=this)clickedArticle.className='articleMouseOver'
this.className='articleClick'
clickedArticle=this;}
window.onload=initAjaxDemo
function showWaitMessage(){
contentObj.innerHTML='Loading Channel...';}
function showContent(){
contentObj.innerHTML=ajax.response;}





var Class={create: function(){return function(){this.initialize.apply(this,arguments);}}}
Object.extend=function(destination,source){
for(property in source)destination[property]=source[property]
return destination;}
Function.prototype.bind=function(object){
var __method=this
return function(){
return __method.apply(object,arguments);}}
Function.prototype.bindAsEventListener=function(object){
var __method=this
return function(event){
__method.call(object,event || window.event);}}
function $(){
if(arguments.length==1)return get$(arguments[0])
var elements=[]
$c(arguments).each(function(el){
elements.push(get$(el));})
return elements
function get$(el){
if(typeof el=='string')el=document.getElementById(el)
return el;}}
if(!window.Element)var Element=new Object()
Object.extend(Element,{
remove: function(element){
element=$(element)
element.parentNode.removeChild(element);},
hasClassName: function(element,className){
element=$(element)
if(!element)return
var hasClass=false
element.className.split(' ').each(function(cn){
if(cn==className)hasClass=true;})
return hasClass;},
addClassName: function(element,className){
element=$(element)
Element.removeClassName(element,className)
element.className+=' '+className;},
removeClassName: function(element,className){
element=$(element)
if(!element)return
var newClassName=''
element.className.split(' ').each(function(cn,i){
if(cn !=className){
if(i>0)newClassName+=' '
newClassName+=cn;}})
element.className=newClassName;},
cleanWhitespace: function(element){element=$(element)
$c(element.childNodes).each(function(node){
if(node.nodeType==3&&!/\S/.test(node.nodeValue))Element.remove(node);});},
find: function(element,what){
element=$(element)[what]
while(element.nodeType !=1)element=element[what]
return element;}})
var Position={cumulativeOffset: function(element){
var valueT=0,valueL=0;do{
valueT+=element.offsetTop || 0
valueL+=element.offsetLeft || 0
element=element.offsetParent
}while(element)
return [valueL,valueT];}}
document.getElementsByClassName=function(className){
var children=document.getElementsByTagName('*')|| document.all
var elements=[]
$c(children).each(function(child){
if(Element.hasClassName(child,className))elements.push(child);})
return elements;}
Array.prototype.iterate=function(func){
for(var i=0;i<this.length;i++)func(this[i],i);}
if(!Array.prototype.each)Array.prototype.each=Array.prototype.iterate
function $c(array){
var nArray=[]
for(var i=0;i<array.length;i++)nArray.push(array[i])
return nArray;}
var fx=new Object()
fx.Base=function(){}
fx.Base.prototype={
setOptions: function(options){
this.options={
duration: 500,
onComplete: '',
transition: fx.sinoidal}
Object.extend(this.options,options ||{});},
step: function(){
var time=(new Date).getTime()
if(time>=this.options.duration+this.startTime){
this.now=this.to
clearInterval(this.timer)
this.timer=null
if(this.options.onComplete)setTimeout(this.options.onComplete.bind(this),10);}
else{
var Tpos=(time-this.startTime)/(this.options.duration)
this.now=this.options.transition(Tpos)*(this.to-this.from)+this.from;}this.increase();},
custom: function(from,to){
if(this.timer !=null)return
this.from=from
this.to=to
this.startTime=(new Date).getTime()
this.timer=setInterval(this.step.bind(this),13);},
hide: function(){
this.now=0
this.increase();},
clearTimer: function(){
clearInterval(this.timer)
this.timer=null;}}
fx.Layout=Class.create()
fx.Layout.prototype=Object.extend(new fx.Base(),{
initialize: function(el,options){
this.el=$(el)
this.el.style.overflow="hidden"
this.iniWidth=this.el.offsetWidth
this.iniHeight=this.el.offsetHeight
this.setOptions(options);}})
fx.Height=Class.create()
Object.extend(Object.extend(fx.Height.prototype,fx.Layout.prototype),{
increase: function(){
this.el.style.height=this.now+"px";},
toggle: function(){
if(this.el.offsetHeight>0)this.custom(this.el.offsetHeight,0)
else this.custom(0,this.el.scrollHeight);}})
fx.Width=Class.create()
Object.extend(Object.extend(fx.Width.prototype,fx.Layout.prototype),{
increase: function(){
this.el.style.width=this.now+"px";},
toggle: function(){
if(this.el.offsetWidth>0)this.custom(this.el.offsetWidth,0)
else this.custom(0,this.iniWidth);}})
fx.Opacity=Class.create()
fx.Opacity.prototype=Object.extend(new fx.Base(),{
initialize: function(el,options){
this.el=$(el)
this.now=1
this.increase()
this.setOptions(options);},
increase: function(){
if(this.now==1&&(/Firefox/.test(navigator.userAgent)))this.now=0.9999;this.setOpacity(this.now);},
setOpacity: function(opacity){
if(opacity==0&&this.el.style.visibility !="hidden")this.el.style.visibility="hidden"
else if(this.el.style.visibility !="visible")this.el.style.visibility="visible"
if(window.ActiveXObject)this.el.style.filter="alpha(opacity="+opacity*100+")"
this.el.style.opacity=opacity;},
toggle: function(){
if(this.now>0)this.custom(1,0)
else this.custom(0,1);}})
fx.sinoidal=function(pos){
return((-Math.cos(pos*Math.PI)/2)+0.5);}
fx.linear=function(pos){
return pos;}
fx.cubic=function(pos){
return Math.pow(pos,3);}
fx.circ=function(pos){
return Math.sqrt(pos);}