var initialTabs = new Array();
var flashSwapDiv = "";

function swapTaxiTabsData(id, raceId) {
	
	      
   var url = "/ajax/taxidata/id/"+id+"/raceId/"+raceId;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "string",
	      success: function (content) {
		   
		   if (!initialTabs[id])
		   initialTabs[id] = $("#taxi"+id).get(0).innerHTML;
		   $("#taxi"+id).get(0).innerHTML=content;
		   
			$("#driverdatatab"+id).get(0).className='data selected';
			$("#driverlocationtab"+id).get(0).className='location';
			
			var flashvars = {
		              dataPath: "/ajax/taxiperformance/id/"+id+"/raceId/"+raceId
		          };
		        var params = {
		              wmode: "transparent",
		              allowScriptAccess : "sameDomain",
		              allowFullScreen : "false"
		          };
		        swfobject.embedSWF("/swfs/graphs/smallMap.swf", "smallGraph"+id, "212", "165", "9.0.0", "/flash/expressInstall.swf", flashvars, params);
		  
	   }
	  });
}

function chooseDriver (taxiPosition, id) {
	
	var allTaxis = $(".cbDrivers"+taxiPosition+":checked");	
	allTaxis.attr("checked",false);
	allTaxis = $(".liDrivers"+taxiPosition);	
	allTaxis.removeClass("selected");
	$("#driver"+taxiPosition+"_"+id).attr("checked",true);
	$("#liDriver"+taxiPosition+"_"+id).toggleClass("selected");
	document.getElementById("swapdriver"+taxiPosition).driverTo.value=id;
}

function resetDrivers(id) {
	document["formSwapDrivers"+id].reset();
	var allTaxis = $(".cbDrivers"+id+":checked");
	allTaxis.attr("checked",false);	
	allTaxis = $(".liDrivers"+id);	
	allTaxis.removeClass("selected");	
}

var selectedDriversQueue = new Array();
function pickInitialDriver(id, value) {
	if( $("#"+id).attr("checked") ) {	
		var allTaxis = $(".cbDrivers:checked");
		if(allTaxis.length > 2) {
			$("#driver"+selectedDriversQueue.shift()).attr("checked", false);
		}
		selectedDriversQueue.push(value);
	} else {
		selectedDriversQueue.splice(jQuery.inArray(value, selectedDriversQueue), 1);
	}
	
	for(i=0; i<2; i++) {
		if(selectedDriversQueue[i]>0) {
			$("#driverId"+(i+1)).val(selectedDriversQueue[i]);
		} else {
			$("#driverId"+(i+1)).val("");
		}
	}
}

function moveLeft() {
	$("#drivers").slideUp('slow', function(){
		alert ('slid');
	});
}

function chooseFromDriver(id) {
	document.forms.swapDrivers.driverFrom.value=id;
}

function chooseToDriver(id) {
	document.forms.swapDrivers.driverTo.value=id;
}

function loadLatestRaceView() {
	if (flashSwapDiv) {
		$("#latestrace").get(0).innerHTML=flashSwapDiv;
		flashSwapDiv = null;
	}

}

function loadLatestRace(id) {
	var url = "/ajax/racepositions/id/"+id;
	//window.open(url);
	   $("#latestracecontainer").get(0).innerHTML="<iframe src='"+url+"' style='width:440px;height:240px' frameborder='0'></iframe>";
		$("#raceviewtab").get(0).className='';
		$("#tableviewtab").get(0).className='selected';
		
		if (document.getElementById("minileaguesviewtab"))
		$("#minileaguesviewtab").get(0).className='';
}

function loadMiniLeagues(id) {
	$("#raceviewtab").get(0).className='';
		$("#tableviewtab").get(0).className='';
		$("#minileaguesviewtab").get(0).className='selected';
		//$("#latestracecontainer").load("/mini-leagues");
		$("#latestracecontainer").get(0).innerHTML="<iframe src='/mini-leagues/id/"+id+"' style='width:440px;height:240px' id='minileague' name='minileague' frameborder='0'></iframe>";
		
}

