/**
 * @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 () {
    PageLoad_Init_Corners ( )
    PageLoad_Init_FirstLast ( );
    PageLoad_Init_Links ( );
    PageLoad_Init_ContactForm ( );
    PageLoad_Init_FilterTypes ( );
    PageLoad_Init_unObtrusiveLink ( );
    PageLoad_Init_SearchField ( );
    PageLoad_Init_sendToFriend();
    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  );
                }
            }
        }
    }

    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 ];
		
		// 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    = '';
        };
		
        if  (
            tmp_anchor.className
            &&
            /newwindow/.test(tmp_anchor.className) 
            )
        {
            tmp_anchor.onclick = function ()
            {
                window.open(this.href);
                return false;
            }
        }  
    };
		
	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');
    };
};
/**
 *
 */
function PageLoad_Init_SearchField ( ) {
    var tmp_search    = YAHOO.util.Dom.get ( 'q' );
    if ( tmp_search ) {
        tmp_search.value    = 'search TNS'
        var tmp_focus = function ( ) {
            var tmp_val    = this.value.trim();
            if ( tmp_val == 'search TNS' ) {
                this.value    = ''
            };
        };
        var tmp_blur = function ( ) {
            var tmp_val    = this.value.trim();
            if ( tmp_val == '' || tmp_val == 'search TNS' ) {
                this.value    = 'search TNS'
            };
        };
        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 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;
        }
    }
}

function PageLoad_Init_sendToFriend ()
{
    var container = document.getElementById('send-to-friend');
    if  (
        container 
        )
    {
        var el       =    document.createElement('input');
        el.setAttribute('type','button');
        el.setAttribute('value','Cancel');
        el.className    =    'cancel';
        el.onclick = function ()
        {
            window.close();
        }
        container.appendChild(el);
    }
}

// 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();
