$(document).ready(function() {
	//Define which locales are applicable, which for the short applic, and which for the full applic.
	
	if(wep.locale!='uk_UA'){onLoad()};
	(wep.locale=='it_IT' || wep.locale=='en_GB' || wep.locale=='pt_PT' || wep.locale=='ru_RU' || wep.locale=='es_ES'|| wep.locale=='tr_TR' || wep.locale=='pl_PL') ? asc_applic = true :  asc_applic = false;
	if(wep.locale=='ro_RO'){$('#locator').css('display','none');}
	//Full applic
	if(asc_applic){
		$('#ASC_WITH_ZIP').css('display','block');
		if($('#radiusSelect')){$('#radiusSelect').bind('change', function(e){ searchLocations('all');prefdef=1;	return false;});};
		$('#addressInput').bind('keydown',function(e){if (e.keyCode == 13){searchLocations('all');return false;}});
	//Short applic
	}else{searchLocationsNear(null,'all');};
	
});


function onLoad() {
	if (GBrowserIsCompatible()) {
		prefdef=0;
		geocoder = new GClientGeocoder();
		map = new GMap2($("#map").get(0));
		map.addControl(new GSmallMapControl());
		map.setCenter(new GLatLng(launch_lat, launch_lng), launch_zoom);
		map.setMapType(G_NORMAL_MAP); 
		var mt = map.getMapTypes();
	
		for (var i=0; i<mt.length; i++) {
			mt[i].getMinimumResolution = function() {return 0;}
			mt[i].getMaximumResolution = function() {return 15;}
		}
	};

}


var map;
var geocoder;
var unit_dist;


//Full applic
function searchLocations(prod) {
	var address = $('#addressInput').val() + ', ' + str_Country;
	geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {$('#waiting').append('<span class="warning"><br/>' + str_error + '</span>');
       } else {  searchLocationsNear(latlng,prod); }
     });
}

