/*
*****************************************************************************************************
JavaScript Code for Grid Widget

Description:
	JavaScript Code to create PHP Grid Widget
	
Minimum System Requirement:
	- JavaScript
	- DOM

Author:
	Wahyu Primadi, S.Kom
	<wahyu@littleorange.net>
	<wprimadi@gmail.com>
	<http://www.wahyuprimadi.co.cc>
	<http://www.littleorange.net>

Copyright:
	Copyright (c) 2009. Wahyu Primadi. All Rights Reserved.
*****************************************************************************************************
*/

var ColumnClicked = "";
var ColumnOrder = "";

function HoverHeaderStyle(TargetID){
	var HeaderBaseName;
	var HeaderLeft;
	var HeaderCenter;
	var HeaderRight;
	
	HeaderBaseName = TargetID.substring(0, (TargetID.length - 3));
	HeaderLeft = HeaderBaseName + "_01";
	HeaderCenter = HeaderBaseName + "_02";
	HeaderRight = HeaderBaseName + "_03";
	
	document.getElementById(HeaderLeft).className = "header_left_hover";
	document.getElementById(HeaderCenter).className = "header_center_hover";
	document.getElementById(HeaderRight).className = "header_right_hover";
}

function OutHeaderStyle(TargetID){
	var HeaderBaseName;
	var HeaderLeft;
	var HeaderCenter;
	var HeaderRight;
	
	HeaderBaseName = TargetID.substring(0, (TargetID.length - 3));
	HeaderLeft = HeaderBaseName + "_01";
	HeaderCenter = HeaderBaseName + "_02";
	HeaderRight = HeaderBaseName + "_03";
	
	document.getElementById(HeaderLeft).className = "header_left";
	document.getElementById(HeaderCenter).className = "header_center";
	document.getElementById(HeaderRight).className = "header_right";
}

function PressedHeaderStyle(TargetID){
	var HeaderBaseName;
	var HeaderLeft;
	var HeaderCenter;
	var HeaderRight;
	var HeaderOrder;
	
	HeaderBaseName = TargetID.substring(0, (TargetID.length - 3));
	HeaderLeft = HeaderBaseName + "_01";
	HeaderCenter = HeaderBaseName + "_02";
	HeaderRight = HeaderBaseName + "_03";
	HeaderOrder = HeaderBaseName + "_sort";
	
	//UnSortAllHeader();
	
	if (ColumnClicked == HeaderBaseName){
		if (ColumnOrder == "UP"){
			ColumnOrder = "DOWN";
			document.getElementById(HeaderOrder).className = "sort_down";
		}else{
			ColumnOrder = "UP";
			document.getElementById(HeaderOrder).className = "sort_up";
		}
	}else{
		ColumnClicked = HeaderBaseName;
		ColumnOrder = "UP";
		document.getElementById(HeaderOrder).className = "sort_up";
	}
	
	document.getElementById(HeaderLeft).className = "header_left_pressed";
	document.getElementById(HeaderCenter).className = "header_center_pressed";
	document.getElementById(HeaderRight).className = "header_right_pressed";
}

function SortListItems(TargetGridName, TargetColumnIndex){
	var i = 0;
	var j = 0;
	var CurrentCell = "";
	var tmpArray = new Array();
	var tmpItemArray = new Array(GetColCount());
	var iRows, iCols;
	
	for (i=0; i<=(GetRowCount() - 1); i++){
		tmpItemArray[i] = new Array(GetColCount()+1);
		
		for (j=0; j<=(GetColCount() - 1); j++){
			CurrentCell = document.getElementById(TargetGridName + '_row_' + (i+1)).cells[j].innerHTML;
			
			tmpItemArray[i][j] = CurrentCell;
			
			if (TargetColumnIndex == j){
				tmpArray.push(CurrentCell);
			}
		}
		
		tmpItemArray[i][GetColCount()] = document.getElementById(TargetGridName + '_row_' + (i+1)).className;
	}
	
	if (ColumnOrder == "UP"){
		tmpArray.sort();
	}else if(ColumnOrder == "DOWN"){
		tmpArray.reverse();
	}else{
		tmpArray.sort();
	}
	
	for (i=0; i<=(GetRowCount() - 1); i++){
		for (iRows=0; iRows<=(GetRowCount() - 1); iRows++){
			if (tmpItemArray[iRows][TargetColumnIndex] == tmpArray[i]){
				for (iCols=0; iCols<=(GetColCount() - 1); iCols++){
					document.getElementById(TargetGridName + '_row_' + (i+1)).cells[iCols].innerHTML = tmpItemArray[iRows][iCols];
					
					if (tmpItemArray[iRows][GetColCount()] == "row_item_clicked"){
						document.getElementById(TargetGridName + '_row_' + (i+1)).className = "row_item_clicked";
					}else{
						document.getElementById(TargetGridName + '_row_' + (i+1)).className = "row_item_normal";
					}
				}
			}
		}
	}
}

function GetColumnClickedIndex(TargetGridName, TargetColumnIndex, TargetID){
	SortListItems(TargetGridName, TargetColumnIndex);
}

function GetColCount(){
	return document.getElementById('myhead').cells.length;
}

function GetRowCount(){
	return document.getElementById('body_section').rows.length;
}

function RowMultiSelectMouseMove(TargetGridName, TargetID){
	if (document.getElementById(TargetID).className == "row_item_clicked"){
		document.getElementById(TargetID).className = "row_item_clicked";
	}else{
		document.getElementById(TargetID).className = "row_item_hover";
	}
}

function RowMultiSelectMouseOut(TargetGridName, TargetID){
	if (document.getElementById(TargetID).className == "row_item_clicked"){
		document.getElementById(TargetID).className = "row_item_clicked";
	}else{
		document.getElementById(TargetID).className = "row_item_normal";
	}
}

function RowMultiSelectMouseDown(TargetGridName, TargetID){
	if (document.getElementById(TargetID).className == "row_item_clicked"){
		document.getElementById(TargetID).className = "row_item_hover";
	}else{
		document.getElementById(TargetID).className = "row_item_clicked";
	}
}

function RowSingleSelectMouseDown(TargetGridName, TargetID){
	var i = 0;
	
	for (i=0; i<=(GetRowCount() - 1); i++){
		document.getElementById(TargetGridName + '_row_' + (i+1)).className = 'row_item_normal';
	}
	
	if (document.getElementById(TargetID).className == "row_item_clicked"){
		document.getElementById(TargetID).className = "row_item_hover";
	}else{
		document.getElementById(TargetID).className = "row_item_clicked";
	}
}

function GetSelectedItems(TargetGridName, ColumnIndex){
	var i = 0;
	var SelectedItems = "";
	
	for (i=0; i<=(GetRowCount() - 1); i++){
		if (document.getElementById(TargetGridName + '_row_' + (i+1)).className == 'row_item_clicked'){
			if (SelectedItems == ""){
				SelectedItems = document.getElementById(TargetGridName + '_row_' + (i+1)).cells[ColumnIndex].innerHTML;
			}else{
				SelectedItems = SelectedItems + "," + document.getElementById(TargetGridName + '_row_' + (i+1)).cells[ColumnIndex].innerHTML;
			}
		}
	}
	
	return SelectedItems;
}