function loadLatestRaceTrack(id, inFuture) {
	 $("#latestracecontainer").get(0).innerHTML=" <div  id='latestrace'><a href='http://get.adobe.com/flashplayer/'><img src='/images/dummy/trackNoFlash.gif' /></a></div>";
	
	 var track = "britishGP";
	 
	 if (id==2) {
		 track = "germanGP";
	 } else if (id==3) {
		 track = "hungarianGP";
	 } else if (id==4) {
		 track = "italianGP";
	 } else if (id==5) {
		 track = "belgianGP";
	 } 
	 

	var flashvars=null;

	 if (inFuture) {
	 	flashvars = {
             pathToMap: "/swfs/race-tracks/"+track+".swf"
         	};
	 } else {
	 	flashvars = {
             pathToMap: "/swfs/race-tracks/"+track+".swf",
             dataPath: "/ajax/racetrack/id/"+id
         };
	}


         var params = {
             wmode: "transparent",
             allowScriptAccess : "sameDomain",
             allowFullScreen : "false"
         };
         swfobject.embedSWF("/swfs/race-tracks/mapPreloader.swf", "latestrace", "440", "239", "8.0.0", "/flash/expressInstall.swf", flashvars, params);
 		$("#raceviewtab").get(0).className='selected';
		$("#tableviewtab").get(0).className='';
		if (document.getElementById("minileaguesviewtab"))
		$("#minileaguesviewtab").get(0).className='';
	  
}

function loadDriverStat(id, raceId) {
	  var url = "/ajax/taxiinline/id/"+id + "/raceId/"+raceId;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "string",
	      success: function (content) {
			 $("#driverstat"+id).get(0).innerHTML = content;
	   }
	  });	
}

function loadDriverStatFull(id, raceId) {
	  var url = "/ajax/taxiinlinefull/id/"+id + "/raceId/"+raceId;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "string",
	      success: function (content) {
			 $("#driverstat"+id).get(0).innerHTML = content;
	   }
	  });	
}

function loadInteractiveMap(taxiId) {

	if (GBrowserIsCompatible())
     {
		 var url = "/ajax/taxilastcoords/total/5/id/"+taxiId;

		   $.ajax({
		      type: "GET",
		      url: url,
		       async: false,
		      dataType: "xml",
		      success: function (content) {
			   	var rD = content;
				var pf = content.getElementsByTagName("coord");
				if (pf.length==0) {
					return
				}
				lat = pf[0].getAttribute("lat");
				lng = pf[0].getAttribute("lng");
				   
				   //var status = 1* pf[0].getAttribute("status");
				map = new GMap2(document.getElementById("gmap"));
		        map.addControl (new GMenuMapTypeControl() );
		        map.addControl (new GSmallZoomControl() );
		        map.setCenter(new GLatLng(lat, lng),12);
		        var myIcon = new GIcon();
		         
		        var point = new GLatLng(lat, lng);
		        myIcon.image = "/images/taxi-icons/"+taxiId+".png";
		        myIcon.title = "Location";
		        myIcon.iconSize = new GSize(82,72);
		        myIcon.iconAnchor = new GPoint (52,72);
		         
		        var  marker = new GMarker(point, myIcon);
		        map.addOverlay(marker);
		        
		        var colors = new Array('#ffffff','#000000', '#330000', '#660000','#990000','#aa0000','#bb0000','#cc0000','#dd0000','#ee0000','#ff0000')
		        for (i=1; i<pf.length; i++) {
		        	var thisLat = pf[i].getAttribute("lat");
		        	var thisLng = pf[i].getAttribute("lng");
		        	var previousLat = pf[i-1].getAttribute("lat");
		        	var previousLng = pf[i-1].getAttribute("lng");
		        	
		        	var polyline = new GPolyline([
		        	                              new GLatLng(thisLat, thisLng),
		        	                              new GLatLng(previousLat, previousLng)
		        	                            ], colors[i], 5);
		        	                            map.addOverlay(polyline);
		        }
		   }
		  });	
        
     }

}

function loadDriverStatTotal(id) {
	  var url = "/ajax/taxiinlinetotal/id/"+id;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "string",
	      success: function (content) {
			 $("#driverstat"+id).get(0).innerHTML = content;
	   }
	  });	
}

function swapTaxiTabsLocation(id) {
	if (typeof initialTabs[id]=="undefined") { return;}
	 $("#taxi"+id).get(0).innerHTML = initialTabs[id];
	 initialTabs[id] = "";
	 
		$("#driverlocationtab"+id).get(0).className='location selected';
		$("#driverdatatab"+id).get(0).className='data';
}

