$(document).ready( function () {

    sortorder = function () {
        document.body.style.cursor = 'wait';
   
        $('.tag_sweep').each( function () {
            switch ( $('#sortOrder').val() ){
                case 'Price - Lowest First':
                    $(this).attr('sort', $(this).attr('tag_price') );
                    while ($(this).attr('sort').length<5) $(this).attr('sort', '0'+$(this).attr('sort'));
                    break;
                case 'Price - Highest First':
                    $(this).attr('sort', 99999-$(this).attr('tag_price') );
                    while ($(this).attr('sort').length<5) $(this).attr('sort', '0'+$(this).attr('sort'));
                    break;
                default:
                case 'Alphabetical':
                    var name = $(this).html();

                    var cut = name.indexOf("product_description");
                    if (cut>-1) name = name.substr( cut, name.length-cut );

                    cut = name.indexOf('</a>');
                    if (cut>-1) name = name.substr( 0, cut );
                    
                    cut = name.indexOf(".htm") + 6;
                    if (cut>5) name = name.substr( cut, name.length-cut );                    

                    name = name.replace(/^\s+|\s+$/g,"").toLowerCase().replace(/[^a-z 0-9]+/g,'');;
                    $(this).attr('sort', name);
                    break;
            }
            $(this).addClass('sorting');
        });
        
        refresh = document.createElement('div');
        refresh.setAttribute('id','midsort');
        
        var rebuild = true;
        while (rebuild) {
            rebuild = false;
            var lowest = null;
            var found = null;
        
            $('.sorting').each( function () {
                if ( $(this).attr('sort') < lowest || (!lowest) ){
                    lowest = $(this).attr('sort');
                    found = $(this).attr('id');
                    rebuild = true;
                }
            });
            
            if (rebuild) {
                var element = document.getElementById(found);
                document.getElementById('default-content').removeChild(element);
                refresh.appendChild(element);
                element.style.display = 'inline';
                element.className = element.className.replace(/ sorting/,'')+' resyncsort';
            }
        }
        
        document.getElementById('default-content').appendChild(refresh);
        $('.resyncsort').each( function () {
            $(this).removeClass('resyncsort');
            $(this).appendTo('#default-content');
        });
        $('#category_foot').appendTo('#default-content');
        $('#midsort').remove();
        document.body.style.cursor = 'auto';
        check_filters();
    }


    var sortForm = document.createElement('form');
    sortForm.setAttribute('onsubmit','Javascript: return sortorder();');

    var sortOrder = document.createElement('h5');
    sortOrder.innerHTML = 'Sort By';
    
    var sortSelect = document.createElement('select');
    sortSelect.setAttribute('id','sortOrder');
    
    var sortOptions = new Array();
    sortOptions[0] = '';
    sortOptions[1] = 'Alphabetical';
    sortOptions[2] = 'Price - Lowest First';
    sortOptions[3] = 'Price - Highest First';
    
    for(var i in sortOptions) {
        var sortOption = document.createElement('option');
        sortOption.innerHTML = sortOptions[i];
        sortOption.setAttribute('value',sortOptions[i]);
        sortSelect.appendChild(sortOption);
    }
    
    sortForm.appendChild(sortOrder);
    sortOrder.appendChild(sortSelect);
    if (document.getElementById('cat-filter')) document.getElementById('cat-filter').appendChild(sortForm);
    
    $('#sortOrder').change( function () { sortorder(); } );
    
    var pCount = 0;
    $('.tag_sweep').each( function () {
        pCount++;
        $(this).attr('id','sort_item_'+pCount);
    });
});
