/**
 * @name        Global Initialisation
 * @overview    An automated documentation publishing system for JavaScript.
 * @version        0.1
 * @revision    2007-06-01 00:00:00
 * @author        Michael Ord <a href="mailto:michael.ord@think.eu">michael.ord@think.eu</a>
 */

/**
 * @function    PageLoad_Init
 * @description    Toggles the class of elements either on or off
 */
var PRELOADS = new Object;
function PageLoad_Init () {
    PageLoad_Init_Corners ( )
    PageLoad_Init_FirstLast ( );
    PageLoad_Init_Links ( );
    PageLoad_Init_ContactForm ( );
    PageLoad_Init_FilterTypes ( );
    PageLoad_Init_SearchField ( );
    var rollover = function ( ev ) {
        var b = YAHOO.util.Dom.get ( PRELOADS['out'+this.id].target )
        if ( b ) {
            b.src    = PRELOADS['ovr'+this.id].src
        }
    }
    var rollout = function ( ev ) {
        var b = YAHOO.util.Dom.get ( PRELOADS['out'+this.id].target )
        if ( b ) {
            b.src    = PRELOADS['out'+this.id].src
        }
    }
    var addEvents = function ( elements, images, imgId ) {
        if ( elements ) {
            for ( var i = 0; i < elements.length; i++ ) {
                var element    = YAHOO.util.Dom.get ( elements[i] )
                var img        = YAHOO.util.Dom.get ( imgId )
                var src        = null
                if ( img ) {
                    src        = img.src
                }
            }
        }
    }
    if ( YAHOO.util.Dom.get ( 'iPanelIndustryFocus' ) ) {
        addEvents ( ['iFMCG', 'iWorldpanel', 'iConsumer', 'iTechnology', 'iFinance', 'iMedia', 'iMediaIntelligence', 'iMediaResearch', 'iHealthcare', 'iAutomotive', 'iPolitical' ],
                    ['/_assets/ro_fmcg.jpg', '/_assets/ro_worldpanel.jpg', '/_assets/ro_consumer.jpg', '/_assets/ro_technology.jpg', '/_assets/ro_finance.jpg', '/_assets/ro_media.jpg', '/_assets/ro_mediaintelligence.jpg', '/_assets/ro_mediaresearch.jpg', '/_assets/ro_healthcare.jpg', '/_assets/ro_automotive.jpg', '/_assets/ro_politicalandpublicservices.jpg' ],
                    'iPanelIndustryFocusRollover'
                    )
    }
    if ( YAHOO.util.Dom.get ( 'iPanelOurExpertise' ) ) {
        addEvents ( [ 'iOurExpertiseSpeciaistExpertise', 'iOurExpertiseGlobalBrands', 'iOurExpertiseInsightServices' ],
                    [ '/_assets/ro_specialistexpertise.jpg', '/_assets/ro_globalbrands.jpg', '/_assets/ro_insightservices.jpg' ],
                    'iPanelOurExpertiseRollover'
                    )
    }
    var links    = YAHOO.util.Dom.getElementsBySelector ( 'div#iNavL2 ul li a.jsCollapse' )
    if ( links ) {
        var caller = function ( ev ) {
            var links    = YAHOO.util.Dom.getElementsBySelector ( 'div#iNavL2 ul li a.jsCollapse' )
            for ( var i = 0; i < links.length; i++ ) {
                var link    = links[i]
                var parent    = link.parentNode
                if ( link == this ) {
                    YAHOO.util.Dom.toggleClass ( parent, 'jsClosed' )
                } else {
                    YAHOO.util.Dom.addClass ( parent, 'jsClosed' )
                }
            }
            if ( ev ) {
                YAHOO.util.Event.stopEvent(ev);
            }
        }
        for ( var i = 0; i < links.length; i++ ) {
            var link    = links[i]
            var parent    = link.parentNode
            if ( !YAHOO.util.Dom.hasClass ( link, 'jsToggleOpen' ) ) {
            YAHOO.util.Dom.addClass ( parent, 'jsClosed' )
            }
            YAHOO.util.Event.addListener ( link, "click",  caller  );
        }
    }
};
/**
 * @function    PageLoad_Init_Links
 * @description    --
 */
