// SPI dthmlGird smart sort function
var clickCount=0;
//initialize
var mygrid = dhtmlXGridFromTable("myDhtmlGirdTable");
mygrid.setImagePath("../AttachmentsByTitle/dhtmlxGrid/$FILE/");
mygrid.setSkin("light");
mygrid.setInitWidths("80,*")
mygrid.attachHeader("#rspan,<div id='title_flt'></div>");
mygrid.enableMultiline(true)


//set fiter field
var sectorFlt = document.getElementById("title_flt").appendChild(document.getElementById("sector"));
var titleFlt = document.getElementById("title_flt").appendChild(document.getElementById("title"));
var searchBtn = document.getElementById("title_flt").appendChild(document.getElementById("search"))
var regionFlt = document.getElementById("title_flt").appendChild(document.getElementById("region"));
var countryFlt = document.getElementById("title_flt").appendChild(document.getElementById("country"));

var maxLocalRow=100;
var filterByTimer	
//retion
var rValObj = new Object;
var rtitle = new String;
var rVal = new String;
//country
var cValObj = new Object;
var cTitle = new String;
var cVal = new String;
//title
var tValObj = new Object;
var tTitle = new String;
var tVal = new String;
//Sectir
var sValObj = new Object;
var sTitle= new String;
var sVal= new String;
//query string
var qs = new Querystring()


$(document).ready(function()
{
	//size matters
	for(endingCount=1; mygrid.cells2(mygrid.getRowsNum()-endingCount,1).getValue()==""; endingCount++){
		mygrid.setRowHidden(mygrid.getRowId(mygrid.getRowsNum()-endingCount),true);
		if(endingCount==mygrid.getRowsNum()) break;
	}
	//resize
	setTimeout("mygrid.setSizes()",200);
	
	
	//construct option menu universally
	addRegionEntry(regionFlt)
	addSectorEntry(sectorFlt)	
	if(qs.contains("Region")){
		if(!(addCountryList(qs.get("Region")))){
			//if failed to add country list by region, add all countries
			populateCountry(countryFlt,1);
		}
	}
	else{
		addCountryEntry(countryFlt)	
	}
	//Populate Selections
	//populateSelections(regionFlt,0);
	//populateSelections(countryFlt,2);
	//populateSelections(SectorFlt,0);


	//the following script must be called after page ready
	if(qs.contains("Region")){
		updateSeletionByURL(regionFlt, qs.get("Region"));
	}
	if(qs.contains("Country")){
		updateSeletionByURL(countryFlt, qs.get("Country"));
		/*if only contains Country, then determin Region
		if(!(qs.contains("Region"))){
			updateSeletionByURL(regionFlt, populateRegion(qs.get("Country")));
		}
		*/
	}
	if(qs.contains("Sector")){
		updateSeletionByURL(sectorFlt, qs.get("Sector"));
	}
	if(qs.contains("Title")){
		titleFlt.value=qs.get("Title");
	}
	
	//get dropdown value
	getValue()	
	
})

	
function getValue(){

	rValObj = regionFlt
	cValObj = countryFlt
	tValObj = titleFlt
	sValObj = sectorFlt
	
	rTitle = rValObj.options[rValObj.selectedIndex].text;	
	cTitle = cValObj.options[cValObj.selectedIndex].text;	
	sTitle = sValObj.options[sValObj.selectedIndex].text;	
	tTitle = tValObj.value.toString().toLowerCase();
	
	rVal = rValObj.value;
	cVal = cValObj.value;
	tVal = tValObj.value;
	sVal = sValObj.value;
	//alert(rVal+"|"+cVal+"|"+tVal+"|"+aVal+"\n"+rTitle+"|"+cTitle+"|"+tTitle+"|"+aTitle);
}	

