
var has_apt_input = false;
 
var apt_list = '';

var apt_list_prop_ids = '';

var data = '';

var has_irl_selected = true;

var view_all_flag = true;

var registered_sport_keys = new Array();


registered_sport_keys[0] = 'bb';
registered_sport_keys[1] = 'vb';

var registered_age_group_keys = new Array();

registered_age_group_keys[0] = 'U-18';
registered_age_group_keys[1] = 'A-18';

var registered_sport_values = new Array();

registered_sport_values['bb'] = 'Basket ball';
registered_sport_values['vb'] = 'Volley ball';

var autosuggest_obj = null;


var idCounter = 0;

function stopRKey(evt) {
	var evt  = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	if ((evt.keyCode == 13) && (node.type=="text")) { return false; }
}

document.onkeypress = stopRKey;


function AutoSuggestApartment(elem,suggestions,suggestion_keys,suggestion_type)
{
	
	//The 'me' variable allow you to access the AutoSuggestApartment object
	//from the elem's event handlers defined below.
	var me = this;

	//A reference to the element we're binding the list to.
	this.elem = elem;
	
	this.suggestions = suggestions;
	
	this.suggestion_keys = suggestion_keys;
	
	this.suggestion_type = suggestion_type;
	
	//Array to store a subset of eligible suggestions that match the user's input
	this.eligible = new Array();
	
	//Array to store a subset of eligible suggestion keys that match the user's input
	this.eligible_keys = new Array();

	//The text input by the user.
	this.inputText = null;

	//A pointer to the index of the highlighted eligible item. -1 means nothing highlighted.
	this.highlighted = -1;

	//A div to use to create the dropdown.
	this.div = document.getElementById("autosuggest");


	//Do you want to remember what keycode means what? Me neither.
	var TAB = 9;
	var ESC = 27;
	var KEYUP = 38;
	var KEYDN = 40;
	var RET = 13;
	

	//The browsers' own autocomplete feature can be problematic, since it will 
	//be making suggestions from the users' past input.
	//Setting this attribute should turn it off.
	elem.setAttribute("autocomplete","off");

	//We need to be able to reference the elem by id. If it doesn't have an id, set one.
	if(!elem.id)
	{
		var id = "autosuggest" + idCounter;
		idCounter++;

		elem.id = id;
	}


		
	/********************************************************
	onkeydown event handler for the input elem.
	Tab key = use the highlighted suggestion, if there is one.
	Esc key = get rid of the autosuggest dropdown
	Up/down arrows = Move the highlight up and down in the suggestions.
	********************************************************/
	elem.onkeydown = function(ev)
	{			
		var key = me.getKeyCode(ev);
		
		switch(key)
		{
			case TAB:
			me.useSuggestion();
			break;

			case RET:
			me.useSuggestion();
			break;

			case ESC:
			me.hideDiv();
			break;

			case KEYUP:
			if (me.highlighted > 0)
			{
				me.highlighted--;
			}
			me.changeHighlight(key);
			break;

			case KEYDN:
			if (me.highlighted < (me.eligible.length - 1))
			{
				me.highlighted++;
			}
			me.changeHighlight(key);
			break;
		}
		
	};

	/********************************************************
	onkeyup handler for the elem
	If the text is of sufficient length, and has been changed, 
	then display a list of eligible suggestions.
	********************************************************/
	elem.onkeyup = function(ev) 
	{	
			
		var key = me.getKeyCode(ev);
		switch(key)
		{
		//The control keys were already handled by onkeydown, so do nothing.
		case TAB:
		case ESC:
		case KEYUP:
		case KEYDN:
		case RET:
			return;
		default:

			if (this.value != me.inputText && this.value.length > 0)
			{										
				me.inputText = this.value.replace(/\s+/g," ").replace(/^\s|\s$/g,"");
				
				if(me.inputText.length < 3)
				{
					return;
				}
		
		
				me.getEligible();
				me.createDiv();
				me.positionDiv();
				me.showDiv();
			}
			else
			{
				me.hideDiv();
			}
		}
	};

	

	/********************************************************
	Insert the highlighted suggestion into the input box, and 
	remove the suggestion dropdown.
	********************************************************/
	this.useSuggestion = function()
	{
		if (this.highlighted > -1)
		{
			this.elem.value = this.eligible[this.highlighted];
			$('apt_hidden_name').value = this.elem.value;
			$('pid').value = this.suggestion_keys[this.eligible_keys[this.highlighted]];
		
			if(this.suggestion_type == 'change_apt')
			{
				$('apt_link').innerHTML = '(change?)';
				has_apt_input = false;
			}
			
			if(this.suggestion_type == 'load_apt')
			{
				
				$('apt_name').value = this.elem.value;
				
				
			}
			this.hideDiv();
			//It's impossible to cancel the Tab key's default behavior. 
			//So this undoes it by moving the focus back to our field right after
			//the event completes.
			setTimeout("document.getElementById('" + this.elem.id + "').focus()",0);			
		}

	};

	/********************************************************
	Display the dropdown. Pretty straightforward.
	********************************************************/
	this.showDiv = function()
	{
		this.div.style.display = 'block';
	};

	/********************************************************
	Hide the dropdown and clear any highlight.
	********************************************************/
	this.hideDiv = function()
	{
		this.div.style.display = 'none';
		this.highlighted = -1;
	};

	/********************************************************
	Modify the HTML in the dropdown to move the highlight.
	********************************************************/
	this.changeHighlight = function()
	{
		var lis = this.div.getElementsByTagName('LI');
		for (i in lis)
		{
			var li = lis[i];

			if (this.highlighted == i)
			{
				li.className = "selected";
			}
			else
			{
				li.className = "";
			}
		}
	};

	/********************************************************
	Position the dropdown div below the input text field.
	********************************************************/
	this.positionDiv = function()
	{
		var el = this.elem;
		var x = 0;
		var y = el.offsetHeight;
	
		//Walk up the DOM and add up all of the offset positions.
		while (el.offsetParent && el.tagName.toUpperCase() != 'BODY')
		{
			x += el.offsetLeft;
			y += el.offsetTop;
			el = el.offsetParent;
		}

		x += el.offsetLeft;
		y += el.offsetTop;

		this.div.style.left = x + 'px';
		this.div.style.top = y + 'px';
	};

	/********************************************************
	Build the HTML for the dropdown div
	********************************************************/
	this.createDiv = function()
	{		
		var ul = document.createElement('ul');
	
		//Create an array of LI's for the words.
		if(this.eligible.length > 0)
		{
			for (var i = 0; i < this.eligible.length; i++)
			{
				var word = this.eligible[i];
		
				var li = document.createElement('li');
				var a = document.createElement('a');
				a.href="javascript:false";
				a.innerHTML = word;
				li.appendChild(a);
		
				if (me.highlighted == i)
				{
					li.className = "selected";
				}
		
				ul.appendChild(li);
			}
			
			this.div.innerHTML = '<ul></ul>';
			this.div.replaceChild(ul,this.div.childNodes[0]);
		}		
		else
		{
			this.div.style.width = '300px';
			var markup = "<div class='miss'><small>Looks like we don't have data for such an apartment.</small><br/>";
			markup += "Please check for any spelling errors.</div>";

			this.div.innerHTML = markup;

		}
		
		
	

		/********************************************************
		mouseover handler for the dropdown ul
		move the highlighted suggestion with the mouse
		********************************************************/
		ul.onmouseover = function(ev)
		{
			//Walk up from target until you find the LI.
			var target = me.getEventSource(ev);
			while (target.parentNode && target.tagName.toUpperCase() != 'LI')
			{
				target = target.parentNode;
			}
		
			var lis = me.div.getElementsByTagName('LI');
			
	
			for (i in lis)
			{
				var li = lis[i];
				if(li == target)
				{
					me.highlighted = i;
					break;
				}
			}
			me.changeHighlight();
		};

		/********************************************************
		click handler for the dropdown ul
		insert the clicked suggestion into the input
		********************************************************/
		ul.onclick = function(ev)
		{
			me.useSuggestion();
			me.hideDiv();
			me.cancelEvent(ev);
			return false;
		};
	
		this.div.className="suggestion_list";
		this.div.style.position = 'absolute';

	};

	/********************************************************
	determine which of the suggestions matches the input
	********************************************************/
	this.getEligible = function()
	{
		
		this.eligible = new Array();
		this.eligible_keys = new Array();
		
		for (var i = 0; i < this.suggestions.length; i++) 
		{
			var suggestion = this.suggestions[i];

			if(null != suggestion.toLowerCase().match(this.inputText.toLowerCase()))
				{
					this.eligible[this.eligible.length]=suggestion;
					this.eligible_keys[this.eligible_keys.length] = i;
					
				}			
		}
	};

	/********************************************************
	Helper function to determine the keycode pressed in a 
	browser-independent manner.
	********************************************************/
	this.getKeyCode = function(ev)
	{
		if(ev)			//Moz
		{
			return ev.keyCode;
		}
		if(window.event)	//IE
		{
			return window.event.keyCode;
		}
	};

	/********************************************************
	Helper function to determine the event source element in a 
	browser-independent manner.
	********************************************************/
	this.getEventSource = function(ev)
	{
		if(ev)			//Moz
		{
			return ev.target;
		}
	
		if(window.event)	//IE
		{
			return window.event.srcElement;
		}
	};

	/********************************************************
	Helper function to cancel an event in a 
	browser-independent manner.
	(Returning false helps too).
	********************************************************/
	this.cancelEvent = function(ev)
	{
		if(ev)			//Moz
		{
			ev.preventDefault();
			ev.stopPropagation();
		}
		if(window.event)	//IE
		{
			window.event.returnValue = false;
		}
	}

	return me;
}