function PageLoad_Init_Links ( ) {
    var tmp_anchors    = document.getElementsByTagName ('a');
    for (var i = 0; i < tmp_anchors.length; i++) {
        var tmp_anchor    = tmp_anchors [ i ];
        if (tmp_anchor.getAttribute ('href') && tmp_anchor.getAttribute ('rel') == 'external') {
            tmp_anchor.target    = '_blank';
        };
    };
};
/**
 * @function    PageLoad_Init_FirstLast
 * @description    Adds 'first' and 'last' classes to various elements
 */
function PageLoad_Init_FirstLast ( ) {
    $D                    = YAHOO.util.Dom;
    // add classes to columns
    var tmp_rows        = $D.getElementsByClassName ( 'row', 'div' );
    for ( var i = 0; i < tmp_rows.length; i++ ) {
        var tmp_row        = tmp_rows [ i ];
        var tmp_cols    = $D.getElementsByClassName ( 'col', 'div', tmp_row );
        if ( tmp_cols.length ) {
            $D.addClass ( tmp_cols [ 0 ], 'first' );
            $D.addClass ( tmp_cols [ tmp_cols.length - 1 ], 'last' );
        };
    };
    // add classes to lists
    var tmp_lists        = document.getElementsByTagName ( 'ul' );
    for ( var i = 0; i < tmp_lists.length; i++ ) {
        var tmp_list    = tmp_lists [ i ].getElementsByTagName ( 'li' );
        if ( tmp_list.length ) {
            $D.addClass ( tmp_list [ 0 ], 'first' );
            $D.addClass ( tmp_list [ tmp_list.length - 1 ], 'last' );
        }
    };
    var tmp_lists        = document.getElementsByTagName ( 'ol' );
    for ( var i = 0; i < tmp_lists.length; i++ ) {
        var tmp_list    = tmp_lists [ i ].getElementsByTagName ( 'li' );
        if ( tmp_list.length ) {
            $D.addClass ( tmp_list [ 0 ], 'first' );
            $D.addClass ( tmp_list [ tmp_list.length - 1 ], 'last' );
        }
    };
};
/**
 * @function    PageLoad_Init_Corners
 * @description    Add rounded corners to all elements that require them
 */
function PageLoad_Init_Corners ( ) {
    if ( ThinkCo.component.Corners ) {
        var $C        = ThinkCo.component.Corners;
        $C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'div.module h3' ), '', 2, 'span' );
        $C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'div.module h2' ), '', '', 2, 'span' );
        $C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'blockquote' ), '', '', 3, 'span' );
        $C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'div.links' ), '', '', 2, 'span' );
        $C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'div#iNavL2 ul li a' ), '', '', 2, 'span' );
        $C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'div#iNavL2 ul li span.here' ), '', '', 2, 'span' );
        $C.externalWrap ( YAHOO.util.Dom.getElementsBySelector ( 'div.module div.subcontainer' ), '', '', 2, 'div');
    };
};
/**
 *
 */
