// Browser specific layout functions 
jQuery.fn.layOut = function() {

	if (browser.safari) { 
	    jQuery('input[type=file]').css({ backgroundColor: "transparent", border: "none"}); 
	};
		
    if (browser.winIE) {
        //jQuery('input:checkbox, input:radio, input:hidden').css({ border: "none", background: "none" });
//        jQuery('#container.wide .right-pane:first').insertBefore("#container.wide .content-pane");
    }
}

jQuery.fn.fontSize = function() {
    // Set events
    jQuery.each(['txt-size-01', 'txt-size-02', 'txt-size-03'], function(i, v) {
        jQuery("." + v).click(function(event) {
            event.preventDefault();
            jQuery("body").removeClass();
            jQuery.cookie("fontSize", v, { path: '/', expires: -1 });
            if (v != 'txt-size-01') {
                jQuery("body").addClass(v);
            }
            return false;
        });
    });
    // Read cookie
    var val = jQuery.cookie("fontSize");
    if (val && (val != '') && (val != 'txt-size-01')) {
        jQuery("body").addClass(val);
    }
}



// Toggle input value
jQuery.fn.toggleVal = function() {
    return this.focus(function() {
        if (this.value == this.defaultValue) {
            this.value = "";
        }
    }).blur(function() {
        if (!this.value.length) {
            this.value = this.defaultValue;
        }
    });
};

// Toggle div sequence
jQuery.fn.toggleSeq = function(id, class1, class2) {
    jQuery('#' + id + ' li a:first').addClass(class2);
    jQuery('#' + id + ' li div:first').show();
    jQuery('#' + id + ' li a').click(function() {
        var checkElement = jQuery(this).next();
        if (checkElement.is('div.drempel')) {
            if (!checkElement.is(':visible')) {
                jQuery('#' + id + ' li a').removeClass(class2);
                jQuery(this).addClass(class2);
                jQuery('#' + id + ' div.drempel:visible').animate({ height: 'toggle' }, { queue: true, duration: 600 }); //, opacity: 'toggle' breaks cleartype IE7	
                checkElement.animate({ height: 'toggle' }, { queue: true, duration: 600 }); //, opacity: 'toggle' breaks cleartype IE7
            }
            return false;
        }
    });
};

// Toggle div
jQuery.fn.toggleDiv = function(text1, text2, class1, class2) {
    return this.toggle(function() {
        var el = jQuery('#' + this.href.split('#')[1]);
        jQuery(this).text(text2);
        jQuery(this).removeClass(class1);
        jQuery(this).addClass(class2);
        el.animate({ height: 'toggle' }, { queue: false, duration: 600 }); //, opacity: 'toggle' breaks cleartype IE7
    }, function() {
        var el = jQuery('#' + this.href.split('#')[1]);
        jQuery(this).text(text1);
        jQuery(this).removeClass(class2);
        jQuery(this).addClass(class1);
        el.animate({ height: 'toggle' }, { queue: false, duration: 400 }); //, opacity: 'toggle' breaks cleartype IE7
    });
};


// Tooltips
jQuery.fn.tooltip = function() {
    xOffset = -20;
    yOffset = 0;
    jQuery("a.tooltip, span.insight-none").hover(function(e) {
        if (jQuery(this).hasClass('insight')) {
            this.t = this.title;
            this.title = "";
            jQuery("body").append("<p id='tooltip'>" + this.t + "</p>");
            jQuery("#tooltip")
			.css("top", (e.pageY - xOffset) + "px")
			.css("left", (e.pageX + yOffset) + "px")
			.fadeIn("fast");
        }
    },
	function() {
	    this.title = this.t;
	    jQuery("#tooltip").remove();
	});
    jQuery("a.tooltip, span.insight").mousemove(function(e) {
        jQuery("#tooltip")
			.css("top", (e.pageY - xOffset) + "px")
			.css("left", (e.pageX + yOffset) + "px");
    });
};

/**********************************************************************
/**********************************************************************
/ EXTERNAL.JS
/**********************************************************************
/**********************************************************************/