//short applic
function searchLocationsNear(center,prod) {
	$('#ascresults').text('');  
	$('#VIPresults').text('');
	$('#TR2results').text('');
	$('#waiting_IMG').css('display','block');	
	if($('#radiusSelect')) {
			if(wep.locale=='tr_TR'){
				if(prefdef==0){$('#radiusSelect').val(50);}
			};
			radius = $('#radiusSelect').val(); 
	}else{
		radius=100;}
	if (wep.locale=='en_GB' || wep.locale=='en_IE' ){unit_dist='M'}else{unit_dist='K'}
	if (wep.locale=='fr_BE'){wep.locale='nl_BE';}
	if (wep.locale=='fr_CH'){wep.locale='de_CH';}
	
	
	if(asc_applic){var searchUrl = '/webservices/asclist.asmx/listlocator?locale='+wep.locale+'&lat2=' + center.lat() + '&long2=' + center.lng() + '&unit='+unit_dist;
	}else{var searchUrl = '/webservices/ascall.asmx/countryASC?locale='+wep.locale;}
	
	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		map.clearOverlays();
		
		/* Starting the treatment of the xml*/
		var markers = xml.documentElement.getElementsByTagName('serviceAddress'); 

		if(markers.length == 0) {
			$('#enter_asc').addClass('warning');	
		   	map.setCenter(new GLatLng(44.65847, 8.784155), 4);
		   	return;
		}else{
			$('#waiting').css('display','block');
			$('#waiting_IMG').css('display','none');
		   	var bounds = new GLatLngBounds();
			s.pageName="spt : Service center search results";
			s.t();
			
			
		   	/* saving each shop in a marker[i] array*/
			
			for (var i = 0; i < markers.length; i++) {
				var productCat = markers[i].getElementsByTagName("productCategories")[0];
				
			if(prod=='all'|| (productCat.getAttribute(prod)=="True")){
				var rank = markers[i].getElementsByTagName("Rank")[0].childNodes[0].nodeValue;
				var name = markers[i].getElementsByTagName("companyName")[0].childNodes[0].nodeValue;
				var street = markers[i].getElementsByTagName("street")[0].childNodes[0].nodeValue;
				var zip = markers[i].getElementsByTagName("zipCode")[0].childNodes[0].nodeValue;
				var city = markers[i].getElementsByTagName("city")[0].childNodes[0].nodeValue;
				var email = markers[i].getElementsByTagName("email")[0].childNodes[0].nodeValue;
				var phone = markers[i].getElementsByTagName("phone")[0].childNodes[0].nodeValue;
				var phone2 = markers[i].getElementsByTagName("phone2")[0].childNodes[0].nodeValue;
				var phone3 = markers[i].getElementsByTagName("phone3")[0].childNodes[0].nodeValue;
				var website = markers[i].getElementsByTagName("website")[0].childNodes[0].nodeValue;
				var fax = markers[i].getElementsByTagName("fax")[0].childNodes[0].nodeValue;
				var optime = markers[i].getElementsByTagName("openingTimes")[0].childNodes[0].nodeValue;
				var notes = markers[i].getElementsByTagName("notes")[0].childNodes[0].nodeValue;
				
				var ratings = markers[i].getElementsByTagName("ratings")[0];
				if(zip=='1'){zip=''};
				var address = street + '<br/>' + zip + ' ' + city;
				
				if(asc_applic) {var distance = parseFloat(markers[i].getElementsByTagName("distance")[0].childNodes[0].nodeValue);};
				var point = new GLatLng(parseFloat(markers[i].getElementsByTagName("point")[0].getAttribute('lat')),parseFloat(markers[i].getElementsByTagName("point")[0].getAttribute('lng')));
				
				theEntry = createSidebarEntry(marker, name, city, address, distance, website, email, phone, phone2, phone3, fax, productCat, optime, notes, ratings);
				
				// short applic and all products
				if(!asc_applic && prod=="all"){
						var marker = createMarker(point, name, address, phone, website);
						map.addOverlay(marker);					
						/*allows to recenter the map on the point*/
						bounds.extend(point); 
						if(rank!='1' && rank!='3'){var sidebarEntry = theEntry;};
						if(rank =='1'){var VIPEntry = theEntry;};			
						if(rank =='3'){var TR2entry = theEntry};
				//short applic not all products - only act if the shop deals with the product
				}else if(!asc_applic && prod!="all"){
						if(productCat.getAttribute(prod)=="True"){
							var marker = createMarker(point, name, address, phone, website);
							map.addOverlay(marker);					
							bounds.extend(point);
							if(rank!='1' && rank!='3'){var sidebarEntry = theEntry;};
							if(rank =='1'){var VIPEntry = theEntry;};	
							if(rank =='3'){var TR2entry = theEntry};
						};

				// full applic and all product - only act if the shop is within the distance
				}else if(asc_applic && prod=="all"){
					if(distance<radius){
						var marker = createMarker(point, name, address, phone, website);
						map.addOverlay(marker);					
					/*allows to recenter the map on the point*/
						bounds.extend(point);
						if(rank!='1' && rank!='3'){var sidebarEntry = theEntry;};
						if(rank =='1'){var VIPEntry = theEntry;};
						if(rank =='3'){var TR2entry = theEntry};
						};
						
				//full applic and not all product - only act if the shop deals with the product		
				}else if(asc_applic && prod!="all"){
					
						if((productCat.getAttribute(prod)=="True") && distance<radius){
							
							var marker = createMarker(point, name, address, phone, website);
							map.addOverlay(marker);					
							bounds.extend(point);
							if(rank!='1' && rank!='3'){var sidebarEntry = theEntry;};
							if(rank =='1'){var VIPEntry = theEntry;};	
							if(rank =='3'){var TR2entry = theEntry};
						}else{};

				}else{};						

						//append each DIV to the results
				if(sidebarEntry){$('#ascresults').append(sidebarEntry);};
				if(VIPEntry){$('#VIPresults').append(VIPEntry);};
				if(TR2entry){$('#TR2results').append(TR2entry)}
				
				if(asc_applic && i==0){
					$('#selRadius').css('display','block');
					var shopOptions = getTheOptions(xml);	
					$('#selProd').html(shopOptions);
					if(wep.locale=='pt_PT'){$('#mapsidebar').css('display','none');};
				}else if(i==0){
					var shopOptions = showAllOptions(xml);
					$('#selProd').append(shopOptions);
				};
				
				$('#selProd input').each( function(j) {
					if(i==0){
						$(this).bind('click', function(){
							prod=$(this).val();
							
							if(asc_applic){searchLocations(prod);}
							else{searchLocationsNear(null,prod);}
			
						});		
					};
					});	

			}//end if
			}
			
			//end of for
			$('#selProd').css('display','block');
			if(prod!="all"){$('#'+prod).attr('checked','checked')};
			map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		};
	});
	
		if(wep.locale=="en_GB"){
		  title = new Element('div');
		  title.text(str_othRep);
		  $('#ascresults').append(title);
		  titleVIP=new Element('div');
		  titleVIP.text(str_vipRep);
		  $('#VIPresults').append(titleVIP);
		}  
		if(wep.locale=="tr_TR"){
		title = $('<div>');
	 	title.html(str_othRep);
	  	$('#ascresults').append(title);
	  	titleTR2=$('<div>');
		titleTR2.html(str_altRep);
		$('#TR2results').append(titleTR2);
		titleVIP=$('<div>');
		titleVIP.html(str_vipRep);
		$('#VIPresults').append(titleVIP);
	}


}