function PageLoad_Init_SearchField ( ) {
    var tmp_search    = YAHOO.util.Dom.get ( 'iSearchField' );
    if ( tmp_search ) {
        tmp_search.value    = ''
        var tmp_focus = function ( ) {
            var tmp_val    = this.value.trim();
            if ( tmp_val == '' ) {
                this.value    = ''
            };
        };
        var tmp_blur = function ( ) {
            var tmp_val    = this.value.trim();
            if ( tmp_val == '' || tmp_val == '' ) {
                this.value    = ''
            };
        };
        YAHOO.util.Event.addListener ( tmp_search, "focus", tmp_focus );
        YAHOO.util.Event.addListener ( tmp_search, "blur",  tmp_blur  );
    };
}
function PageLoad_Init_ContactForm ( ) {
    var tmp_searchBy    = YAHOO.util.Dom.get ( 'ContactForm_lstType' )
    if ( tmp_searchBy ) {
        var tmp_selectSector = YAHOO.util.Dom.get ( 'ContactForm_lstType_0' )
        var callerBySector = function ( ev ) {
            YAHOO.util.Dom.removeClass ( 'iFindExpertSector', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'iFindExpertServices', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectSector, "click",  callerBySector  );
        
        var tmp_selectBrand = YAHOO.util.Dom.get ( 'ContactForm_lstType_2' )
        var callerByBrand = function ( ev ) {
            YAHOO.util.Dom.addClass ( 'iFindExpertSector', 'jsHide' );
            YAHOO.util.Dom.removeClass ( 'iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'iFindExpertServices', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectBrand, "click",  callerByBrand  );
        var tmp_selectService = YAHOO.util.Dom.get ( 'ContactForm_lstType_1' )
        var callerByService = function ( ev ) {
            YAHOO.util.Dom.addClass ( 'iFindExpertSector', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.removeClass ( 'iFindExpertServices', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectService, "click",  callerByService  );
    }
}
function PageLoad_Init_FilterTypes ( ) {
    var tmp_searchBy    = YAHOO.util.Dom.get ( 'FilterTypes_lstType' )
    if ( tmp_searchBy ) {
        var tmp_selectSector = YAHOO.util.Dom.get ( 'FilterTypes_lstType_0' )
        var callerBySector = function ( ev ) {
            YAHOO.util.Dom.removeClass ( 'FilterTypes_iFindExpertSectors', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertServices', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertCountries', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectSector, "click",  callerBySector  );
        var tmp_selectBrand = YAHOO.util.Dom.get ( 'FilterTypes_lstType_2' )
        var callerByBrand = function ( ev ) {
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertSectors', 'jsHide' );
            YAHOO.util.Dom.removeClass ( 'FilterTypes_iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertServices', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertCountries', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectBrand, "click",  callerByBrand  );
        var tmp_selectService = YAHOO.util.Dom.get ( 'FilterTypes_lstType_1' )
        var callerByService = function ( ev ) {
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertSectors', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.removeClass ( 'FilterTypes_iFindExpertServices', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertCountries', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectService, "click",  callerByService  );
        var tmp_selectCountry = YAHOO.util.Dom.get ( 'FilterTypes_lstType_3' )
        var callerByCountry = function ( ev ) {
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertSectors', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertBrands', 'jsHide' );
            YAHOO.util.Dom.addClass ( 'FilterTypes_iFindExpertServices', 'jsHide' );
            YAHOO.util.Dom.removeClass ( 'FilterTypes_iFindExpertCountries', 'jsHide' );
        }
        YAHOO.util.Event.addListener ( tmp_selectCountry, "click",  callerByCountry  );        
    }
}
// add the event call
YAHOO.util.Event.onDOMReady ( PageLoad_Init );

// Homepage Accordion (requires js\thirdparty\mootools.js)
function Init_HmPgAccordion(){
    try{
        var accordion = new Accordion('dt a', 'dd', {
            opacity: false,
            show: 0,
            fixedHeight: 165, // same value in css for dl#iOurExpertiseMenu dd.open
            onActive: function(toggler, element){
                $(toggler.parentNode).addClass('open');
            },
            onBackground: function(toggler, element){
                $(toggler.parentNode).removeClass('open');
            }
        }, $('iOurExpertiseMenu'));
        var lnk = $ES('dt a', 'iOurExpertiseMenu');
        for (var i=0; i<lnk.length; i++) lnk[i].addEvent("click", function(event){ event = new Event(event); event.stop(); } );
    }catch(e){ }
}
Init_HmPgAccordion();