var dl_Path = "../../downloads/pdf/";
var dataTypes=["text","number","number","number","number","percent","percent","number","text","text","percent","percent","percent","text","percent","number","number","number","percent","number","number","number","number","number","number","number","number","number","number","number","text","number","number","number","number","text","text","text"];
var showAirQuality=false;
var criteriaArray=["Geography","People","Economy","Transportation","Education","Tourism","Health","Culture","Environment"];

var filter_cities=new Array();
var filter_data=new Array();
var maxCities=3;

var cityIndex=0;
var cityAreaIndex=1;
var metroAreaIndex=2;
var cityPopulationIndex=3;
var metroPopulationIndex=4;
var foriegnBornIndex=5;
var populationGrowthIndex=6;
var gdpIndex=7;
var primaryIndustryIndex=8;
var secondaryIndustryIndex=9;
var global500Index=10;
var unemploymentIndex=11;
var povertyIndex=12;
var publicTransIndex=13;
var massTransitIndex=14;
var airportsIndex=15;
var portsIndex=16;
var studentsIndex=17;
var higherEducationIndex=18;
var institutionsIndex=19;
var totalTouristsIndex=20
var foriegnTouristsIndex=21;
var domesticTouristsIndex=22;
var tourismRevunueIndex=23;
var hotelRoomsIndex=24;
var infantMortalityIndex=25;
var maleLifeIndex=26;
var femaleLifeIndex=27;
var physiciansIndex=28;
var hospitalsIndex=29;
var antiSmokingIndex=30;
var museumsIndex=31;
var culturalIndex=32;
var greenSpacesIndex=33;
var airQualityIndex=34;
var energyLawsIndex=35;
var cityVehicleIndex=36;
var bikeShareIndex=37;

function getData(theIndex,theData){
	if(isNaN(theData)){
		return(theData);
	}else if(theData.length==0){
		return("-----");
	}else{
		var dataType=dataTypes[theIndex];
		if(dataType=="number"){
			theData += '';
			x = theData.split('.');
			x1 = x[0];
			x2 = x.length > 1 ? '.' + x[1] : '';
			var rgx = /(\d+)(\d{3})/;
			while (rgx.test(x1)) {
				x1 = x1.replace(rgx, '$1' + ',' + '$2');
			}
			var theNumber=x1+x2;
			theNumber=stripTrailing(theNumber);
			theNumber=stripLeading(theNumber);
			return theNumber;
		}else if(dataType=="percent"){
			var thePercent=theData*100;
			thePercent=thePercent.toFixed(2);
			thePercent=stripTrailing(thePercent);
			thePercent=stripLeading(thePercent);
			thePercent=thePercent+"%";
			return(thePercent);
		}else if(dataType=="money"){
			var theMoney=parseFloat(theData).toFixed(2);
			theMoney="$"+theMoney;
			return(theMoney);
		}else{
			return(theData);
		}
	}
}

function stripTrailing(theInput){
	theInput=theInput+"";
	if(theInput.indexOf(".")==-1){
		return(theInput);
	}else{
		if(theInput.charAt(theInput.length-1)=="0"){
			return(stripTrailing(theInput.substr(0,theInput.length-1)));
		}else if(theInput.charAt(theInput.length-1)=="."){
			return(theInput.substr(0,theInput.length-1));
		}else{
			return(theInput)
		}
	}
}

function stripLeading(theInput){
	theInput=theInput+"";
	if(theInput.charAt(0)=="0"){
		return(stripLeading(theInput.substr(1,theInput.length)));
	}else{
		return(theInput);
	}
}

function getDocHTML(theDoc) {
	var tmpStr = "";
	var tmpSplit = theDoc.split("|");
	tmpStr = tmpStr + "<a href='" + dl_Path + tmpSplit[0] + "'>" + tmpSplit[1] + "</a>"
	
	return tmpStr;
}