function filterBy(criteria){
	//get dropdown value
	getValue()
	//clear last unexcuted order
	clearTimeout(filterByTimer)
	/*if(mygrid.getRowsNum()<maxLocalRow){
		filterByTimer=setTimeout("titleSort()",500);
	}
	else{
		filterByTimer=setTimeout("remoteSort()",1500);
	}
	return false;
	*/
	remoteSort(criteria)
}

function changingCriteriaLocal(){
	getValue()
	if(qs.contains("Region")){
			if(qs.get("Region")!=rVal){
				return false;
			}
	}
	if(qs.contains("Country")){
			if(qs.get("Country")!=cVal){
				return false;
			}
	}
	if(qs.contains("Sector")){
			if(qs.get("Sector")!=sVal){
				return false;
			}
	}
	return true;
}

//only sort title
function titleSort(){
	for(var i=0; i< mygrid.getRowsNum();i++){
		var tStr = mygrid.cells2(i,1).getValue().toString().toLowerCase();
		if(tVal=="" || tStr.indexOf(tVal.toLowerCase())!=-1){
			mygrid.setRowHidden(mygrid.getRowId(i),false);
		}
		else{
			mygrid.setRowHidden(mygrid.getRowId(i),true);
		}
	}
}

//not work here (will have error)
function localSort(){
	for(var i=0; i< mygrid.getRowsNum();i++){
		var rStr = mygrid.cells2(i,1).getValue().toString().toLowerCase();
		var cStr = mygrid.cells2(i,2).getValue().toString().toLowerCase();
		var tStr = mygrid.cells2(i,3).getValue().toString().toLowerCase();
		var sStr = mygrid.cells2(i,0).getValue().toString().toLowerCase();
		if(	(cVal=="" || cStr.indexOf(cTitle.toLowerCase())==0) &&
			(tVal=="" || tStr.indexOf(tTitle.toLowerCase())!=-1) &&
			(sVal=="" || tStr.indexOf(tTitle.toLowerCase())==0) &&
			(rVal=="" || rStr.indexOf(rTitle.toLowerCase())==0)){
			
			mygrid.setRowHidden(mygrid.getRowId(i),false);
		}
		else{
			mygrid.setRowHidden(mygrid.getRowId(i),true);
/*			alert("rStr:"+rStr+" | cStr:"+cStr+" | tStr:"+tStr+" | aStr:"+aStr+"\n"+
				  "rTitle:"+rTitle+"|cTitle:"+cTitle+"|tTitle:"+tTitle+"|aTitle:"+tTitle+"\n"+
				  rVal+"|"+cVal+"|"+tVal+"|"+aVal+"\n"+
				  (rVal=="" ) +"|"+ ( rStr.indexOf(rTitle))+" || "+
				  (cVal=="") +"|"+ (cStr.indexOf(cTitle))+" || "+
				  (tVal=="" ) +"|"+ ( tStr.indexOf(tTitle))+" || "+
				  (aVal=="" ) +"|"+ ( aStr.indexOf(aTitle))
				  )
*/
		}
	}
}



function remoteSort(criteria){
	getValue();
	//alert(criteria+"|"+rVal+"|"+cVal+"|"+sVal)
	var newQueryString = "?OpenDocument"
	if(criteria=="Country"){
		if(rVal && rVal.indexOf("All")==-1){
			newQueryString +=("&Region="+rVal)	
		}
		if(cVal && cVal.indexOf("All")==-1){		
			newQueryString +=("&Country="+cVal)	
		}
	}
	if(criteria=="Region"){
		if(rVal && rVal.indexOf("All")==-1){
			newQueryString +=("&Region="+rVal)	
		}
	}
	
	if(sVal && sVal.indexOf("All")==-1){
		newQueryString +=("&Sector="+sVal)	
	}
	
	//ignore title
	//if(tVal && !(tVal=="Search" || tVal=="")){		newQueryString +=("&Title="+tVal)	}
	location.href = location.href.split("?")[0]+=(newQueryString);
}





