﻿// JQuery Sorting Functions 
// Omer @ MagiClick
// added alternate sorting logic
jQuery.fn.sort = function() {
        return this.pushStack( jQuery.makeArray( [].sort.apply( this, arguments ) ) );
};

jQuery.fn.reverse = function() {
  return this.pushStack(this.get().reverse(), arguments);
};

$.sort = {
    version: "1.2",
    author: "Omer DUZYOL @ MagiClick",
    selectedSorter: "turkish"
};

$.sort.sorter = function(a,b){
     switch($.sort.selectedSorter){
        default:
        case "system":
            return a > b;
            break;
        case "turkish":
            return $.sort.IsAGreatherThanB(a,b);
            break;
     } 
};

$.sort.IsAGreatherThanB = function(wordA,wordB){
	var alphabet = "0123456789abcçdefgğhıijklmnoöprsştuüvwxyzABCÇDEFGĞHIİJKLMNOÖPRSŞTUÜVWXYZ";
	// check is integer?
	if(!(isNaN(parseInt(wordA)) || isNaN(parseInt(wordB)))){
		if(parseInt(wordA)>parseInt(wordB))
			return true;		
	} else {
		var aPos = alphabet.indexOf(wordA.substring(0,1));
        var bPos = alphabet.indexOf(wordB.substring(0,1));
				
		if(aPos>bPos)
		    return true;		
	}
		
	return false;
};

$.sort.Option = function(objOptionSelector,asc)
{
    var sorter = ((typeof objOptionSelector) == "string" ? objOptionSelector + ">option" : objOptionSelector.find("option"));
    sorter.sort(function( a, b ) {
        if(!asc)
            return $.sort.sorter(a.innerHTML,b.innerHTML) ? 1 : -1;
        else
            return $.sort.sorter(a.innerHTML,b.innerHTML) ? -1 : 1;
    }).prependTo(objOptionSelector);
};

$.sort.Tag = function(strOptionSelector,asc)
{
    $(strOptionSelector).sort(function( a, b ) {
        if(!asc)
            return $.sort.sorter(a.innerHTML,b.innerHTML) ? 1 : -1;
        else
            return $.sort.sorter(a.innerHTML,b.innerHTML) ? -1 : 1;
    }).prependTo(strOptionSelector);
};