var flag;
tson=window.tson||{};
tson.Event={
    setActive:function(objSource,objTarget)
    {
        var tabs = document.getElementById(objSource).getElementsByTagName('a');
        for(var i=0;i<tabs.length;i++)
        {
            var related = document.getElementById(tabs[i].hash.replace('#', ''));
            if(related != null)
            {
                if(related.id == objTarget)
                {
                    related.style.display = 'block';
                    addClass(tabs[i].parentNode,'current');
                    flag = tabs[i];
                }
                else
                {
                    related.style.display = 'none';
                    removeClass(tabs[i].parentNode, 'current');
                }
            }

        }
        return false;        
    },
    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);
            tson.EventCache.add(obj,evType,fn);
            return r;
        }
        else
        {
            return false;
        }
    },
    removeEvent:function(obj,evType,fn)
    {
        if(obj.removeEventListener)
        {
            obj.removeEventListener(evType,fn,false);
            return true;
        }
        else if(obj.detachEvent)
        {
            var r=obj.detachEvent("on"+evType,fn);
            return r;
        }
        else
        {
            return false;
        }
    },
    getEvent:function(e)
    {
        e=window.event||e;
        e.leftButton=false;
        if(e.srcElement==null&&e.target!=null)
        {
            e.srcElement=e.target;
            e.leftButton=(e.button==1);
        }
        else if(e.target==null&&e.srcElement!=null)
        {
            e.target=e.srcElement;
            e.leftButton=(e.button==0);
        }
        else if(e.srcElement!=null&&e.target!=null)
        {}
        else{return null}
        if(document.body&&document.documentElement)
    {e.mouseX=e.pageX||(e.clientX+Math.max(document.body.scrollLeft,document.documentElement.scrollLeft));e.mouseY=e.pageY||(e.clientY+Math.max(document.body.scrollTop,document.documentElement.scrollTop));}
    else
    {e.mouseX=-1;e.mouseY=-1;}
    return e;},stopEvent:function(e)
    {if(e&&e.cancelBubble!=null)
    {e.cancelBubble=true;e.returnValue=false;}
    if(e&&e.stopPropagation&&e.preventDefault)
    {e.stopPropagation();e.preventDefault();}
    return false;}};tson.EventCache=function()
    {var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler,bCapture){listEvents[listEvents.length]=arguments;},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1)
    {item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];};if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};}};}();tson.Event.addEvent(window,"unload",tson.EventCache.flush);function error_handler(a,b,c)
    {window.status=(c+"\n"+b+"\n\n"+a+"\n\n"+error_handler.caller);return true;}
    var hasClass = function(ele,cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); };
    var addClass = function(ele,cls) { if (!this.hasClass(ele,cls)) ele.className += " "+cls; };
    var removeClass = function(ele,cls) { if (hasClass(ele,cls)) { var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)'); ele.className=ele.className.replace(reg,' '); } };
    var switchTab = function(tabcontainer)
    {
        var tabs = document.getElementById(tabcontainer).getElementsByTagName('a');
        if(flag == null)
            flag = tabs[0];
        for (i = 0; i < tabs.length ; i++)
        {
            tabs[i].onclick = tabs[i].onfocus = function()
            {
                this.blur(); 
                var related = document.getElementById(this.hash.replace('#', ''));
                var flagdiv = document.getElementById(flag.hash.replace('#', ''));
                if(related != null)
                {
                    related.style.display = 'block'; 
                    addClass(this.parentNode, 'current'); 
                    if (this != flag) 
                    { 
                        flagdiv.style.display = 'none'; 
                        removeClass(flag.parentNode, 'current'); 
                    } 
                    flag = this;
                    return false; 
                }
                else
                {
                    return true;
                }
            } 
        }; 
    };