//open external links in new window
jQuery.fn.externalLinks = function() {
    var localDomain = (location.href.split('/')[2]);
    var base = jQuery('base');
    if (base.length > 0) {
        localDomain = base[0].href.replace('http://', '').replace('/', '');
    }	
    var localExtensionsInNewWindow = Array('doc', 'xls', 'pdf');
    var list = document.getElementsByTagName('A');
    for (var i = 0; i < list.length; i++) {
        var aEl = list[i];
        var aElHref = aEl.href;
        // check for extensions
        var extension = (aElHref.substring(aElHref.length - 4, aElHref.length)).toLowerCase();
        var foundExtension = false;
        for (var j = 0; j < localExtensionsInNewWindow.length; j++) {
            if (extension == '.' + localExtensionsInNewWindow[j]) {
                foundExtension = true;
                break;
            }
        };

        // open in new window if conditions are right
        // open in new window if conditions are right
        if ((aElHref.split('/')[2] != localDomain &&
                aElHref.indexOf('mailto:') == -1 &&
                aElHref.indexOf('javascript:') == -1 &&
                aEl.className != 'ICAP_ImageGalleryThumb' &&
                !$(aEl).hasClass('jsNotExternal') &&
                aElHref.indexOf('#') != 0) || foundExtension) {
            $(aEl).addClass('external');

            $(aEl).click(function () {
                window.open(this.href);
                return false;
            });
        }
    }
};

/**********************************************************************
/**********************************************************************
/ TABLES.JS
/**********************************************************************
/**********************************************************************/

function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Scott Andrew 
{
    if (elm.addEventListener) {
        elm.addEventListener(evType, fn, useCapture);
        return true;
    } else if (elm.attachEvent) {
        var r = elm.attachEvent('on' + evType, fn);
        return r;
    } else {
        elm['on' + evType] = fn;
    }
}

