﻿$(document).ready(function () {

    /* JQ-VALIGN *********************************************************************/
    //vertically align elements with class jq-valign
    $('.jq-valign').each(function () {
        $(this).vAlign();
    });

    /* JQ-HOVER *************************************************************************/
    //sets class jq-hover-on on elements (with class jq-hover) when hovering/focusing the element
    $('.jq-hover').each(function () {
        $(this).focusin(function () { $(this).addClass("jq-hover-on"); });
        $(this).focusout(function () { $(this).removeClass("jq-hover-on"); });
        $(this).hover(function () { $(this).addClass("jq-hover-on"); }, function () { $(this).removeClass("jq-hover-on"); });
    });

    /* JQ-LIST-POS recursive *************************************************************/
    //if table, ul or ol has class jq-list-pos: add jq-list-pos class to any eqv children to
    $('table.jq-list-pos, ul.jq-list-pos, ol.jq-list-pos').each(function () {
        $(this).find('table, ul, ol').addClass('jq-list-pos');
    });

    /* JQ-LIST-POS init ******************************************************************/
    //add position classes (jq-odd, jq-even, jq-first, jq-last, jq-single) to items 
    //in list containers classed 'jq-list-pos', applies to table- and ul child elements    
    $('table.jq-list-pos, ul.jq-list-pos, ol.jq-list-pos').each(function () {

        var $$ = $(this);

        $$.focusin(function () { $(this).addClass("jq-hover"); });
        $$.focusout(function () { $(this).removeClass("jq-hover"); });
        $$.hover(function () { $(this).addClass("jq-hover"); }, function () { $(this).removeClass("jq-hover"); });

        $$.children('tr:odd, li:odd').addClass('jq-odd');
        $$.children('tr:even, li:even').addClass('jq-even');
        $$.children('tr:first, li:first').addClass('jq-first');
        $$.children('tr:last, li:last').addClass('jq-last');
        $$.children('tr:only-child, li:only-child').addClass('jq-single');

        /* handle table td element*/
        $$.find('tr').each(function () {
            $$.children('td:odd').addClass('jq-odd');
            $$.children('td:even').addClass('jq-even');
            $$.children('td:first').addClass('jq-first');
            $$.children('td:last').addClass('jq-last');
            $$.children('td:only-child').addClass('jq-single');
        });
    });

});
