/**
 * htdig javscript
 * - form auslesen
 * - ergebniss hohlen
 * - walktable und ergebnisse schreiben  
 */
    
/* global {{{*/
    var myGlobalHandlers = {
        onCreate: function( ){
            $( 'systemWorking' ).style.display = 'block';
        },

        onComplete: function() {
            if(Ajax.activeRequestCount == 0 ){
                $( 'systemWorking' ).style.display = 'none';
            }
        }
    };
    Ajax.Responders.register(myGlobalHandlers);
/*}}}*/

    var ftssFormCheck;

    var ftssWtLink = Class.create();
    ftssWtLink.prototype = {/*{{{*/
        initialize: function( link, page ) {
            this.link = link;
            this.page = page;

            link.onclick = this.loadPage.bindAsEventListener( this );
            return true;
        },

        loadPage: function( evt ) {
            var ff = $( 'ftss' );
            ftssFormCheck = new ftssForm( ff, this.page );
            return false;
        }
    }/*}}}*/

    var ftssForm = Class.create();
    ftssForm.prototype = {/*{{{*/

       initialize: function( ff, page ) {
            this.ff     = ff;
            //this.sf     = $( 'suchfeld' );
//alert( 'test: '+sf );
            this.params  = Form.serialize( ff )+'&page='+(page+1);
            //this.params = 'search='+sf.value+'&page='+(page+1);
            this.url     = '/xml/ftss.xml';
            this.target  = 'response';
            this.loadValues( );

//document.write( 'url: '+this.url+' --> '+escape( this.params ));
            return false;
       },

       loadValues: function( ) {

            var ftssReq = new Ajax.Request( 
                                this.url, 
                              { 
                                method: 'get',                                                                                                              
                                parameters: this.params,
                                onComplete: this.updateContent
                               });
            return false;
        },

        updateContent: function( serverResponse ) {

            var target = $( 'response' );
                target.innerHTML = '';

            var xmlDoc          = serverResponse.responseXML;

            var wMatches        = xmlDoc.getElementsByTagName( 'matches' )[0].firstChild.data; 
            var wFirst          = xmlDoc.getElementsByTagName( 'firstdisplayed' )[0].firstChild.data; 
            var wLast           = xmlDoc.getElementsByTagName( 'lastdisplayed' )[0].firstChild.data; 
            var wLSearch        = xmlDoc.getElementsByTagName( 'words' )[0].firstChild.data; 
            var wPage           = xmlDoc.getElementsByTagName( 'page' )[0].firstChild.data; 
            var wPages          = xmlDoc.getElementsByTagName( 'pages' )[0].firstChild.data; 

//alert( 'page: '+wPage );

            if( wFirst < 1 ) {/*{{{*/
                var sError          = xmlDoc.getElementsByTagName( 'error' )[0].firstChild.data; 
                var wErrorText      = document.createTextNode( 'Fehler: '+sError );
                var wError          = document.createElement( 'p' );
                    wError.appendChild( wErrorText );
                    wError.className= 'werror';
                    target.appendChild( wError );
/*}}}*/

            } else if( wMatches == 0 ) {/*{{{*/
                var wErrorText      = document.createTextNode( 'keine Treffer fuer "'+wLSearch+'"' );
                var wError          = document.createElement( 'p' );
                    wError.appendChild( wErrorText );
                    wError.className= 'werror';
                    target.appendChild( wError );
/*}}}*/

            } else {

                var wSearch         = xmlDoc.getElementsByTagName( 'words' )[0].firstChild.data; 
                var responseHits    = xmlDoc.getElementsByTagName( 'hit' );

              // walktable /*{{{*/
                //var wTHeadText      = document.createTextNode( 'Results '+wFirst+' - '+wLast+' / '+wMatches+' for '+wSearch+'('+wLSearch+')' );
                var wTHeadText      = document.createTextNode( wFirst+' - '+wLast+' / '+wMatches+' -- "'+wLSearch+'"' );
                var wTHead          = document.createElement( 'p' );
                    wTHead.appendChild( wTHeadText );
                    wTHead.className= 'wthead';

                var wTTable          = document.createElement( 'p' );
                    wTTable.className= 'wttable';
                    wTTable.id = 'wttable';

                var wTEnd          = document.createElement( 'p' );
                    wTEnd.className= 'wtend';
                    wTEnd.id = 'wtend';

                //wPages = wMatches / 10 + 1;
		
                for( var b=1; b <= wPages ;++b ) {
                    var pageLinkText    = document.createTextNode( b );
                    var pageLink        = document.createElement( 'a' );
                        pageLink.appendChild( pageLinkText );
                        if( wPage == b ) { pageLink.className= 'active'; }
                        pageLink.href   = '?'+this.params+'&page='+w;
                        wTTable.appendChild( pageLink );
                }

                var wT              = document.createElement( 'div' );
                    wT.className    = 'walktable';
                    wT.appendChild( wTHead );
                    wT.appendChild( wTTable );
                    wT.appendChild( wTEnd );
                    wTHead.className= 'wthead';

                    target.appendChild( wT );


                var wtLinks = document.getElementById( 'wttable' ).childNodes;
                for( var w=0; w < wtLinks.length ;w++ ) {
                    var check = new ftssWtLink( wtLinks[w], w );
                }/*}}}*/
 
              // results /*{{{*/
                for( var a=0; a < responseHits.length ;a++ ) {
                    
                    var xmlRow = responseHits[a];

                    var rTitle        = xmlRow.getElementsByTagName( 'title' )[0].firstChild.data; 
                    var rUrl          = xmlRow.getElementsByTagName( 'url' )[0].firstChild.data; 
                    var rPercent      = xmlRow.getElementsByTagName( 'percent' )[0].firstChild.data; 

                    var rExerpt       = ( xmlRow.getElementsByTagName( 'exerpt' ).hasChildNodes ) 
                                            ? xmlRow.getElementsByTagName( 'exerpt' )[0].firstChild.data : '';
                    var rDescription  = ( xmlRow.getElementsByTagName( 'description' ).hasChildNodes ) 
                                            ? xmlRow.getElementsByTagName( 'description' )[0].firstChild.data : '';

                    var tTextNode   = document.createTextNode( rTitle+' ['+rPercent+'%]' );
                    var tLink       = document.createElement( 'a' );
                        tLink.className = 'title';
                        tLink.href      = rUrl;
                        tLink.target    = '_blank';
                        tLink.appendChild( tTextNode );

                    var uTextNode   = document.createTextNode( rUrl );
                    var uLink       = document.createElement( 'a' );
                        uLink.className = 'url';
                        uLink.href      = rUrl;
                        uLink.target    = '_blank';
                        uLink.appendChild( uTextNode );

                    var eText       = rDescription+' '+rExerpt;
                        eText       = eText.replace( /<\/?strong>/gi, '' );
                        eText       = eText.replace( /<\/?b>/gi, '' );
                        eText       = eText.replace( /<\/?tt>/gi, '' );
                        //eText       = eText.replace( /<b><tt>\.\.\. <\/tt><\/b>/gi, '...' );
                    var eTextNode   = document.createTextNode( 'test' );
                        eTextNode.nodeValue   = eText;

                    var rBody          = document.createElement( 'p' );
                        rBody.appendChild( eTextNode );
                        rBody.className= 'body';

                    var rRow        = document.createElement( 'div' );
                        rRow.className = 'hit';
                        rRow.appendChild( tLink );
                        rRow.appendChild( rBody );
                        rRow.appendChild( uLink );

                        target.appendChild( rRow );
                }/*}}}*/

            }

            var highlightStartTag = "<span class='hl'>";
            var highlightEndTag = "</span>";

//            bText       = target.innerHTML;
//            bText       = bText.replace( new RegExp( '('+wSearch+')', 'gi' ), highlightStartTag+'\$1'+highlightEndTag );
//            target.innerHTML = bText;

           return true;
        }
    };/*}}}*/

/*
    var ff = $( 'ftss' );
    ftssFormCheck = new ftssForm( ff, this.page );
*/