function trim(tmpStr) {
	return tmpStr.replace(/^\s+|\s+$/g, '');	
}
function writeSelects(){
	city_data.sort();
	city_data_source.sort();
	document.write('<table cellspacing="0" cellpadding="0" border="0" width="499" id="search_header"><tr><td><table cellspacing="0" cellpadding="0" border="0" width="484">');
	document.write('<form name="citiesData" onSubmit="writeResults();return(false);"><tr><td align="right" valign="top" nowrap class="terms_label" width="146">City:</td>');
	document.write('<td class="terms_field" width="298"><select name="city" id="city" multiple class="multiSelect" style="width:326px;height:112px;">');
	for (x=0; x<city_data.length; x++) {
		document.write('<option value="' + ((city_data[x].split("|"))[0]).replace(/ /g, " ") + '">' + (city_data[x].split("|"))[0] + '</option>');
	}
	document.write('</select></td></tr>');
	document.write('<tr><Td colspan="2"><img src="../../includes/site_images/spacers/spacer.gif" width="452" height="4" /></td></tr>');
	document.write('<tr><td align="right" nowrap valign="top" class="terms_label" width="146">Data:</td>');
	document.write('<td class="terms_field" width="298"><select name="criteria" id="criteria" multiple class="multiSelect" style="width:326px;height:112px;">');
	for (x=0; x<criteriaArray.length; x++) {
		document.write('<option value="' + criteriaArray[x] +'">'+criteriaArray[x]+ '</option>');
	}
	document.write('</select></td></tr><tr><Td colspan="2"><img src="../../includes/site_images/spacers/spacer.gif" width="452" height="10" /></td></tr>');
	document.write('<tr><td colspan="2" align="right"><input type="button" class="yellow_button" onMouseOver=this.className="yellow_button_over" onMouseOut=this.className="yellow_button" value="Search" style="width:71px;" onClick="writeResults()">&nbsp;<input type="reset" class="yellow_button" onMouseOver=this.className="yellow_button_over" onMouseOut=this.className="yellow_button" value="Reset" style="width:63px;" onClick="clearResults()"></td></tr>');
	document.write('</form></table></td></tr>');
	document.write('<tr id="resultsRow"><td><table cellspacing="0" cellpadding="0" border="0" width="499"><tr><td><img src="../../includes/site_images/spacers/spacer.gif" width="499" height="20" /></td></tr>');
	document.write('<tr><td class="resultsDivider"><img src="../../includes/site_images/spacers/spacer.gif" width="499" height="1" /></td></tr>');
	document.write('<tr><td><img src="../../includes/site_images/spacers/spacer.gif" width="499" height="15" /></td></tr>');
	document.write('<tr><td class="searchHeader">Search Results:</td></tr>');
	document.write('<tr><td id="resultsTD"></td></tr>');
	document.write('</table></td></tr></table>');
	document.getElementById("resultsRow").style.display="none";
}
function clearResults(){
	document.getElementById("resultsTD").innerHTML="";
	document.getElementById("resultsRow").style.display="none";
	filter_cities=new Array();
	filter_data=new Array();
	window.scrollTo(0,0);
}
function writeResults(){
	filter_cities=new Array();
	filter_data=new Array();
	var message='<span class="red">Searching...</span>';
	document.getElementById("resultsTD").innerHTML=message;
	document.getElementById("resultsRow").style.display="";
	setTimeout(writeResultsText,10);
}

