/* -------------------------
　ソート用JavaScript
------------------------- */

var FIRST_MONTH = "09"
var LAST_MONTH = "06"

var MKDS = "mkds";
var FROST = "frost";
var ICE = "ice";
var SNOW = "snow";

var lastColumn = -1;
var lastDesc = 0;	/* 1:降順 0:昇順 */

// マリカDS
function sortMkds( column, type ) {
	sortRows( MKDS, column, type );
}

// 初霜
function sortFrost( column, type ) {
	sortRows( FROST, column, type );
}

// 初氷
function sortIce( column, type ) {
	sortRows( ICE, column, type );
}

// 初雪
function sortSnow( column, type ) {
	sortRows( SNOW, column, type );
}

function sortRows( id, column, type ) {
	
	if ( !document.getElementById ) {
		return;
	}
	
	var table = document.getElementById( id );
	var rows = table.rows;
	
	var array = new Array( rows.length );
	
	var i;
	for ( i = 0; i < rows.length; ++i ) {
		array[i] = new Object();
		var cell = rows[i].cells[column];
		array[i].key = createKey( cell, type );
		array[i].row = rows[i];
	}
	
	if ( lastColumn != column || lastDesc != 0 ) {
		array.sort( compareChar );
		lastDesc = 0;
	} else {
		array.sort( compareCharRev );
		lastDesc = 1;
	}
	lastColumn = column;
	
	for ( i = 0; i < array.length; ++i ) {
		table.appendChild( array[i].row );
	}
}

function createKey( cell, type ) {
	if ( cell.firstChild == null ) {
		return "";
	}
	
	var nodeValue = cell.firstChild.nodeValue;
	
	if ( nodeValue == null ) {
		return "";
	}
	
	if ( type == 0 ) {
		return nodeValue;
	} else if ( type == 2 ) {
		if ( nodeValue == "なし" ) {
			return "";
		}
		
		return calcSortDate( nodeValue );
	} else if ( type == 3 ) {
		if ( nodeValue == "" ) {
			return "";
		}
		
		var parts = nodeValue.split("/");
		return calcSortDate( parts[1] + "/" + parts[2] );
	} else {
		return "";
	}
}

function compareChar( a, b ) {
	if ( a.key == "" && b.key != "" ) {
		return 1;
	} else if ( a.key != "" && b.key == "" ) {
		return -1;
	} else if ( a.key == "" && b.key == "" ) {
		return 0;
	}
	
	if ( a.key > b.key ) {
		return 1;
	} else if ( a.key < b.key ) {
		return -1;
	} else {
		return 0;
	}
}

function compareCharRev( a, b ) {
	if ( a.key == "" && b.key != "" ) {
		return 1;
	} else if ( a.key != "" && b.key == "" ) {
		return -1;
	} else if ( a.key == "" && b.key == "" ) {
		return 0;
	}
	
	if ( a.key < b.key ) {
		return 1;
	} else if ( a.key > b.key ) {
		return -1;
	} else {
		return 0;
	}
}

function calcSortDate( date ) {
	var month = date.split("/")[0];
	if ( FIRST_MONTH <= month && month <= "12" ) {
		return "0/" + date;
	} else if ( "01" <= month && month <= LAST_MONTH ) {
		return "1/" + date;
	} else {
		return "";
	}
}