function addPadding (number) {
	if (number<10) {
		number = "0"+number;
	}
	return number;
}
var currentPopupDriver;
var currentPopupDriverRequest;
function showDriverPopup(id, type) {
	var url = "/ajax/taxipopup/id/"+id;
	currentPopupDriver = id;

	if(currentPopupDriverRequest) {
		currentPopupDriverRequest.abort();
	}


	currentPopupDriverRequest = $.ajax({
		type: "GET",
		url: url,
		async: false,
		dataType: "string",
		success: function (content) {
		$("#driverpopup").get(0).innerHTML = content;
		$("#driverpopup").get(0).style.display='block';
		var left = 0;
		//my team - create page
		if(type == 1) {
			left=-109;//distance to edge of first box
			//left += 39*(2*id -1) + 12*(id-1);
			//left += 78*id - 39 + 12*id -12;
			left += 90*id - 51;
			$("#driverpopup").css("top",-230);
		} else {
			$("#driverpopup").css("top",-200);
			//home page
			left = -182;
			/* var remainder = id%4;
				 left=-46;
				 if (remainder==2) {
					 left = 58;
				 } else if (remainder==3) {
					 left = 164;
				 } else if (remainder==0) {
					 left = 266;
				 }	*/	
			var offsetId = (id-1)%3 +1;
			//left += 70*(2*offsetId) + 10*(offsetId-1);
			left += 150*offsetId - 10;
		}
		$("#driverpopup").css("left",left);
		
		

	}
	});	
}

function hideDriverPopup() {
	if(currentPopupDriverRequest) {
		currentPopupDriverRequest.abort();
	}	
	$("#driverpopup").get(0).style.display='none';
}

function doCountdown(secs) {

	if (!document.getElementById("days")) {
		return
	}
    if( parseInt(secs) <= 0 ) return;	
	
	var days = Math.floor(secs / (60*60*24));
	var remainder = secs % (60*60*24);
	var hours = Math.floor(remainder / (60*60));
	remainder = remainder % (60*60);
	var mins = Math.floor(remainder / (60));
	var secs2 = remainder % (60);

	try {
		if($("#days").get(0)) {
			$("#days").get(0).innerHTML=addPadding (days);
		}
		
		$("#hours").get(0).innerHTML=addPadding (hours);	
		$("#mins").get(0).innerHTML=addPadding (mins);	
		$("#secs").get(0).innerHTML=addPadding (secs2);	
	} catch (err) {
		//alert(err.description);
	}
	secs-=1;
	setTimeout("doCountdown("+secs+")",1000);
	
}

var loadingTeam=false;
var checkTimeout=null;

function checkMiniLeague(text) {
	//alert (text);
	if (loadingTeam==true && text) {
		//alert ('stillloading');
		clearTimeout(checkTimeout);
			checkTimeout=null;

		
		if (!checkTimeout) {
			checkTimeout=setTimeout("checkMiniLeague(\""+text+"\")",2000);
		}
		return;
	}
	clearTimeout(checkTimeout);
	
	$("#miniLeagueNameFeedback").html('');
	if($("#miniLeagueNameFeedback span.errors").length > 0) {
		$("#miniLeagueNameFeedback span.errors").html('');
	}		
	
	if (!text) return;

	loadingTeam=true;
	checkTimeout=null;
	var url = "/ajax/checknewminileaguename/text/"+text;

	$.ajax({
		type: "GET",
		url: url,
		async: false,
		dataType: "xml",
		success: function (content) {
		loadingTeam=false;
		//alert (loadingTeam);
		
		var rD = content;
		var pf = content.getElementsByTagName("info");
		var status = 1* pf[0].getAttribute("status");

		if (status==1) {

			$("#miniLeagueNameFeedback").get(0).innerHTML='<span class="avaliable">Available</span>';
		} else if (status==-1) {
			$("#miniLeagueNameFeedback").get(0).innerHTML='<span class="formError">Not available</span>';
		} else if (status==-2) {
			$("#miniLeagueNameFeedback").get(0).innerHTML='<span class="formError">Too long</span>';
		} else if (status==-3) {
			$("#miniLeagueNameFeedback").get(0).innerHTML='<span class="formError">Not available</span>';
		}  else if (status==-4) {
			if($("#miniLeagueNameFeedback span.errors").length > 0) {
				$("#miniLeagueNameFeedback span.errors").html('Illegal characters in league name.');
			} else {
				$("#miniLeagueNameFeedback").html('<span class="formError">Illegal characters in league name.</span>');
			}
		
		}	
		
	}
	});	

}

