var countryArray = [];
var partnerArray = [];
var tableType = "";

function checkTableType() {
	if ($('table_partners').getProperty('partner_type') == 'roaming') {
		var table = "roaming";
	} else if ($('table_partners').getProperty('partner_type') == 'venues') {
		var table = "venues";
	}
	return table;
}

function setTableType(table) {
	tableType = table;
}

function compileTabledPartners() {
	var rows = $$("#table_partners tr");

	var countryPartners = [];
	var currentCountry = 0;
	rows.each(function(row, i) {

		if (i > 0) {

			partnerRows = row.getElements("td");

			head = row.getElements("th");
			if (head.length == 1) {

				if (countryPartners.length > 0) {
					countryArray[currentCountry].push(countryPartners);
					countryPartners = [];
				}

				countryArray.push([head[0].getText()]);
				currentCountry = countryArray.length - 1;
			}

			var aTags = partnerRows[0].getElementsByTagName("a");
			if (aTags.length == 1) {
				var aTag = $(aTags[0]);
				var partnerTitle = aTag.getText();
				var partnerLink = aTag.getProperty("href");
			} else {
				var partnerTitle = partnerRows[0].getText();
				var partnerLink = "None";
			}

			if (tableType == "roaming") {
				partner = [partnerTitle, partnerRows[1].getText(), partnerRows[2].getText(), partnerLink];
				countryPartners.push(partner);
			} else if (tableType == 'venues') {
				//partner = [partnerTitle, partnerRows[1].innerHTML, partnerLink];
				partner = [partnerTitle, partnerRows[1].getText(), partnerLink];
				partnerArray.push(partner);
			}

		}

	});

	if (tableType == 'roaming') {
		countryArray[currentCountry].push(countryPartners);
		listCountries();
	}
}

function listCountries() {
	var countrySelect = $("partners_country");

	countryArray.each(function(country, i) {
		var newCountryOption = new Element('option', { 'value': country[0] });
		newCountryOption.setText(country[0]);
		newCountryOption.injectInside(countrySelect);
	});

	countrySelect.addEvent('change', changePartners);
}


function fetchPartners(countryName) {

	if (countryName) {
		var returnVal = "";
		countryArray.each(function(country, i) {
			if (countryName == country[0]) {
				returnVal = country[1];
			}
		});

		return returnVal;
	} else {
		return partnerArray;
	}

}

function changePartners() {
	clearPartners();
	if ($("partners_country")) {
		listPartners($("partners_country").value);
	} else {
		listPartners();
	}
}

function listPartners(country) {
	var partnerArray = fetchPartners(country);

	var partnerElement = "";

	if ($("JapanAccessContainer") != null) {
		if (country == "Japan") {
			$("JapanAccessContainer").setStyle("background-color", "#E7F4DC");
		}
		else {
			$("JapanAccessContainer").setStyle("background-color", "White");
		}
	}

	partnerArray.each(function(partner, i) {
		partnerElement = addPartner(partner);
		if (i == 0 && tableType == "roaming") {
			displayPartner(partnerElement);
			selectPartner(partnerElement);
		}
	});
}

function clearPartners() {
	partnerItems = $("partners_networks").getElements("li");
	partnerItems.each(function(partner, i) {
		removePartner(partner);
	});
}

var partnerCount = 0;
function getPartnerList() {
	if (tableType == "roaming") {
		var partnerList = $("partners_networks");
	}
	else if (tableType == 'venues') {
		var partnerLists = $$("#partners_networks ul");
		if (partnerCount > 4) {
			partnerList = partnerLists[1];
		} else {
			partnerList = partnerLists[0];
		}
		partnerCount++;
	}
	return partnerList;
}

function addPartner(partnerInfo) {
	var partnerList = getPartnerList();
	var partnerElement = new Element('li');
	partnerElement.setText(partnerInfo[0]);
	partnerElement.injectInside(partnerList);

	if (tableType == 'roaming') {
		partnerElement.setProperty('info_ssid', partnerInfo[1]);
		partnerElement.setProperty('info_price', partnerInfo[2]);
		partnerElement.setProperty('info_link', partnerInfo[3]);
	} else if (tableType == 'venues') {
		partnerElement.setProperty('info_desc', partnerInfo[1]);
		partnerElement.setProperty('info_link', partnerInfo[2]);
	}

	if (partnerInfo[1].length > 1) {
		if (tableType == 'venues') {
			partnerElement.addClass("with_info");
		}
		partnerElement.addEvent('click', choosePartner.bindWithEvent(partnerElement));
	}

	return partnerElement;
}

