/**HeaderIndex


    Object HeaderElements Array(
        Object(
            dom:domElement[,
            icon:string,
            width:integer,
            height:integer,
            color:hex,
            backgroundcolor:hex,
            fontfamily:string,
            fontsize:integer,
            opacity:integer]
            style:{}
        )
    )


**/


    function HeaderIndex() {

        this.indexed = [];
        resExt.addEventHandler(window,'scroll',this.scroll.bind(this));
        resExt.addEventHandler(window,'resize',this.scroll.bind(this));

    }//HeaderIndex 
    

    HeaderIndex.prototype.createIndex = function (headerelements) {

        this.headerelements = headerelements;

        for ( var c = 0; c < this.indexed.length; c++ ) {
            this.indexed[c].parentNode.removeChild(this.indexed[c]);
        }//for

        this.indexed = [];

        for ( var c = 0; c < this.headerelements.length; c++ ) {

            this.indexed[c] = document.createElement('div');
            this.indexed[c].style.textAlign = "left";
            
            if ( this.headerelements[c]['opacity'] !== undefined ) {
                this.indexed[c].style.opacity = this.headerelements[c]['opacity'] / 100;
                //-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 
                this.indexed[c].style.filter = 'alpha(opacity=' + this.headerelements[c]['opacity'] + ')';
            
                resExt.addEventHandler(this.indexed[c],'mouseover',function(obj, opacity) {
                    for ( var c = 0; c < this.indexed.length; c++ ) {
                        this.indexed[c].style.opacity = opacity / 100;
                        //-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 
                        this.indexed[c].style.filter = 'alpha(opacity=' + opacity + ')';
                    }//for
                    obj.style.opacity = 1;
                    //-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 
                    obj.style.filter = 'alpha(opacity=100)';
                }.bind(this,this.indexed[c],this.headerelements[c]['opacity']));

                resExt.addEventHandler(this.indexed[c],'mouseout',function(obj, opacity) {
                    obj.style.opacity = opacity / 100;
                    //-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 
                    obj.style.filter = 'alpha(opacity=' + opacity + ')';
                }.bind(this,this.indexed[c],this.headerelements[c]['opacity']));
            
            }//if
            
            this.indexed[c].style.zIndex = 100;
            this.indexed[c].style.display = "block";
            if ( this.headerelements[c]['backgroundcolor'] !== undefined ) 
                this.indexed[c].style.backgroundColor = this.headerelements[c]['backgroundcolor'];
            if ( this.headerelements[c]['width'] !== undefined ) 
                this.indexed[c].style.width = this.headerelements[c]['width'];
            if ( this.headerelements[c]['height'] !== undefined ) 
                this.indexed[c].style.height = this.headerelements[c]['height'];
            this.indexed[c].style.position = "fixed";
            this.indexed[c].style.cursor = "pointer";
            
            //create contents:
            var tbl = document.createElement('table');
                tbl.setAttribute('cellSpacing',0);
                tbl.setAttribute('border',0);
                tbl.setAttribute('cellPadding',0);
                
            var tbody = document.createElement('tbody');
            var tr = document.createElement('tr');
            
            tbl.appendChild(tbody);
            tbody.appendChild(tr);
            
            if ( this.headerelements[c]['icon'] !== undefined ) {
                var td = document.createElement('td');
                if ( this.headerelements[c]['icon']['width']) {
                    td.style.width = this.headerelements[c]['icon']['width'];
                }
                if ( this.headerelements[c]['icon']['width']) {
                    td.style.height = this.headerelements[c]['icon']['height'];
                }                
                if ( this.headerelements[c]['icon']['align']) {
                    td.style.textAlign = this.headerelements[c]['icon']['align'];
                }                
                var img = new Image();
                    img.src = this.headerelements[c]['icon']['src'];
                    td.appendChild(img);
                tr.appendChild(td);
            }//if
            
            var td = document.createElement('td');
                td.innerHTML = this.headerelements[c]['dom'].innerHTML;
            if ( this.headerelements[c]['style'] !== undefined ) {
                for ( var key in this.headerelements[c]['style'] ) {
                    td.style[key] = this.headerelements[c]['style'][key];
                }//for
            }//if
                                
            tr.appendChild(td);
        
            this.indexed[c].appendChild(tbl);
            
            resExt.addEventHandler(this.indexed[c],'click',function(c) {
                window.scrollTo(0,(resExt.getElementPosition(this.headerelements[c]['dom']).y));
            }.bind(this,c));

        }//for

        this.scroll();

    }//index

    
   /**
    * @access private
    **/
    HeaderIndex.prototype.scroll = function () {

        var y = window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
            y += self.innerHeight ? self.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight;
        for ( var c = 0; c < this.indexed.length; c++ ) {
            if ( ( y - 14 * ( this.indexed.length + 1 - c ) ) >= resExt.getElementPosition(this.headerelements[c]['dom']).y ) {
                try {
                    if ( this.headerelements[c]['opacity'] !== undefined ) {
                        this.indexed[c].style.opacity = this.headerelements[c]['opacity'] / 100;
                        //-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 
                        this.indexed[c].style.filter = 'alpha(opacity=' + this.headerelements[c]['opacity'] + ')';
                    }//if
                    this.indexed[c].parentNode.removeChild(this.indexed[c]);
                } catch (e) {

                }
            } else {
                document.getElementsByTagName("body")[0].appendChild(this.indexed[c]);
                this.indexed[c].style.bottom = (this.indexed[c].offsetHeight * ( this.headerelements.length - (c + 1) )) + "px";
                this.indexed[c].style.left = resExt.getElementPosition(this.headerelements[c]['dom']).x + "px";
            }
        }//for

    }//scroll