function checkTeam(text) {
	//alert (text);
	if (loadingTeam==true && text) {
		//alert ('stillloading');
		clearTimeout(checkTimeout);
			checkTimeout=null;

		
		if (!checkTimeout) {
			checkTimeout=setTimeout("checkTeam(\""+text+"\")",2000);
		}
		return;
	}
	clearTimeout(checkTimeout);
	
	$("#teamNameFeedback").html('');
	if($("#teamNameContainer span.errors").length > 0) {
		$("#teamNameContainer span.errors").html('');
	}		
	
	if (!text) return;

	loadingTeam=true;
	checkTimeout=null;
	var url = "/ajax/checknewteamname/text/"+text;

	$.ajax({
		type: "GET",
		url: url,
		async: false,
		dataType: "xml",
		success: function (content) {
		loadingTeam=false;
		//alert (loadingTeam);
		
		var rD = content;
		var pf = content.getElementsByTagName("info");
		var status = 1* pf[0].getAttribute("status");

		if (status==1) {


			updateLogo();
			$("#teamNameFeedback").get(0).innerHTML='<span class="avaliable">Team name available</span>';
		} else if (status==-1) {
			$("#teamNameFeedback").get(0).innerHTML='<span class="formError">Oh no! Someone has already taken this team name, please enter another one</span>';
		} else if (status==-2) {
			$("#teamNameFeedback").get(0).innerHTML='<span class="formError">Too long, please shorten</span>';
		} else if (status==-3) {
			$("#teamNameFeedback").get(0).innerHTML='<span class="formError">Tut, tut! This team name is a bit rude, please enter another one</span>';
		}  else if (status==-4) {
			if($("#teamNameContainer span.errors").length > 0) {
				$("#teamNameContainer span.errors").html('Illegal characters in team name.');
			} else {
				$("#teamNameFeedback").html('<span class="formError">Illegal characters in team name.</span>');
			}
		
		}	
		
	}
	});	

}

function updateLogo() {
	var name = $("#teamName").val();
	var style = $("#teamLogoId").val();
	var colour = $("#teamColourId").val();
	document.images.teamlogographic.src='/graphics/teamlogodynamic/text/'+name
										+'/style/'+style+'/colour/'+colour;
}

var loadingEmail=false;
var emailCheckTimeout=null;

function verifyEmailAddress(email) {
	if (loadingEmail==true && email) {
		//alert ('stillloading');
		clearTimeout(emailCheckTimeout);
			emailCheckTimeout=null;

		
		if (!emailCheckTimeout) {
			emailCheckTimeout=setTimeout("verifyEmailAddress(\""+email+"\")",2000);
		}
		return;
	}
	clearTimeout(emailCheckTimeout);

	if (!email) return;
	
	loadingEmail=true;
	emailCheckTimeout=null;
	
	 var url = "/ajax/checknewemail/text/"+email;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "xml",
	      success: function (content) {
		   loadingEmail=false;
		   var rD = content;
		   var pf = content.getElementsByTagName("info");
		   var status = 1* pf[0].getAttribute("status");

		   if (status==1) {
			   $("#emailAddressFeedback").get(0).innerHTML='<span class="avaliable">Email has not been registered</span>';
		   } else if (status==-1) {
			   $("#emailAddressFeedback").get(0).innerHTML='<span class="formError">Email already exists</span>';
		   } 
	   }
	  });
}

function verifyEmailAddress2(email) {
	if (loadingEmail==true && email) {
		//alert ('stillloading');
		clearTimeout(emailCheckTimeout);
			emailCheckTimeout=null;

		
		if (!emailCheckTimeout) {
			emailCheckTimeout=setTimeout("verifyEmailAddress2(\""+email+"\")",2000);
		}
		return;
	}
	clearTimeout(emailCheckTimeout);

	if (!email) return;
	
	loadingEmail=true;
	emailCheckTimeout=null;
	
	 var url = "/ajax/checknewemail/text/"+email;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "xml",
	      success: function (content) {
		   loadingEmail=false;
		   var rD = content;
		   var pf = content.getElementsByTagName("info");
		   var status = 1* pf[0].getAttribute("status");

		   if (status==1) {
			   $("#emailAddressFeedback").get(0).innerHTML='<span class="avaliable">OK</span';
		   } else if ($("#emailAddress").val()==$("#hiddenEmailAddress").val()) {
			   $("#emailAddressFeedback").get(0).innerHTML='<span class="formError">Currently used one</span>';
		   } else if (status==-1) {
			   $("#emailAddressFeedback").get(0).innerHTML='<span class="formError">Email already exists</span>';
		   } 
	   }
	  });
}

