/**
 * @name        Global Initialisation
 * @overview    An automated documentation publishing system for JavaScript.
 * @version        0.1
 * @revision    2007-06-01 00:00:00
 */

/**
 * @function    PageLoad_Init
 * @description    Toggles the class of elements either on or off
 */
var PRELOADS = new Object;
function PageLoad_Init () {
	
	// get relative path for js/images folder via iPathFinder
    var jsPath = fGetRelativePath();
    function fGetRelativePath(){
      var s = document.getElementById("iPathFinder");
      if(s == null) return "/_assets/js/"; // play safe, should never need to hard code this but just incase.
      return String(s.src).match(/.*[/]/gi);
    }
	
    PageLoad_Init_Corners ( )
    PageLoad_Init_FirstLast ( );
    PageLoad_Init_Links ( );
    PageLoad_Init_ContactForm ( );
    PageLoad_Init_FilterTypes ( );
    PageLoad_Init_SearchField ( );
    PageLoad_Init_unObtrusiveLink ( );
    PageLoad_Init_lightbox (jsPath);
    /*uncomment when new homepage and learnings section live */// PageLoad_Init_researchRollovers ();

    
    
    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 ( element.id ) {
                    PRELOADS['ovr' + element.id]            = new Image
                    PRELOADS['ovr' + element.id].src        = images[i];
                    PRELOADS['out' + element.id]            = new Object

                    PRELOADS['out' + element.id].src        = src
                    PRELOADS['out' + element.id].target        = imgId;
                    YAHOO.util.Event.addListener ( element, "mouseover", rollover );
                    YAHOO.util.Event.addListener ( element, "mouseout" , rollout  );
                }
            }
        }
    }
    if ( YAHOO.util.Dom.get ( 'iPanelIndustryFocus' ) ) {
        addEvents ( ['iFMCG', 'iTechnology', 'iFinance', 'iAutomotive', 'iPolitical' ],
                    [jsPath+'images/ro_fmcg.jpg',   jsPath+'images/ro_technology.jpg', jsPath+'images/ro_finance.jpg', jsPath+'images/ro_automotive.jpg', jsPath+'images/ro_politicalandpublicservices.jpg' ],
                    'iPanelIndustryFocusRollover'
                    )
    }
    if ( YAHOO.util.Dom.get ( 'iPanelOurExpertise' ) ) {
        addEvents ( [ 'iOurExpertiseSpeciaistExpertise', 'iOurExpertiseGlobalBrands', 'iOurExpertiseInsightServices' ],
                    [ jsPath+'images/ro_specialistexpertise.jpg', jsPath+'images/ro_globalbrands.jpg', jsPath+'images/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_researchRollovers
 * @description    --
 */
function PageLoad_Init_researchRollovers () {
	// add rollover js to research items
    
    var newsItem            = $DOM.getElementsBySelector ( 'div#iSearchResults ul.library li' );
    
    if ( newsItem ) {
        
        var _hover = function (ev, obj)
        {
            $DOM.addClass(this, 'underline');
        }
        
        var _out = function (ev, obj)
        {
            $DOM.removeClass(this, 'underline');
        }
        
        var _click = function (ev, obj)
        {
            //$DOM.removeClass(this, 'underline');
            var lnk        = this.getElementsByTagName('a')
            if(lnk.length){
                document.location    = lnk[0].href;    
            }
        }
        
            for ( var i = 0; i < newsItem.length; i++ )
                {
                    
                    /*@cc_on @*/
                    /*@if (@_jscript_version < 5.7)
                    $EVENT.addListener ( newsItem[i], "mouseover", _hover );
                    $EVENT.addListener ( newsItem[i], "mouseout", _out );
                    /*@end @*/
                    $EVENT.addListener ( newsItem[i], "click", _click );
                    
                }
        }
}

/**
 * @function    PageLoad_lightbox
 * @description    --
 */
function PageLoad_Init_lightbox (jsPath) {
	// code to check all links on page for link to image file, if so add the lightbox class
    var siteLinks        = document.getElementsByTagName('a');
    if (siteLinks){
	    for ( var i = 0; i < siteLinks.length; i++ ){
		    var linkHref = siteLinks[i].href;
			if(siteLinks[i].rel == "noLightbox") continue;
		    linkParts = linkHref.split('.');
		    if (linkParts[linkParts.length-1] == "jpg" || linkParts[linkParts.length-1] == "jpeg" || linkParts[linkParts.length-1] == "png"){
				siteLinks[i].setAttribute("rel", 'lytebox');
		    }
	    }
    }
}


/**
 * @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 ];
		
		// new global behaviour - all external links and downloadable files to open in a new window
		if(getLinkType(tmp_anchor) != null){
			tmp_anchor.target    = '_blank';
		}
		// if rel="external" - open in a new window
        if (tmp_anchor.getAttribute ('href') && tmp_anchor.getAttribute ('rel') == 'external') {
            tmp_anchor.target    = '_blank';
        };
		// if rel="internal" - open in SAME window
        if (tmp_anchor.getAttribute ('href') && tmp_anchor.getAttribute ('rel') == 'internal') {
            tmp_anchor.target    = '';
        };
    };
	function getLinkType(node){
		// check external
		var d = String(document.location.hostname).toLowerCase().split(".");
		if(d.length>1) { d[0] = ""; d = d.join("."); }
		var a = String(node.hostname).toLowerCase();
		if(a==""||a=="void(0)") return null;
		if(a.indexOf(d)<0) return "External";
		// get file name portion only
		a = String(node.href).toLowerCase().split("?");
		a = a[0].split("/");
		a = a[a.length-1];
		// check for PDF
		if(a.indexOf(".pdf")>-1) return "PDF";
		// check for DOC
		if(a.indexOf(".doc")>-1) return "DOC";
		return null;
	}
};
/**
 * @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');
        /*uncomment when new homepage and learnings section live *///$C.internal ( YAHOO.util.Dom.getElementsBySelector ( 'div#kantar' ), '', '', 2, 'div');
    };
};
/**
 *
 */
function PageLoad_Init_SearchField ( ) {
    var tmp_search    = YAHOO.util.Dom.get ( 'q' );
    if ( tmp_search ) {
        tmp_search.value    = 'search TNS Global'
        var tmp_focus = function ( ) {
            var tmp_val    = this.value.trim();
            if ( tmp_val == 'search TNS Global' ) {
                this.value    = ''
            };
        };
        var tmp_blur = function ( ) {
            var tmp_val    = this.value.trim();
            if ( tmp_val == '' || tmp_val == 'search TNS Global' ) {
                this.value    = 'search TNS Global'
            };
        };
        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  );        
    }
}

function PageLoad_Init_unObtrusiveLink ( )
{
    var deliciousLink        = document.getElementById('delicious');
    if  (
        deliciousLink
        )
    {
        deliciousLink.onclick    = function()
        {
            window.open(this.href, 'delicious','toolbar=no,width=700,height=400'); 
            return false;
        }
    }

    var stumbleLink        = document.getElementById('stumbleupon');
    if  (
        stumbleLink
        )
    {
        stumbleLink.onclick    = function()
        {
            window.open(this.href, 'stumbleupon','toolbar=no,width=700,height=400'); 
            return false;
        }
    }

    
    var links    =    document.getElementsByTagName('a');
    for(var i = 0 ; i < links.length; i++)
    {
        switch(true)
        {
            case /popUp/.test(links[i].className):
                links[i].onclick    =    function ()
                {                    
                    window.open(this.href, 'sendtofriend', 'location=0,toolbar=0,status=0,scrollbars=1,width=650,height=470');
                    return(false);
                }
                break;
        }
    }
}


// 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
        (
            '#iOurExpertiseMenu dt a'
            ,
            '#iOurExpertiseMenu 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');
                }
            }

        );
        var lnk = $ES('#iOurExpertiseMenu 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();