function removePartner(partner) {
	partner.remove();
}

function choosePartner() {
	displayPartner(this);
	selectPartner(this);
}

function selectPartner(partner) {
	partnerItems = $("partners_networks").getElements("li");
	partnerItems.each(function(_partner, i) {
		_partner.removeClass("on");
	});
	partner.addClass("on");
}

function hidePartner() {
	/*
	$$('#partners_information h2').setStyle('background-image', 'url(../Media/Images/CSS/Find/Partners/blank.gif)'); 
	$$('#partners_information h2').setStyle('height', '0px');
	*/
}

function displayPartner(partner) {

	$$('#partners_information h2').setText(partner.getText());
	$$('#partners_information h2').setStyle("display", "block");

	if (partner.getText() == 'Swisscom Mobile') {
		var partnerImage = 'swissm';
	} else {
		var partnerImage = partner.getText().substring(0, 5);
	}

	if (tableType == 'roaming') {
		if (partner.getProperty('info_link') != "None") {
			$$('#partners_information a.btn').setStyle("display", "block");
			$$('#partners_information a.btn').setProperty("href", partner.getProperty('info_link'));
		} else {
			$$('#partners_information a.btn').setStyle("display", "none");
		}
		$$('#partners_information a.btn span span span span span span').setText(partner.getText() + "'s website");

		$$('#partners_information .ssid').setText(partner.getProperty('info_ssid'));
		$$('#partners_information .price').setText(partner.getProperty('info_price'));
		$$('#partners_information .countries').setText(checkCountries(partner.getText()));


	if (jQuery.browser.mozilla && parseFloat(jQuery.browser.version) >= 1.9)
	    
	{
	$$('#partners_information h2').setStyle('background-image', 'url(' + makePartnerImagePath(partnerImage) + '');

	}
	else{
	$$('#partners_information h2').setStyle('background-image', 'url(' + makePartnerImagePath(partnerImage) + ')');

	}
		
		        
	} else if (tableType == 'venues') {
		//$$('#partners_information .desc').setHTML(partner.getProperty('info_desc'));
		$$('#partners_information .desc').setText(partner.getProperty('info_desc'));

		if (partner.getProperty('info_link') != "None") {
			$$('#partners_information h2').setStyle('background-image', 'url(' + makePartnerImagePath(partnerImage) + ')');
			$$('#partners_information h2').setHTML('<a target="_blank" href="' + partner.getProperty('info_link') + '"><img src="' + makePartnerImagePath(partnerImage) + '" alt="' + partner.getText() + '"/></a>');
			$$('#partners_information h2').setStyle('text-indent', '0px');
		}
		else {
			$$('#partners_information h2').setStyle('background-image', 'url(' + makePartnerImagePath(partnerImage) + ')');
			$$('#partners_information h2').setStyle('text-indent', '');
		}
	}

	if (partner.getText() == 'Tata Indicom Wi-Fi') {
		$$('#partners_information h2').setStyle('height', '130px');
	}
	else {
		$$('#partners_information h2').setStyle('height', '');
	}

	//$$('#partners_information h2').setStyle('height', '53px');

}

function makePartnerImagePath(passedString) {
	var bgImagePath = $$('#partners_information h2').getStyle("background-image");
	bgImagePath = bgImagePath.toString();

	var blankImagePath = bgImagePath.substring(4, bgImagePath.lastIndexOf('/') + 1);
	var imageName = passedString.split(' ');

	imageName = imageName[0].split('_');
	imageName = imageName[0].toLowerCase();

	return blankImagePath + imageName + ".gif";
}

function checkCountries(partnerName) {
	var buffer = "";
	var count = 0;
	countryArray.each(function(country, i) {
		country[1].each(function(partner, f) {
			if (partner[0] == partnerName) {
				if (count > 0) {
					buffer += ", ";
				}
				count++;
				buffer += country[0];
			}
		});
	});
	return buffer;
}


function showList() {
	$("partners").setStyle("display", "none");
	$("table_partners").setStyle("display", "block");
	this.removeProperty("href");
}
function hideList() {
	$("partners").setStyle("display", "block");
	$("table_partners").setStyle("display", "none");
}