function showTooltip (text, id) {
	$("#raceInfo").get(0).innerHTML = text;
	$("#raceInfo").get(0).style.display = "block";
	if (id==2) {
		$("#raceInfo").get(0).style.left = "-35px";
	}
	
	if (id==3) {
		$("#raceInfo").get(0).style.left = "65px";
	}
	
	if (id==4) {
		$("#raceInfo").get(0).style.left = "156px";
	}
	
	if (id==5) {
		$("#raceInfo").get(0).style.left = "234px";
	}
	
	$("#raceInfo").get(0).className='raceTooltip'+id;
}

function showTooltipMissedOut (text, id) {
	$("#raceInfo").get(0).innerHTML = "Sorry, you missed out on this race!";
	$("#raceInfo").get(0).style.display = "block";
	
	if (id==1) {
		$("#raceInfo").get(0).style.left = "-125px";
	}
	if (id==2) {
		$("#raceInfo").get(0).style.left = "-35px";
	}
	
	if (id==3) {
		$("#raceInfo").get(0).style.left = "65px";
	}
	
	if (id==4) {
		$("#raceInfo").get(0).style.left = "156px";
	}
	
	if (id==5) {
		$("#raceInfo").get(0).style.left = "234px";
	}
	
	$("#raceInfo").get(0).className='raceTooltip'+id;
}

function hideTooltip () {
	$("#raceInfo").get(0).style.display = "none";
}

function dbg(str) {
	document.getElementById("nav").innerHTML += "<span style='color:white'>"+str+"</span>";
}
var currentStatsDriver;
var currentStatsContent
var driverStatsReq;
function openDriverStats(id) {
	
	
	if($("#driverPopup"+id).css('display')!='block') {
		$("#driverPopup"+id).css('display',"block");
	}
	
	$("#driver"+id).css('z-index',"500");
	
	if(id == currentStatsDriver)
		return;	
	if(currentStatsDriver)
		closeDriverStats(currentStatsDriver);
	


	var url = "/ajax/taximappopup/id/"+id;
	if(driverStatsReq)
		driverStatsReq.abort();
	currentStatsContent = null;
	

	if(currentStatsDriver != id) {
		currentStatsDriver = id;
		driverStatsReq = $.ajax({
			type: "GET",
			url: url,
			async: true,
			dataType: "string",
			success: function (content) {
				currentStatsContent = content;
				showCurrentDriver();		
				driverStatsReq = null;
			}
		});	
	}
	
	 setTimeout("closeDriverStats("+id+")",3000);
}

function showCurrentDriver() {
	if(currentStatsDriver && currentStatsContent) {
		$("#driverPopup"+currentStatsDriver).html(currentStatsContent);
		currentStatsContent = driverStatsReq = null;
	}
}

function closeDriverStats(id) {
	if(driverStatsReq)
		driverStatsReq.abort();
	currentStatsContent = null;	

	$("#driverPopup"+id).css('display',"none");
	$("#driver"+id).css('z-index',"5");

}


function openPowerUpInfo (id, driver) {
	var text = "";
	if(id == "0") {
		text = "Pitstop";
	}
	
	if(id == "0.5") {
		text = "Safety car";
	}
	
	if(id == "2") {
		text = "Turbo";
	}
	
	if(id == "1.5") {
		text = "Flying lap";
	}
	
	$("#powerUpInfo"+driver).css('display',"block");
	$("#powerUpInfo"+driver).html(text);
}

function closePowerUpInfo(driver) {
	$("#powerUpInfo"+driver).css('display',"none");
}

function loadWeather(cityId) {
	 var url = "/ajax/weatherpanel/city/"+cityId;

	   $.ajax({
	      type: "GET",
	      url: url,
	       async: false,
	      dataType: "string",
	      success: function (content) {
		  
		  $("#weatheretc").get(0).innerHTML=content;
		  
	   }
	  });
}
