
// array with index i set to 1 when the data[i] has to be shown
var arrayResultSearch = new Array();

// Set every arrayResultSearch to val
function fctActivAll(val) {
	for(i=0;i<data.length;i++) {
		arrayResultSearch[i] = val;
	}
}

// Init to "do not show"
fctActivAll(0);

// to be called in the html with a button
function fctShowAll() {
	document.getElementById('zipSearch').value='';
	fctSearchZip();
}

// order data array by a column
function fct_sort_table(type,colNumSort) {
	colNum = colNumSort;
	if(type == "asc") {
		data.sort(fct_sort_asc);
	} else {
		data.sort(fct_sort_desc);
	}
	/*for(i=0;i<data.length;i++) {
		for(j=0;j<colnumber;j++) {
			colid = "col" + i + "-" + j;
			cii = document.getElementById(colid);
			if(cii)
			{
			    cii.innerHTML = data[i][j];
			}
		}
	}*/
}

// Fonction de tri asc de la première colonne de la table
function fct_sort_asc(a,b) {
	if(a[colNum] < b[colNum]) return -1;
	if(a[colNum] > b[colNum]) return 1;
	return 0
}

// Fonction de tri desc la première colonne de la table
function fct_sort_desc(a,b) {
	if(a[colNum] < b[colNum]) return 1;
	if(a[colNum] > b[colNum]) return -1;
	return 0
}

// Sort data array by Location
fct_sort_table("asc", 1);

// Find the location (relations array index) of the input value 
// this could be a zip code, or a location (or a part of those)
function find_rel(inputValue)
{
	var found = new Array();
	// Search for the location in the relations table.
	varrel = relations[inputValue.toLowerCase()];
	
	// If not found, then look for the zip code
	if(!varrel)
	{
		for(i in relations)
		{
			for(j=0;j<relations[i].length;j++)
			{
				if(inputValue.length == relations[i][j].length
				&& inputValue.toUpperCase() == relations[i][j].toUpperCase())
				{
					found.push(i);
					//alert('Zip:'+i);
				}
			}
		}
	}
	else
	{
		//alert('Location: '+inputValue);
		found.push(inputValue.toLowerCase());
	}
	
	return found;
	
}

// Main function to be called in the html when Enter is pressed or
// the search button is clicked.
function fctSearchZip(varValueInputTxt) {
    if (varValueInputTxt == "") {
		// Equivalent to show all
		varResultSearchNull = true;
		fctActivAll(1);
	}
	else
	{
		varResultSearchNull = false;
	    fctActivAll(0);
	    
		allLocations = find_rel(varValueInputTxt);
		/*for(z=0;z<allLocations.length;z++)
		{
			varrel = allLocations[z];
			for(j=0;j<relations[varrel].length;j++)
			{
				alert(relations[varrel][j]);
			}
		}*/
		//for(i=0;i<allLocations.length;i++)
		//{alert(allLocations[i]);}
		
		varValueInputTxt = varValueInputTxt.toLowerCase();
		
		myRe=/([A-Z]*[0-9]*)/g;
	    
		    
    	for(i=0;i<data.length;i++) 
		{	
		    varLocation = data[i][1];
		    varZIP = data[i][3];
			myRe.lastIndex = 0;
			if((varZipPart = myRe.exec(varZIP))!=null)
			{
				if(varZipPart.length > 0)
					varZipPart = varZipPart[1];
				else
					varZipPart = null;
			}
			for(z=0;z<allLocations.length;z++)
		    {
				varrel = allLocations[z];
				for(j=0;j<relations[varrel].length;j++)
				{
					if( relations[varrel][j].length > 0 
					&& varZipPart == relations[varrel][j])
					/*&& varZIP.substring(0, relations[varrel][j].length) == relations[varrel][j])*/
					{
						//alert(relations[varrel][j] +"=="+ varZIP);
						break;
					}
				}
				
				if(j<relations[varrel].length 
				|| (varLocation.length == varrel.length && varLocation == varrel))
				{
					varResultSearchNull = true;
					arrayResultSearch[i] = 1;
					break;
				}
		    }
		    
		    if(arrayResultSearch[i] == 0 && varValueInputTxt != "" && varValueInputTxt.length > 0 
			&& (varZIP.toLowerCase().substring(0,varValueInputTxt.length) == varValueInputTxt 
				|| varLocation.toLowerCase().substring(0, varValueInputTxt.length) == varValueInputTxt))
		    /*&& (varZIP.toLowerCase().substring(0,varValueInputTxt.length).lastIndexOf(varValueInputTxt) == 0
				|| varLocation.toLowerCase().substring(0, varValueInputTxt.length).lastIndexOf(varValueInputTxt) >= 0 ) )*/
		    {
		        varResultSearchNull = true;
		        arrayResultSearch[i] = 1;
		    }
	    }
	}
    fctCreateTable();
	//fct_sort_table("asc", 1);
}
// Add the html to the page
function fctCreateTable() {
	var varTableHTML = "";
	varTableHTML += '<table cellspacing="0">';
		varTableHTML += '<tr>';
		for(i=0;i<arrayTitleTable.length;i++) {
				varTableHTML += '<th>';
					varTableHTML += arrayTitleTable[i];
					/*if (arrayTitleTableSort[i]==1) {
						varTableHTML += '<a href="javascript:fct_sort_table(\'asc\',0);">Up</a> / <a href="javascript:fct_sort_table(\'desc\',0);">Down</a>'
					}*/
				varTableHTML += '</th>';
		}
		varTableHTML += '</tr>';
		if (varResultSearchNull != false) {
			for(i=0;i<data.length;i++) {
				if (arrayResultSearch[i]==1) {
					varTableHTML += '<tr>';
						for(j=0;j<colnumber;j++) {
							colid = "col" + i + "-" + j;
							varTableHTML += "<td id='" + colid + "'>" + data[i][j] + "</td>";
						}
					varTableHTML += '</tr>';
				}
			}
		} else {
			varTableHTML += '<tr>';
				varTableHTML += '<td colspan="'+data.length+'">';
					varTableHTML += "No results"
				varTableHTML += '</td>';
			varTableHTML += '</tr>';
		}
	varTableHTML += '</table>';
	document.getElementById("TGFStores").innerHTML = varTableHTML;
}

