// global header search functionality
var j247search = (function() {

		//HEADER PROPERTIES
    var _isie = null; //CHECK FOR IE and NOT Strict
    var isie = (function() {
        if (_isie == null) {
            var d = document.doctype
            strict = (document.compatMode == "CSS1Compat")
            strict = (d && d.systemId ? (d.systemId.indexOf("strict") > -1 ? true : (d.publicId.indexOf("transitional") > -1 ? true : false)) : (d && d.publicId.indexOf("transitional") == -1 ? true : strict))
            strict = (d && d.name.indexOf(".dtd") > -1) ? true : strict
            _isie = !strict && navigator.userAgent.indexOf('MSIE') >= 0;
        }
        return _isie;
    } ());

    //HEADER FIELDS
    var menuTopOffset = isie ? -3 : 0;
    var menuLeftOffset = isie ? -3 : 0;
    var linkOffset = isie ? 0 : -15;
    var output = {};
    var timerOut = null;
    var menuOutTime = 250;
    var currentItemId = null;

    //HEADER FUNCTIONS			
    function position(o) {
        var fixBrowserQuirks = true;
        var left = 0, top = 0, parentNode = null, offsetParent = null;
        offsetParent = o.offsetParent;
        var originalObject = o;
        var el = o;
        while (el.parentNode != null) {
            el = el.parentNode;
            if (el.offsetParent != null) {
                var considerScroll = true;
                if (fixBrowserQuirks && window.opera) {
                    if (el == originalObject.parentNode || el.nodeName == "TR") { considerScroll = false; }
                }
                if (considerScroll) {
                    if (el.scrollTop && el.scrollTop > 0) { top -= el.scrollTop; }
                    if (el.scrollLeft && el.scrollLeft > 0) { left -= el.scrollLeft; }
                }
            }
            if (el == offsetParent) {
                left += o.offsetLeft;
                if (el.clientLeft && el.nodeName != "TABLE") { left += el.clientLeft; }
                top += o.offsetTop;
                if (el.clientTop && el.nodeName != "TABLE") { top += el.clientTop; }
                o = el;
                if (o.offsetParent == null) {
                    if (o.offsetLeft) { left += o.offsetLeft; }
                    if (o.offsetTop) { top += o.offsetTop; }
                }
                offsetParent = o.offsetParent;
            }
        }
        return { 'top': top, 'left': left };
    }
    function getItems(id) {
        return {
            'child': document.getElementById('subNav' + id),
            'parent': document.getElementById('nav' + id)
        };
    }
    function fixedSub(sub, parent) {
        //FIX FOR UHP
        var d = document.getElementById('userdisplay');
        var uhpOffset = 0;
        if (d && d.className === 'module' && d.tagName === 'DIV') { uhpOffset = 1; }

        var items = sub.getElementsByTagName('LI');
        var max = 140;
        for (var i = 0; i < items.length; i++) {
            if (max < items[i].offsetWidth) { max = items[i].offsetWidth; }
        }
        if (max < parent.offsetWidth) max = parent.offsetWidth;

        sub.style.width = max + 'px';
        for (var i = 0; i < items.length; i++) {
            items[i].style.width = max + 'px';
            items[i].getElementsByTagName('A')[0].style.width = (max + linkOffset + uhpOffset) + 'px';

        }
    }
    function hideDropDown(id) {
        var subNavDropDown = getItems(id);
        subNavDropDown.parent.className = '';
        framer.style.left = '-100000px';
        framer.style.display = 'none';
        subNavDropDown.child.style.left = '-100000px';
        timerOut = null;
        currentItemId = null;
    }
    function getSubNav(id) {
        var items = getItems(id);
        var subNavDropDown = {};
        subNavDropDown.parent = items.parent;
        subNavDropDown.child = items.child;
        fixedSub(subNavDropDown.child, subNavDropDown.parent)
        var pos = position(items.parent);

        subNavDropDown.childLeft = (pos.left + menuLeftOffset) + 'px';
        subNavDropDown.childTop = (pos.top + items.parent.offsetHeight + menuTopOffset) + 'px';
        return subNavDropDown;
    }

    output.toggle = function(id, show) {

        if (show) {

            var subNavDropDown = getSubNav(id);

            //cancel the time
            if (timerOut) {
                clearTimeout(timerOut);
                timerOut = null;
            }

            //turn off previous					
            if (currentItemId != null) {
                var current = getItems(currentItemId);
                current.parent.className = '';
                framer.style.left = '-100000px';
                current.child.style.left = '-100000px';
                currentItemId = null;
            }

            //turn-on new one
            subNavDropDown.child.style.left = subNavDropDown.childLeft
            subNavDropDown.child.style.top = subNavDropDown.childTop
            subNavDropDown.parent.className = 'open';

            currentItemId = id;
        }
        else {
            timerOut = setTimeout(function() { hideDropDown(id); }, menuOutTime);
        }
    };
    output.subToggle = function(id, show) {

        if (show) {
            if (timerOut) {
                clearTimeout(timerOut);
                timerOut = null
            }
        }
        else {
            timerOut = setTimeout(function() { hideDropDown(id); }, menuOutTime);
        }
    }

    output.applyAlphaImageLoader = function(id, url, method) {
        var el = document.getElementById(id);
        if (el == null) return;
        var img = new Image();
        img.src = url;
        el.style.backgroundImage = 'none';
        $addHandler(window, 'load', function() {
            el.style.filter = 'progid:DXImagetransform.Microsoft.AlphaImageLoader(enabled="true", src="' + url + '", sizingMethod="' + method + '");';
        });
    }


    //HEADER SEARCH FUNCTION & FIELDS
    var searchTypesOn = 0;
    var searchTimer = null;
    output.openSearchTypes = function() {
        var args = j247search.openSearchTypes.arguments;
        var searchList = document.getElementById('srchMenuList');
        if (searchList == null) {
            //no search list found.
            return;
        }

        searchList.className = 'open';

        var pos = position(searchList);

        clearTimeout(searchTimer);
        searchTimer = null;
    };
		
    output.hideSearchTypes = function() {
        searchTimer = setTimeout(function() {

            if (document.getElementById('srchMenuList'))
                document.getElementById('srchMenuList').className = '';

            searchTimer = null;
        }, 500);
    };
    output.switchSearchTypeTo = function(v) {
        var _after = '<small>&#9660;</small>';
        var blnFromFooter = true;
        var types;

        if (document.getElementById('search_t')) {
            document.getElementById('search_t').value = v;
            blnFromFooter = false;
        }
        
        types = document.getElementById('srchMenuList').getElementsByTagName('A');

        for (var t = 0; t < types.length; t++) {
            var targetID = v;
           
            if (types[t].id == targetID) {

                if ($get('searchTypeValue'))
                    $get('searchTypeValue').innerHTML = types[t].innerHTML + _after;
                
                break;
            }
        }

        if (document.getElementById('srchMenuList'))
            document.getElementById('srchMenuList').className = '';

        clearTimeout(searchTimer);
        searchTimer = null;
    };
    output.srchMenuList = function(isOn) {
        if (isOn) {
            clearTimeout(searchTimer);
            searchTimer = null;
        }
        else {
            searchTimer = setTimeout(function() {

                if (document.getElementById('srchMenuList'))
                    document.getElementById('srchMenuList').className = '';

                searchTimer = null;
            }, 500);
        }
    };
		
		output.getFormAction = function() {
				var q = document.getElementById('search_q');
				var t = document.getElementById('search_t');
			
				if (q.value.length <= 0)
						return false;
					
				document.getElementById('srch').action = t.value == 'Blog' ? 'http://blog.journey247.com' : 'http://www.journey247.com/groups/map';
				document.getElementById('search_q').name = t.value == 'Blog' ? 's' : 'search';
				return true;
		};

		return output;

} ());	