function writeResultsText(){
	for (i=0; i<document.citiesData.city.length; i++) {
		if (document.citiesData.city[i].selected) {
		  filter_cities[filter_cities.length]=document.citiesData.city[i].value;
		}
	}
	for (i=0; i<document.citiesData.criteria.length; i++) {
		if (document.citiesData.criteria[i].selected) {
		  filter_data[filter_data.length]=document.citiesData.criteria[i].value;
		}
	}
	var finalStr="";
	if(filter_cities.length==0){
		finalStr="Please select at least one city.";
	}else if(filter_cities.length>maxCities){
		finalStr="You may not select more then "+maxCities+" cities.";
	}else{
		var city_search_results=new Array();
		var criteriaList=new Array();
		showAirQuality=false;
		for(var i=0;i<filter_cities.length;i++){
			city_search_results[city_search_results.length]=new Array();
			city_search_results[city_search_results.length-1][0]=filter_cities[i];
		}
		if(filter_data.length>0){
			for(var i=0;i<filter_data.length;i++){
				if(filter_data[i].toLowerCase()==criteriaArray[0].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[0];
					criteriaList[criteriaList.length]=["City Area (km<sup>2</sup>)",cityAreaIndex];
					criteriaList[criteriaList.length]=["Metro Area (km<sup>2</sup>)",metroAreaIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[1].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[1];
					criteriaList[criteriaList.length]=["City Population (millions)",cityPopulationIndex];
					criteriaList[criteriaList.length]=["Metro Population (millions)",metroPopulationIndex];
					criteriaList[criteriaList.length]=["Foreign Born",foriegnBornIndex];
					criteriaList[criteriaList.length]=["Annual Population Growth",populationGrowthIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[2].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[2];
					criteriaList[criteriaList.length]=["GDP per Capita ($US)",gdpIndex];
					criteriaList[criteriaList.length]=["Primary Industry",primaryIndustryIndex];
					criteriaList[criteriaList.length]=["Secondary Industry",secondaryIndustryIndex];
					criteriaList[criteriaList.length]=["Share of Global 500 Companies (%)",global500Index];
					criteriaList[criteriaList.length]=["Unemployment Rate",unemploymentIndex];
					criteriaList[criteriaList.length]=["Poverty Rate",povertyIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[3].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[3];
					criteriaList[criteriaList.length]=["Public Transportation",publicTransIndex];
					criteriaList[criteriaList.length]=["Mass Transit Commuters",massTransitIndex];
					criteriaList[criteriaList.length]=["Major Airports",airportsIndex];
					criteriaList[criteriaList.length]=["Major Ports",portsIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[4].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[4];
					criteriaList[criteriaList.length]=["Students Enrolled in Higher Education",studentsIndex];
					criteriaList[criteriaList.length]=["Percent of Population with Higher Education (%)",higherEducationIndex];
					criteriaList[criteriaList.length]=["Higher Education Institutions",institutionsIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[5].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[5];
					criteriaList[criteriaList.length]=["Total Tourists Annually (millions)",totalTouristsIndex];
					criteriaList[criteriaList.length]=["Foreign Tourists Annually (millions)",foriegnTouristsIndex];
					criteriaList[criteriaList.length]=["Domestic Tourists Annually (millions)",domesticTouristsIndex];
					criteriaList[criteriaList.length]=["Annual Tourism Revenue ($US billions)",tourismRevunueIndex];
					criteriaList[criteriaList.length]=["Hotel Rooms (thousands)",hotelRoomsIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[6].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[6];
					criteriaList[criteriaList.length]=["Infant Mortality (Deaths per 1,000 Births)",infantMortalityIndex];
					criteriaList[criteriaList.length]=["Life Expectancy in Years (Male)",maleLifeIndex];
					criteriaList[criteriaList.length]=["Life Expectancy in Years (Female)",femaleLifeIndex];
					criteriaList[criteriaList.length]=["Physicians per 100,000 People",physiciansIndex];
					criteriaList[criteriaList.length]=["Number of Hospitals",hospitalsIndex];
					criteriaList[criteriaList.length]=["Anti-Smoking Legislation",antiSmokingIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[7].toLowerCase()){
					criteriaList[criteriaList.length]=criteriaArray[7];
					criteriaList[criteriaList.length]=["Number of Museums",museumsIndex];
					criteriaList[criteriaList.length]=["Number of Cultural and Arts Organizations",culturalIndex];
				}else if(filter_data[i].toLowerCase()==criteriaArray[8].toLowerCase()){
					showAirQuality=true;
					criteriaList[criteriaList.length]=criteriaArray[8];
					criteriaList[criteriaList.length]=["Green Spaces (km<sup>2</sup>)",greenSpacesIndex];
					criteriaList[criteriaList.length]=["Air Quality*",airQualityIndex];
					criteriaList[criteriaList.length]=["Laws or Regulations to Improve Energy Efficiency",energyLawsIndex];
					criteriaList[criteriaList.length]=["Retrofitted City Vehicle Fleet",cityVehicleIndex];
					criteriaList[criteriaList.length]=["Bike Share Program",bikeShareIndex];
				}
			}
		}else{
			showAirQuality=true;
			criteriaList[criteriaList.length]=criteriaArray[0];
			criteriaList[criteriaList.length]=["City Area (km<sup>2</sup>)",cityAreaIndex];
			criteriaList[criteriaList.length]=["Metro Area (km<sup>2</sup>)",metroAreaIndex];
			criteriaList[criteriaList.length]=criteriaArray[1];
			criteriaList[criteriaList.length]=["City Population (millions)",cityPopulationIndex];
			criteriaList[criteriaList.length]=["Metro Population (millions)",metroPopulationIndex];
			criteriaList[criteriaList.length]=["Foreign Born",foriegnBornIndex];
			criteriaList[criteriaList.length]=["Annual Population Growth",populationGrowthIndex];
			criteriaList[criteriaList.length]=criteriaArray[2];
			criteriaList[criteriaList.length]=["GDP per Capita ($US)",gdpIndex];
			criteriaList[criteriaList.length]=["Primary Industry",primaryIndustryIndex];
			criteriaList[criteriaList.length]=["Secondary Industry",secondaryIndustryIndex];
			criteriaList[criteriaList.length]=["Share of Global 500 Companies (%)",global500Index];
			criteriaList[criteriaList.length]=["Unemployment Rate",unemploymentIndex];
			criteriaList[criteriaList.length]=["Poverty Rate",povertyIndex];
			criteriaList[criteriaList.length]=criteriaArray[3];
			criteriaList[criteriaList.length]=["Public Transportation",publicTransIndex];
			criteriaList[criteriaList.length]=["Mass Transit Commuters",massTransitIndex];
			criteriaList[criteriaList.length]=["Major Airports",airportsIndex];
			criteriaList[criteriaList.length]=["Major Ports",portsIndex];
			criteriaList[criteriaList.length]=criteriaArray[4];
			criteriaList[criteriaList.length]=["Students Enrolled in Higher Education",studentsIndex];
			criteriaList[criteriaList.length]=["Percent of Population with Higher Education (%)",higherEducationIndex];
			criteriaList[criteriaList.length]=["Higher Education Institutions",institutionsIndex];
			criteriaList[criteriaList.length]=criteriaArray[5];
			criteriaList[criteriaList.length]=["Total Tourists Annually (millions)",totalTouristsIndex];
			criteriaList[criteriaList.length]=["Foreign Tourists Annually (millions)",foriegnTouristsIndex];
			criteriaList[criteriaList.length]=["Domestic Tourists Annually (millions)",domesticTouristsIndex];
			criteriaList[criteriaList.length]=["Annual Tourism Revenue ($US billions)",tourismRevunueIndex];
			criteriaList[criteriaList.length]=["Hotel Rooms (thousands)",hotelRoomsIndex];
			criteriaList[criteriaList.length]=criteriaArray[6];
			criteriaList[criteriaList.length]=["Infant Mortality (Deaths per 1,000 Births)",infantMortalityIndex];
			criteriaList[criteriaList.length]=["Life Expectancy in Years (Male)",maleLifeIndex];
			criteriaList[criteriaList.length]=["Life Expectancy in Years (Female)",femaleLifeIndex];
			criteriaList[criteriaList.length]=["Physicians per 100,000 People",physiciansIndex];
			criteriaList[criteriaList.length]=["Number of Hospitals",hospitalsIndex];
			criteriaList[criteriaList.length]=["Anti-Smoking Legislation",antiSmokingIndex];
			criteriaList[criteriaList.length]=criteriaArray[7];
			criteriaList[criteriaList.length]=["Number of Museums",museumsIndex];
			criteriaList[criteriaList.length]=["Number of Cultural and Arts Organizations",culturalIndex];
			criteriaList[criteriaList.length]=criteriaArray[8];
			criteriaList[criteriaList.length]=["Green Spaces (km<sup>2</sup>)",greenSpacesIndex];
			criteriaList[criteriaList.length]=["Air Quality*",airQualityIndex];
			criteriaList[criteriaList.length]=["Laws or Regulations to Improve Energy Efficiency",energyLawsIndex];
			criteriaList[criteriaList.length]=["Retrofitted City Vehicle Fleet",cityVehicleIndex];
			criteriaList[criteriaList.length]=["Bike Share Program",bikeShareIndex];
		}
		for(var i=0;i<city_search_results.length;i++){
			for(var j=0;j<city_data.length;j++){
				var theData=city_data[j].split("|");
				var theSource=city_data_source[j].split("|");
				if(theData[0]==city_search_results[i][0]){
					for(var k=0;k<criteriaList.length;k++){
						var len=city_search_results[i].length;
						if(isArray(criteriaList[k])){
							var theIndex=criteriaList[k][1];
							city_search_results[i][len]=[criteriaList[k][0],getData(theIndex,theData[theIndex]),theSource[theIndex]];
						}else{
							city_search_results[i][len]=criteriaList[k];
						}
					}
				}
			}
		}
		if(city_search_results.length>0){
			finalStr=finalStr+'<table cellspacing="0" cellpadding="0" border="0" width="498">';
		}
		var fieldWidth=Math.floor(348/city_search_results.length);
		for(var i=1;i<city_search_results[0].length;i++){
			if(!isArray(city_search_results[0][i])){
				finalStr=finalStr+'<tr><td colspan="'+(1+city_search_results.length)+'"><img src="../../includes/site_images/spacers/spacer.gif" width="5" height="20" alt="" border="0"></td></tr>';
				finalStr=finalStr+'<tr><td class="search_category">'+city_search_results[0][i]+'</td>';
				for(var j=0;j<city_search_results.length;j++){
					if(j==0){
						finalStr=finalStr+'<td class="country_header">'+city_search_results[j][0]+'</td>';
					}else{
						finalStr=finalStr+'<td class="country_header2">'+city_search_results[j][0]+'</td>';
					}
				}
				finalStr=finalStr+"</tr>";
				finalStr=finalStr+'<tr><td colspan="'+(1+city_search_results.length)+'"><img src="../../includes/site_images/spacers/spacer.gif" width="5" height="5" alt="" border="0"></td></tr>';
			}else{
				finalStr=finalStr+'<tr><td><img src="../../includes/site_images/spacers/spacer.gif" width="150" height="4" alt="" border="0"></td>';
				for(var j=0;j<city_search_results.length;j++){
					if(j==0){
						finalStr=finalStr+'<td><img src="../../includes/site_images/spacers/spacer.gif" width="'+fieldWidth+'" height="4" alt="" border="0"></td>';
					}else{
						finalStr=finalStr+'<td class="img_field"><img src="../../includes/site_images/spacers/spacer.gif" width="'+(fieldWidth-2)+'" height="4" alt="" border="0"></td>';
					}
				}
				finalStr=finalStr+"</tr>";
				finalStr=finalStr+'<tr valign="top"><td class="data_label">'+city_search_results[0][i][0]+'</td>';
				for(var j=0;j<city_search_results.length;j++){
					if(j==0){
						finalStr=finalStr+'<td class="data_field" title=\'' + city_search_results[j][i][2] + '\'>'+city_search_results[j][i][1]+'</td>';
					}else{
						finalStr=finalStr+'<td class="data_field2" title=\'' + city_search_results[j][i][2] + '\'>'+city_search_results[j][i][1]+'</td>';
					}
				}
			}
		}
		if(finalStr.length>0){
			finalStr=finalStr+'</table>';
		}
		if(showAirQuality){
			finalStr=finalStr+"<br><br><b>*</b> One particular type of pollutant (known as PM10), is measured here to determine Air Quality.  The Air Quality Guidelines, published by the World Health Organization (WHO), state that to prevent ill health, those levels should be lower than 20."
		}
		if (!finalStr) {
			finalStr = "No results were found based on the provided criteria.";
		}
	}
	document.getElementById("resultsTD").innerHTML=finalStr;
	setTimeout(scrollToResults,10);
}

function scrollToResults(){
	var elem=document.getElementById('search_header');
	var theTop=elem.offsetTop;
	var tempEl = elem.offsetParent;
	while (tempEl != null) {
		theTop += tempEl.offsetTop;
  		tempEl = tempEl.offsetParent;
  	}
	window.scrollTo(0,theTop);
}

function convertArray(theArray){
	var theConverted="";
	for(var ind=0;ind<theArray.length;ind++){
		if(isArray(theArray[ind])){
			theConverted=theConverted+"["+convertArray(theArray[ind])+"],";
		}else{
			theConverted=theConverted+'"'+theArray[ind]+'",';
		}
	}
	return(theConverted);
}
function sortNumber(a,b)
{
	return a - b;
}

function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
 }
 
function sortByPolicy(a,b){
	var x = a.split("|")[3].toLowerCase();
	var y = b.split("|")[3].toLowerCase();
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function sortByCity(a,b){
	var x = a.split("|")[2].toLowerCase();
	var y = b.split("|")[2].toLowerCase();
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}