/* Function that generates the bubles*/
function createMarker(point, name, address, phone, website) {
      var marker = new GMarker(point);
	  if($.trim(website) =='' || website == 'n/a' || website == null){
		  website='';
	  }else{website = '<a href=http://'+website+'>'+website+'</a>'}
	  
      var html = '<b>' + $.trim(name) + '</b>';
	  html += '<br/>' + adr_str + ' : ' +address +'<br/>';
	  html += '<br/>' + adr_phone + ' : ' + phone +'<br/>';
	  
	  if(website!=''){html += '<br/>' + adr_web + ' : ' +website +'<br/>';};
	  
      GEvent.addListener(marker, 'click', function() {marker.openInfoWindowHtml(html);});
      return marker;
}
    
function createSidebarEntry(marker, name, city, address, distance, website, email, phone, phone2, phone3, fax, productCat, optime, notes, ratings) {
      var div = $( document.createElement('div') );
	  var theProducts='   ';
	  var R1='';var R2='';var R3='';var R4='';var R5='';
	
	if(productCat){
		for(j=0; j<(productCat.attributes.length);j++){
			if(productCat.attributes[j].value!=='False'){
				var productCatName = eval("str_"+productCat.attributes[j].name);
				theProducts += productCatName +', ';
			}
		};
	theProducts = theProducts.slice(0,theProducts.length-2);	
	};
	  
	if(ratings){
		var r0_img="<img src=\"/css/imgs/consumer/r0.png\" alt=\"ZERO\" />" 
		var r1_img="<img src=\"/css/imgs/consumer/r1.png\" alt=\"ONE\" />"
		var r2_img="<img src=\"/css/imgs/consumer/r2.png\" alt=\"TWO\" />"
		var r3_img="<img src=\"/css/imgs/consumer/r3.png\" alt=\"THREE\" />"
		var r4_img="<img src=\"/css/imgs/consumer/r4.png\" alt=\"FOUR\" />"
		var r5_img="<img src=\"/css/imgs/consumer/r5.png\" alt=\"FIVE\" />"
		var QR_img = eval('r'+ratings.attributes[0].value+'_img');
		var OW_img = eval('r'+ratings.attributes[1].value+'_img');
		var VOC_img = eval('r'+ratings.attributes[2].value+'_img');
		if(ratings.attributes[3].value=='1'){var ihs="<img src=\"/css/imgs/consumer/YES.png\" alt=\"Yes\" />";}else{var ihs="<img src=\"/css/imgs/consumer/NO.png\" alt=\"No\" />";};
	};
	
	  //Open the table + table row
	  var html = '<table><tbody>';
      html += '<tr><th colspan="2"><h3>' + city + ' - <span>' + name+'</span>' ;

	  //Close the row
		if(distance){
			if((wep.locale == 'en_GB' || wep.locale == 'en_IE')){html += ' (' + distance.toFixed(1) + ' miles)</th></tr>';
			}else{html += ' (' + distance.toFixed(1) + ' km)</th></tr>';}
		}else{html +='</h3></th></tr>';};

	  	html +='<tr><td class="legend">'+str_allProd+'</td><td>'+theProducts+'</td></tr>';
		if(address){html += '<tr><td class="legend">' + listadr_str + '</td><td> ' + address +'</td></tr>';};
		if(optime && $.trim(optime)!='' && $.trim(optime)!='n\/a'){html += '<tr><td class="legend">' + optime_str + '</td><td> ' + optime +'</td></tr>';};
	  	if(wep.locale!='pl_PL'){
		  	if(website&& $.trim(website)!='n\/a'){html += '<tr><td class="legend">' + adr_web + '</td><td><a href=http://'+website+'>'+website+'</a></td></tr>';};
			if(phone && $.trim(phone)!='n\/a')
			{
				html += '<tr><td class="legend">' + adr_phone + '</td><td>' + phone;
				if(phone2 && $.trim(phone2)!='n\/a')html += '<br/>' + phone2;
				if(phone3 && $.trim(phone3)!='n\/a')html += '<br/>' + phone3;
				html += '</td></tr>';
			}
		  	if(fax&& $.trim(fax)!='n\/a'){html += '<tr><td class="legend">' + fax_str + '</td><td>' + fax +'</td></tr>';};
		};
	  
	  	if (wep.locale!='en_GB' && wep.locale!='en_IE' && wep.locale!='pl_PL'){
			if(email){html += '<tr><td class="legend">' + email_str + '</td><td><a href="mailto:' + email + '">'+email+'</a></td></tr>';};
		};
		if(notes && $.trim(notes)!='' && $.trim(notes)!='n\/a'){html += '<tr><td class="legend">' + notes_str + '</td><td> ' + notes +'</td></tr>';};
	  	if(wep.locale=='ru_RU'){
			var QR_content;
			var OW_content;
			var VOC_content;
			
			//always show the iimage even if it is a zero
			QR_content = '<span class="ascexpl">'+slow +'</span>'+QR_img+'<span class="ascexpl">'+ fast+'<span>';
			
			//if rating is 0, display "no information"
			if (ratings.attributes[1].value=='0'){OW_content=no_opinion}else{OW_content = '<span class="ascexpl">'+expensive +'</span>'+OW_img+'<span class="ascexpl">'+ cheap+'<span>'};
			if (ratings.attributes[2].value=='0'){VOC_content=no_opinion}else{VOC_content = '<span class="ascexpl">'+worse +'</span>'+VOC_img+'<span class="ascexpl">'+ better+'<span>'};
			
			html += 
			'<tr><td>'+youropinion+'</td><td><table class="innerASC"><tr><td>'+ str_qrep+'</td><td>'+QR_content+'</td></tr><tr><td>'+str_owcost+ '</td><td>'+OW_content+'</td></tr><tr><td>'+str_voc+ '</td><td>'+VOC_content+'</td></tr><tr><td>'+str_ihs+ '</td><td>'+ihs +'</td></tr></table></td></tr>';
			};
//	  };
	  html+='</tbody></table>';
    
	  div.html(html);

      div.css('marginBottom','5px'); 
      return div;

}