// climb up the tree to the supplied tag.
function ascendDOM(e, target) {
    while (e.nodeName.toLowerCase() != target &&
      e.nodeName.toLowerCase() != 'html')
        e = e.parentNode;

    return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

// turn on highlighting
function hi_cell(e) {
    var el;
    if (document.getElementById('gri') || document.getElementById('bestelform')){}
    else {

        if (window.event && window.event.srcElement)
            el = window.event.srcElement;
        if (e && e.target)
            el = e.target;
        if (!el) return;

        el = ascendDOM(el, 'td');
        if (el == null) return;


        var parent_row = ascendDOM(el, 'tr');
        if (parent_row == null) return;

        var parent_table = ascendDOM(parent_row, 'table');
        if (parent_table == null) return;

        // row styling
        parent_row.className += ' hi';

    }
}

// turn on highlighting definitive on click
function hi_cell_def(e) {
    var el;
    if (window.event && window.event.srcElement)
        el = window.event.srcElement;
    if (e && e.target)
        el = e.target;
    if (!el) return;

    el = ascendDOM(el, 'td');
    if (el == null) return;

    var parent_row = ascendDOM(el, 'tr');
    if (parent_row == null) return;

    var parent_table = ascendDOM(parent_row, 'table');
    if (parent_table == null) return;

    // row styling
    // check for hi_def: if not set hi_def class else remove hi_def class
    var occur = parent_row.className.indexOf('hi_def');
    //alert(occur);
    if (occur > -1) {
        parent_row.className = parent_row.className.replace(/\b ?hi_def\b/, '');
    } else {
        parent_row.className += ' hi_def';
    }

}

// turn off highlighting
function lo_cell(e) {
    var el;
    if (window.event && window.event.srcElement)
        el = window.event.srcElement;
    if (e && e.target)
        el = e.target;
    if (!el) return;

    el = ascendDOM(el, 'td');
    if (el == null) return;

    var parent_row = ascendDOM(el, 'tr');
    if (el == null) return;

    var parent_table = ascendDOM(parent_row, 'table');
    if (el == null) return;

    // row de-styling
    parent_row.className = parent_row.className.replace(/\b ?hi\b/, '');
}


function addListeners() {
    if (!document.getElementsByTagName) return;
    var all_cells = document.getElementsByTagName('td');
    for (var i = 0; i < all_cells.length; i++) {
        addEvent(all_cells[i], 'mouseover', hi_cell, false);
        addEvent(all_cells[i], 'mouseout', lo_cell, false);
        addEvent(all_cells[i], 'click', hi_cell_def, false);
    }
}


/**********************************************************************
/**********************************************************************
/ MYREPORT.JS
/**********************************************************************
/**********************************************************************/

function fnMy_CheckboxSelected() {
    var oneOrMoreChecked = false;
    var checkBoxTable = document.getElementById('checkboxTable');

    var inputs = checkBoxTable.getElementsByTagName('input');
    for (var i = 0; i < inputs.length; i++) {
        if (inputs.item(i).checked) {
            oneOrMoreChecked = true;
        }
    }
    
    if (!oneOrMoreChecked) { 
        alert('Selecteer een of meer artikel(en) voor download.') 
    };
    return oneOrMoreChecked;
}
 
/**********************************************************************
/**********************************************************************
/ Jargon
/**********************************************************************
/**********************************************************************/

function fnSwitchJargon() {
    jQuery('span.insight, span.insight-none').toggleClass('insight').toggleClass('insight-none')
}

/**********************************************************************
/**********************************************************************
/ Send to friend
/**********************************************************************
/**********************************************************************/

function fnOpenSendToFriend(strUrl) {
    var strPopinUrl = jQuery('base')[0].href + 'ContentControls/Forms/SendToFriend.aspx?strUrl=' + escape(strUrl)
    pageTracker._trackPageview('CT send to friend');
    return Aspacts.Idios3.I_CAP.Scripting.InlineWin.OpenPopinUrlStyle(strPopinUrl, 475, 330, true, 'sendafriend-')
}


/**********************************************************************
/**********************************************************************
/ STARTUP CODE
/**********************************************************************
/**********************************************************************/

jQuery(function() {

    // Noscript and drempelvrij 
    jQuery('.drempel').css({ 'display': 'none' });
    jQuery('.noscript').css({ 'display': 'block !important' });

    // Suckerfish
    jQuery("ul.nav li").hover(
        function() { $(this).addClass("active"); },
        function() { $(this).removeClass("active"); }
    );

    // Table events
    addListeners();

    // Activate layout miniplugins
    jQuery('html').externalLinks();
    jQuery('html').layOut();
    jQuery('html').fontSize();
    jQuery('html').tooltip();
    jQuery('html').pngFix();
    jQuery('.togval').toggleVal();

    jQuery('a.opmerking').click(
        function() { $('#mylist').slideToggle('slow'); }
    );

    jQuery('a.close-list').click(
        function() {
            $('#mylist').slideToggle('slow');
            return false;
        }
    );


    // FacetMenu accordion

    selectedFacet = jQuery('#facet-container .nav-list-title-selected');

    if (selectedFacet) {
        // facet!
        //            jQuery(selectedFacet).removeClass('selectedFacet');
        jQuery(selectedFacet).next().addClass('open');
    }
    else {
        // geen facet
        jQuery('#facet-container .nav-list').first().addClass('open');
    }


    // close all other panes
    jQuery('#facet-container .nav-list').not('.open').hide();
    jQuery('#facet-container .nav-list-selected').not('.open').hide();


    // FacetMenu accordion
    jQuery('#facet-container .nav-list-title').click(function() {


        var hasOpen = jQuery(this).next().hasClass('open');
        if (!hasOpen) {
            // Opening           
            jQuery('.open').not(this).slideToggle();
            jQuery('.open').prev().children(0).attr('class', jQuery('.open').prev().parent().attr('id'));
            jQuery('.open').not(this).removeClass('open');

            jQuery(this).next().addClass('open');
        } else {
            // Closing
            jQuery(this).children(0).attr('class', jQuery(this).parent().attr('id'));
            jQuery(this).next().removeClass('open');
        }
        jQuery(this).next().slideToggle();
        return false;
    });

    // FacetMenu accordion
    jQuery('#facet-container .nav-list-title-selected').click(function() {


        var hasOpen = jQuery(this).next().hasClass('open');
        if (!hasOpen) {
            // Opening           
            jQuery('.open').not(this).slideToggle();
            jQuery('.open').prev().children(0).attr('class', jQuery('.open').prev().parent().attr('id'));
            jQuery('.open').not(this).removeClass('open');

            jQuery(this).next().addClass('open');
        } else {
            // Closing
            jQuery(this).children(0).attr('class', jQuery(this).parent().attr('id'));
            jQuery(this).next().removeClass('open');
        }
        jQuery(this).next().slideToggle();
        return false;
    });

    jQuery('#page-container-wide').hide();

    jQuery('#open-options-wide').click(function() {
        jQuery('#page-container-wide').slideToggle();
        return false;
    });

});

