/*
Sorting depends on attribute selected

Changes: Joana Welti (joana.welti@unic.com)
*/

jQuery(function(){
       
       jQuery(".sort_top, .sort_bot, .sort_none").click(function(){
               var c = jQuery(this).attr("class");
               jQuery(".sort_top, .sort_bot, .sort_none").removeClass("sort_bot").removeClass("sort_top").removeClass("sort_none").addClass("sort_none");
               jQuery(this).attr("class", c);
			   
               var col = jQuery(this).parent().attr("class");
               
			   // descending
               if(jQuery(this).hasClass("sort_top")){
                if (jQuery(this).hasClass("diff")) {
					jQuery(".sort_row").sort(function(a, b){ return sortingOrderDifficulty(jQuery(b).find("."+col).find("span").attr("class"), jQuery(a).find("."+col).find("span").attr("class"))});
				} else {
					jQuery(".sort_row").sort(function(a, b){ return sortingOrderNumeric(jQuery(b).find("."+col).text(), jQuery(a).find("."+col).text())});
				}
					   
                jQuery(this).removeClass("sort_top").addClass("sort_bot"); 
               // ascending
			   }else {
					if (jQuery(this).hasClass("diff")) {
						jQuery(".sort_row").sort(function(a, b){ return sortingOrderDifficulty(jQuery(a).find("."+col).find("span").attr("class"), jQuery(b).find("."+col).find("span").attr("class"))});
				    } else {
						jQuery(".sort_row").sort(function(a, b){ return sortingOrderNumeric(jQuery(a).find("."+col).text(), jQuery(b).find("."+col).text())});
				    }
				    jQuery(this).removeClass("sort_bot").removeClass("sort_none").addClass("sort_top");                          
               }
               return false;
       });
}); 

/* sorting method to be used when selecting sorting in dropdown*/
function resort() {
	var ordering = jQuery('#sorting').val();
	
	if (ordering == "difficulty") {
		jQuery(".sort_row").sort(function(a, b){ return sortingOrderDifficulty(jQuery(a).find(".col2").find("span").attr("class"), jQuery(b).find(".col2").find("span").attr("class"))});
	} else if (ordering == "length"){
		jQuery(".sort_row").sort(function(a, b){ return sortingOrderNumeric(jQuery(a).find(".col3").text(), jQuery(b).find(".col3").text())});
	} else if (ordering == "altitude") {
		jQuery(".sort_row").sort(function(a, b){ return sortingOrderNumeric(jQuery(a).find(".col4").text(), jQuery(b).find(".col4").text())});
	}
	return false;
}


/* 
Compares a and b in terms of difficulty
Returns 
	- x < 0 if a easier than b
	- x = 0 if a == b
	- x > 0 if a  more difficult than b
i */
function sortingOrderDifficulty(a, b) {
	var sortingOrderDifficulty = new Array();
	sortingOrderDifficulty["easy"] = 1;
	sortingOrderDifficulty["medium"] = 2;
	sortingOrderDifficulty["difficult"] = 3;
	
	return sortingOrderDifficulty[a.trim()] - sortingOrderDifficulty[b.trim()];
}

/* 
Removes "m" or "km" from number and compares a and b.
Returns 
	- x < 0 if a < b
	- x = 0 if a == b
	- x > 0 if a > b
 */
function sortingOrderNumeric(a, b) {
	// extract "m" and "km" from numbers
	var a_numbers = a.trim().split("m");
	var a_number = a_numbers[0].split("k");

	var b_numbers = b.trim().split("m");
	var b_number = b_numbers[0].split("k");
	
	return a_number[0] - b_number[0];
}


/* trims string to remove additional spaces */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+jQuery/g,"");
}