function getTheOptions(xml){
	
		var productCats = xml.documentElement.getElementsByTagName('radius');
		
		var shopOptions='';
		for(i=0;i<productCats.length;i++){
			if(productCats[i].getAttribute('DIST')== radius){
				for(j=1; j<(productCats[i].attributes.length);j++){
					if(productCats[i].attributes[j].value!=0){
						var productCatName = eval("str_"+productCats[i].attributes[j].name);
						
						shopOptions += '<p><input type="radio" value="'+ productCats[i].attributes[j].name +'" id="'+ productCats[i].attributes[j].name +'" name="RadioButton" class="radio left" /><label>'+ productCatName+'<span class="asc_prod_type"> ('+productCats[i].attributes[j].value;
						//Poland doesnt want the word adress.
						if(wep.locale!='pl_PL')shopOptions+=' '+adr_str;
						shopOptions +=')</span></label></p>';
		
						}
					}
			};
		};

		shopOptions+='';
		return shopOptions;
	
		
	}
	
function showAllOptions(xml){
		var productCats = xml.documentElement.getElementsByTagName('radius');
		var shopOptions='<p>';
		for(i=0;i<productCats.length;i++){
				for(j=0; j<(productCats[i].attributes.length);j++){
					if(productCats[i].attributes[j].value!=0){
						var productCatName = eval("str_"+productCats[i].attributes[j].name);
						shopOptions += '<p><input type="radio" value="'+ productCats[i].attributes[j].name +'" id="'+ productCats[i].attributes[j].name +'"name="RadioButton" class="radio left" /><label>'+ productCatName+'<span class="asc_prod_type"> ('+productCats[i].attributes[j].value+' '+adr_str+')</span></label></p>';
						}
			};
		};

		shopOptions+='</p>';
		return shopOptions;
	}	


	
