/**
 * @name        Global Initialisation
 * @overview    An automated documentation publishing system for JavaScript.
 * @version        0.1
 * @revision    2007-06-01 00:00:00
 */

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_researchRollovers ( );
    PageLoad_Init_fade();

};

var fade_images
var fade_currentIndex = 0;
var fade_interval
var fade_previousIndex
var fade_showDuration = 3000;

function PageLoad_Init_fade() {
    var container = $('fade-group');
    if (container) {
        fade_images = container.getElements('.module');

        if (fade_images.length > 1) {
            fade_previousIndex = fade_images.length - 1
            fade_images.each(function (img, i) { fader(i, 0); });
            fader(fade_currentIndex, 100);
            window.setTimeout("crossfade(100)", fade_showDuration);
        }
    }
}

function fader(imageNumber, opacity) {
    var obj = fade_images[imageNumber];
    if (obj.style) {
        if (obj.style.MozOpacity != null) {
            obj.style.MozOpacity = (opacity / 100) - .001;
        } else if (obj.style.opacity != null) {
            obj.style.opacity = (opacity / 100) - .001;
        } else if (obj.style.filter != null) {
            obj.style.filter = "alpha(opacity=" + opacity + ")";
        }
    }
}

function crossfade(opacity) {
    if (opacity < 100) {
        fader(fade_currentIndex, opacity);
        opacity += 5;
        window.setTimeout("crossfade(" + opacity + ")", 30);
    } else {
        fader(fade_previousIndex, 0);
        fade_previousIndex = fade_currentIndex;
        fade_currentIndex += 1;

        if (fade_currentIndex >= fade_images.length) {
            fade_currentIndex = 0;
        }
        fade_images[fade_previousIndex].style.zIndex = 0;
        fade_images[fade_currentIndex].style.zIndex = 100;
        opacity = 0;
        window.setTimeout("crossfade(" + opacity + ")", fade_showDuration);
    }
}

/**
 * @function    PageLoad_Init_researchRollovers
 * @description    --
 */
function PageLoad_Init_researchRollovers () {
	// add rollover js to research items
    
    var items            = $DOM.getElementsBySelector ( 'div#iSearchResults ul.library li' );
    
    if ( items ) {
        
        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).getElementsBySelector('h3 a')

            if(lnk.length){
                document.location = lnk[0].href;    
            }
        }
        
            for ( var i = 0; i < items.length; i++ )
                {
                    
                    /*@cc_on @*/
                    /*@if (@_jscript_version < 5.7)
                    $EVENT.addListener ( items[i], "mouseover", _hover );
                    $EVENT.addListener ( items[i], "mouseout", _out );
                    /*@end @*/
                    // $EVENT.addListener ( items[i], "click", _click );
                    
                }
        }
}



/**
 * @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();