function changeApartment(obj)
{
	var markup = '';
	var apt_name = $('apt_hidden_name').value;
	var city = $('city').value;
		
	if(autosuggest_obj)
	{
		autosuggest_obj.hideDiv();
	}
	
	
	if(!has_apt_input)
	{
		$('apt_input').innerHTML = "<input name='apt_name' type='text' id='apt_name' size = '20' value='Loading...'/>";
		
		obj.innerHTML = '(keep '+apt_name+'?)';
		
		has_apt_input = true;
		
		if(!apt_list)
		{
			new Ajax.Request('/irl/apartment-suggest',
			{
				method:'GET',
				parameters: 'city=' + city,
				onSuccess: function(transport){
					
					var apt_list_arr = eval(transport.responseText);
					apt_list_prop_ids = apt_list_arr[0];
					apt_list = apt_list_arr[1];
					AutoSuggestApartment($('apt_name'), apt_list,apt_list_prop_ids,'change_apt');
					$('apt_name').value = '';
					
				},
				onFailure: function(transport){
					alert('Oops! Some problem occured, while loading apartments.');
				}			
			});
			
		}
		else
		{
			AutoSuggestApartment($('apt_name'), apt_list,apt_list_prop_ids,'change_apt');
			$('apt_name').value = '';
		}
			
	}
	
	else
	{
		$('apt_input').innerHTML = apt_name;
		obj.innerHTML = '(change?)';
		$('autosuggest').hide();
		has_apt_input = false;
	
	}
 }
 
 function loadApartments()
 {
 	var city = $('city').value;
 	
 	if(!apt_list)
	{
		new Ajax.Request('/irl/apartment-suggest',
		{
			method:'GET',
			parameters: 'city=' + city,
			onSuccess: function(transport){
				
				var apt_list_arr = eval(transport.responseText);
				apt_list_prop_ids = apt_list_arr[0];
				apt_list = apt_list_arr[1];
				AutoSuggestApartment($('apt_name'), apt_list,apt_list_prop_ids,'load_apt');
				$('apt_name').value = '';
				
			},
			onFailure: function(transport){
				alert('Oops! Some problem occured, while loading apartments.');
			}			
		});
			
	}
	else
	{
		AutoSuggestApartment($('apt_name'), apt_list,apt_list_prop_ids,'load_apt');
		$('apt_name').value = '';
	}
	
 }
 
  function fetchApartments(city)
  {
  		
	  	new Ajax.Request('/irl/apartment-suggest',
		{
			method:'GET',
			parameters: 'city=' + city,
			onSuccess: function(transport){
				
				var apt_list_arr = eval(transport.responseText);
				apt_list_prop_ids = apt_list_arr[0];
				apt_list = apt_list_arr[1];
				
			},
			onFailure: function(transport){
				alert('Oops! Some problem occured, while loading apartments.');
			}			
		});
  
  }
 
	function fetchTeams()
	{
		var age_group = '';
		
		var j =0;
		
		for(var i=0;i<registered_age_group_keys.length;i = i+1)
		{
			if($(registered_age_group_keys[i]).checked == true)
			{
				age_group = registered_age_group_keys[i];
				break;
				
			}
		
		}
		
		if(age_group=='')
			return;
		 var sport_flag = checkFormElements('sports[]','checkbox');
		 
		 if(sport_flag == false)
		 {
		 	alert('Please select a sport ');
		 	return;
		 }
		
		var offset_info = $('age_groups_info').cumulativeOffset();	
		offset_left = offset_info[0];
		offset_top = offset_info[1];
		
		//$('image_loader').style.top = (offset_top) + 20+'px';
		//$('image_loader').style.left = (offset_left) + 150 +'px';	
		//$('image_loader').show();
		
		
		$('team_loader').style.top = (offset_top) + 30+'px';
		$('team_loader').style.left = (offset_left) + 20 +'px';	
		$('team_loader').show();
		
		var property_id = $('pid').value;
		
		var sports = new Array();
		
		var j =0;
		
		for(var i=0;i<registered_sport_keys.length;i = i+1)
		{
			if($(registered_sport_keys[i]).checked == true)
			{
				sports[j] = registered_sport_keys[i];
				j = j+1;
			}
		
		}
		
		
		
		new Ajax.Request('/irl/registered-teams',
		{
			method:'GET',
			parameters: 'age_group=' + age_group + '&sports='+ sports + '&pid='+property_id,
			
			onSuccess: function(transport)
			{
				//$('image_loader').hide();
				
				$('team_loader').hide();
				$('registered_teams').innerHTML = transport.responseText;;
			},
			onFailure: function(transport){
				//$('image_loader').hide();
				$('team_loader').hide();
				alert('Oops! Some problem occured, while loading teams.');
			}			
		});
	}
	
	/*function showCreateTeamBox(sport)
	{
		var offset_info = $(sport+'_create_team_id').cumulativeOffset();	
		offset_left = offset_info[0];
		offset_top = offset_info[1];
		$(sport+'_create_team_id').hide();
		
		$('create_team_box').style.top = (offset_top) + 'px';
		$('create_team_box').style.left = (offset_left) + 'px';	
		$('create_team_box').show();
		
		$('team_sport').value = sport;
		
		
	
	}
	
	function addTeamName()
	{
		var team_name = $('team_name').value;
		var team_sport = $('team_sport').value;
		
		team_name = trim(team_name);
		
		if(team_name == '')
		{
			alert('Please enter a team name ');
			return;
		}
		
		$(team_sport+'_new_team_name').value = team_name ;
		$('team_name').value = '';
		$('team_sport').value = '';
		
		$('create_team_box').hide();
		
		$(team_sport+'_create_team_id').innerHTML = "<div class = 'text13' style = 'border:thin solid #66FF66;color:grey;'>A new team with name " +team_name +" has been created.</div>";
		
		$(team_sport+'_create_team_id').show();	
	
	}
	
	function undoTeamName()
	{
		var team_sport = $('team_sport').value;
		$(team_sport+'_create_team').checked = false;
		$(team_sport+'_create_team_id').show();
		
		
		$('create_team_box').hide();
		
	
	}*/
	
	
	function addNewTeam(sport)
	{
		
		var team_name = prompt('Enter Team Name for ' + registered_sport_values[sport],'Enter Team Name');
		var property_id = $('pid').value;
		
		if(team_name !='Enter Team Name' && trim(team_name)!='' && team_name !=null)
		{
			var offset_info = $(sport+'_create_team_id').cumulativeOffset();	
			offset_left = offset_info[0];
			offset_top = offset_info[1];
			
			/*$('image_loader').style.top = (offset_top) + 20+'px';
			$('image_loader').style.left = (offset_left) + 150 +'px';	
			$('image_loader').show();*/
			
			$('team_name_loader').style.top = (offset_top) + 10+'px';
			$('team_name_loader').style.left = (offset_left) + 20 +'px';	
			$('team_name_loader').show();
			
			new Ajax.Request('/irl/check-alias',
			{
				method:'GET',
				parameters: 'pid=' + property_id + '&team_name='+ team_name,
				onSuccess: function(transport)
				{
					$('team_name_loader').hide();
					
					if(transport.responseText == '1')
					{
						$(sport+'_new_team_name').value = team_name ;
						$(sport+'_create_team_id').innerHTML = "<div class = 'text13' style = 'color:green;'>Team " +team_name +" has been created for " + registered_sport_values[sport]+". Please provide contact details to register the team.</div>";
						//$(sport+'_create_team_id').style.border = 'thin solid #66FF66';
						//$(sport+'_create_team_id').style.color = 'green';
					}
					else
					{
						$(sport+'_create_team_id').innerHTML = "<div style = 'width:450px;padding-top:5px;float:left;padding-left:10px;color:red;'> Team "+team_name +' already exists. Please provide a new team name</div>'+
																 "<div class = 'text13' style = 'width:100px;padding-top:5px;float:left;'><a id ="+sport+"_create_team href = 'javascript:void(0);' onclick =" + "addNewTeam('" + sport + "');>Create Team</a></div>";

					}
					
				},
				onFailure: function(transport){
					$('team_name_loader').hide();
					alert('Oops! Some problem occured, while loading teams.');
				}			
			});
			
			
		}
		
	}
	
	function irlFormValidation()
	{
		 var property_id = $('pid').value;
		 if(!property_id)
		 {
		 	alert('Problem occurred in selecting the apartment');
		 	return;
		 }
		 
		 var contact_name = trim($('contact_name').value);
		 if(contact_name == '')
		 {
		 	alert('Please enter your name ');
		 	return;
		 }
		 
		 var contact_email = trim($('email_id').value);
		 if(contact_email == '')
		 {
		 	alert('Please enter your email id  ');
		 	return;
		 }
		 
		 var contact_number = trim($('contact_number').value);
		 if(contact_number == '')
		 {
		 	alert('Please enter your contact number ');
		 	return;
		 }
		 
		 var sport_flag = checkFormElements('sports[]','checkbox');
		
		 
		 if(sport_flag == false)
		 {
		 	alert('Please choose the the sport ');
		 	return;
		 }
		 var age_group_flag = checkFormElements('age_group','radio');
		 if(age_group_flag == false)
		 {
		 	alert('Please choose the the age group');
		 	return;
		 }
		 
		 $('irl_registration_form').submit();
		 
		 /*var registered_teams_flag = $('registered_teams_flag').value;
		 
		 if(registered_teams_flag == '1')
		 {
		 	 var  registered_sports = new Array();
		 	 registered_sports = getElementValues('registered_sports[]');
		 	 
		 	 for(var i = 0;i<registered_sports.length; i = i+1)
		 	 {
		 	 	var select_team_flag =  checkFormElements(registered_sports[i] + '_select_team[]','checkbox');
		 	    var new_team_name = $(registered_sports[i] + '_new_team_name').value;
		 	    
		 	    var create_team_flag = false;
		 	    
		 	    if(new_team_name == '')
		 	    {
		 	    	 create_team_flag = false;
		 	    }
		 	    
		 	    else
		 	    {
		 	    	 create_team_flag = true;
		 	    }
		 	    
		 	    if(create_team_flag == false && select_team_flag == false)
			 	{
			 		alert('Please select a team or create your own '+registered_sport_values[registered_sports[i]]  + ' team');
			 		return;
			 	}
		 	 
		 	 }
			 
			 $('irl_registration_form').submit();
		 }
		 
		 else if(registered_teams_flag == '0')
		 {
		 	$('irl_registration_form').submit();
		 }*/
		 
	}
	
	function trim(str)
	{
		if(str)
		{
			str = str.replace(/\s+/g," ");
			str = str.replace(/^\s|\s$/g,"");
			return str;
		}
		return '';
	}
	
	function getElementValues(element_name)
	{
		var elements = new Array();
		var elements = document.getElementsByName(element_name);
		var element_values = new Array();
		
		for(var i = 0; i<elements.length; i = i+1)
		{
			var element = document.getElementsByName(element_name).item(i);
			element_values[i] = element.value;
		}
	
		return element_values;
	}
	
	function checkFormElements(element_name,element_type)
	{
		
		var elements = new Array();
		var elements = document.getElementsByName(element_name);
		
		for(var i = 0; i<elements.length; i = i+1)
		{
			var element = document.getElementsByName(element_name).item(i);
			if(element_type == 'checkbox' || element_type == 'radio' )
			{
				if(element.checked == true)
				{
					return true;
				}	
			
			}
			
			else if(element_type == 'hidden')
			{
				if(element.value != '')
				{
					return true;
				}
			}
			
			else
			{
				return false;
			}
		
		}
		return false;
	}
	
	function changeView(team_id,sport)
	{
		var flag = $('select_team-'+team_id).checked;
		
		if(flag == true)
		{
			//$(sport + '_info-' + team_id).style.border = 'thin solid #66FF66';
			$(sport + '_team_name-' + team_id).style.color = 'green';
		}
		
		else
		{
			//$(sport + '_info-' + team_id).style.border = 'thin solid #CC0033';
			$(sport + '_team_name-' + team_id).style.color = 'red';
		}
	
	
	}
	
	function irlTeamAddMemberFormValidation()
	{
		var contact_name = $('contact_name').value;
		var contact_email = $('contact_email_id').value;
		var contact_number = $('contact_number').value; 
		
		if(trim(contact_name) == '')
		{
			alert('Please enter the name ');
			return;
		}
		
		if(trim(contact_email) == '')
		{
			alert('Please enter a valid email id ');
			return;
		}
		
		if(trim(contact_number) == '')
		{
			alert('Please enter a contact number ');
			return;
		}
		
		
		
		$('irl_add_member_form').submit();
	
	}
	
	function ShowHideIrlForm(action)
	{
		if(action == 'show')
		{
			$('irl_registration').show();
			$('irl_ack').hide();
		}
		
		else if(action == 'hide')
		{
			$('irl_registration').hide();
			$('irl_ack').show();
		}
			
	}
	
	function ShowHideIrlTeamForm(action,value)
	{
		
		if(action == 'show')
		{
			$('join_irl_team').show();
			$('irl_ack').hide();
		}
		
		else if(action == 'hide')
		{
			var team_id = $('team_id').value;
			
			myString = new String(value)
			myRE = new RegExp(team_id, "i")
			results = myString.match(myRE);
			
			if(results)
			{
				$('join_irl_team').hide();
				$('irl_ack').show();
			}
			else
			{
				$('join_irl_team').show();
				$('irl_ack').hide();
			}
		}
	
	}
	
	/*function showAllTeams(sport)
	{
		alert(sport); return;
		var team_ids_arr = new Array();
		
		team_ids = eval(team_ids);
		
		$(sport+'_view_all_teams').hide();
		
		for(var i = 3;i<team_ids_arr.length;i = i+1)
		{
			var team_id = team_ids_arr[i];
			
			$(sport+'_info-'+team_id).show();
		
		}
		
		$(sport+'_hide_teams').show();
	}
	
	function hideAllTeams(sport,team_ids)
	{
		
		var team_ids_arr = new Array();
		
		team_ids = eval(team_ids);
		
		$(sport+'_hide_teams').hide();
		
		for(var i = 3;i<team_ids_arr.length;i = i+1)
		{
			var team_id = team_ids_arr[i];
			
			$(sport+'_info-'+team_id).hide();
		
		}
		
		$(sport+'_view_all_teams').show();
		
		
	
	}*/
	
	function showAllTeams(sport,team_ids)
	{
		
		var team_ids_arr = new Array();
		
		team_ids_arr = team_ids.split('|');
		
		for(var i = 3;i<team_ids_arr.length-1;i = i+1)
		{
			var team_id = team_ids_arr[i];
			
			$(sport+'_info-'+team_id).show();
				
		}
		
		$(sport+'_show_teams').hide();
		$(sport+'_hide_teams').show();
	}
	
	function hideAllTeams(sport,team_ids)
	{
		
		var team_ids_arr = new Array();
		
		team_ids_arr = team_ids.split('|');
		
		for(var i = 3;i<team_ids_arr.length-1;i = i+1)
		{
			var team_id = team_ids_arr[i];
			
			$(sport+'_info-'+team_id).hide();
				
		}
		
		$(sport+'_show_teams').show();
		$(sport+'_hide_teams').hide();
	}
	
	function setLink(sport,team_id)
	{
		alert(sport); return;
	
	}
	
	
	
