// Author: Al Sierra
// Version: 3.27.2009
// Description: AJAX for search screens
nycs.search = {};
nycs.search.inDocumentRef = false;
nycs.search.dataURL = false;
nycs.search.currentpage = false;
nycs.search.msgdata = {};
nycs.search.Init = 
	function(inDocumentRef) { 	
		nycs.search.inDocumentRef = inDocumentRef;
		nycs.search.dataURL='scripts/php/search.php?';
		var msg_data  = nycs.search.msgdata;
		msg_data.keyword = false;
		msg_data.isPriority = false;
		msg_data.location = false;
		msg_data.radius = false;
		msg_data.pagenum = 1;
		msg_data.sort_by = false;
		msg_data.sort_type = false;
		msg_data.borough = false;
		msg_data.audiencetype = false;
		msg_data.interests = false;
		msg_data.skills = false;
		msg_data.OpportunityTypeID = 2;

		nycs.search.msgdata = msg_data;
		var cmd = nycs.search.getQuerystring('cmd');
		if(cmd == 'widget'){
			nycs.search.SearchFromWidget();
		} 
	};
/**********************************************************************************************************************/
//Autocompleter Search Functions
/**********************************************************************************************************************/
//Not Needed
nycs.search.GetSearchWords = 
	function(){
		var msg_data = {};
		msg_data.cmd = 'getsearchwords';
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_list').innerHTML = JSON.search_words_html;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
			}			
		});
	};
//Not Needed	
nycs.search.AddSearchWord = 
	function(searchword){
		alert(searchword);
		return false;
		var msg_data = {};
		msg_data.searchword = searchword;
		msg_data.cmd = 'addsearchword';
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_list').innerHTML = JSON.search_words_html;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
			}			
		});
	
	};

nycs.search.InitializeHomeSearch = 
	function(){
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		msg_data.cmd = 'getinitializesearch';
		nycs.search.msgdata = msg_data;
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					msg_data.cmd = 'gethomepagesearch';
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});

	};	
/**********************************************************************************************************************/
//Basic Search Functions
/**********************************************************************************************************************/	
nycs.search.SubmitSearchWord = 
	function(){
		var kw = $('search_input').value;
		var keyword = false;
		if (!kw.blank()) {
			if(!nycs.main.ValidateString(kw)){
				alert('Sorry, There are Invalid Characters in your Keyword Search');
				$('search_input').value='';
				return ;
			}
			keyword = kw;
		}		
		nycs.search.SubmitKeywordSearchWord(keyword);
	};
nycs.search.SubmitKeywordSearchWord = 
	function(searchword){
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		msg_data.keyword = searchword;
		msg_data.isPriority = false;
		msg_data.location = false;
		$('search_zip').value="Enter Zip Code";
		msg_data.radius = false;
		$('search_radius').value="1";
		msg_data.pagenum = 1;
		msg_data.sort_by = false;
		msg_data.sort_type = false;
		msg_data.cmd = 'gethomepagesearch';
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
	
//For Mayor's Priority
nycs.search.SearchPriority = 
	function(PriorityId){
		$('search_working').style.display="block";
		$('main_search_dropdown_tag').innerHTML = nycs.search.GetPriorityTag(PriorityId);
		var msg_data = nycs.search.msgdata;
		msg_data.keyword = PriorityId;
		msg_data.isPriority = true;
		msg_data.location = false;
		$('search_zip').value="Enter Zip Code";
		msg_data.radius = false;
		$('search_radius').value="1";
		msg_data.pagenum = 1;
		msg_data.sort_by = false;
		msg_data.sort_type = false;
		msg_data.cmd = 'gethomepagesearch';
		//alert(searchword); return false;
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
nycs.search.LocationBasic = 
	function(){
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		msg_data.cmd = 'gethomepagesearch';
		var zip = $('search_zip').value;
		if(!nycs.main.ValidateNumber(zip) || zip.length != 5){
			alert('Sorry,Invalid Zip Code Format');
			$('search_working').style.display="none";
		} else {
			msg_data.location = zip;
			msg_data.radius = $('search_radius').value;
			msg_data.pagenum = 1;
			msg_data.sort_by = false;
			msg_data.sort_type = false;
			new Ajax.Request(nycs.search.dataURL, {
				parameters: $H(msg_data).toQueryString(),
				evalScripts: true,
				onSuccess: function(transport) {
					try {
						var JSON = eval("("+transport.responseText+")");
						if (JSON.emsg) {
							alert(JSON.emsg);
							return false;
						}
						$('search_results').innerHTML = JSON.html;
						nycs.search.currentpage = 1;
						nycs.search.msgdata = msg_data;
					}catch(e) {
						alert("The server's response could not be understood.\nPlease try again.");
						return false;
					}
				},
				onComplete: function(){
					$('search_working').style.display="none";
				}			
			});
		}
	};
nycs.search.GetSearchInput = 
	function(){
		$('main_search_input').style.display = "block";
		$('main_search_dropdown').style.display = "none";
		$('keyword').focus();
	};
nycs.search.Pagination = 
	function(pagenum){
		//alert(pgnum);
		//return false;
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		//msg_data.cmd = 'gethomepagesearch';
		msg_data.pagenum = pagenum;
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = pagenum;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
nycs.search.SortBy = 
	function(sort,sort_type){
		//alert('Sort Column: '+sort+' in '+sort_type+ ' form.');
		//return false;
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		//msg_data.cmd = 'gethomepagesearch';
		msg_data.pagenum = 1;
		msg_data.sort_by = sort;
		msg_data.sort_type = sort_type;
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
/**********************************************************************************************************************/
//Advance Search Functions
/**********************************************************************************************************************/
nycs.search.SubmitAdvanceSearch = 
	function(){
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		if($('adv_category').value != '0'){
			msg_data.keyword = $('adv_category').value;
			msg_data.isPriority = true;
		} else if (!$('adv_keyword').value.blank()) {
			if(!nycs.main.ValidateString($('adv_keyword').value)){
				alert('Sorry, There are Invalid Characters in your Keyword Search');
				$('search_working').style.display="none";
				return ;
			}
			msg_data.keyword = $('adv_keyword').value;
			msg_data.isPriority = false;
		} else {
			msg_data.keyword = false;
			msg_data.isPriority = false;
		}
		if (!$('adv_zip').value.blank()){
			if($('adv_zip').value != 'Enter zip code'){
				if(!nycs.main.ValidateNumber($('adv_zip').value) || $('adv_zip').value.length != 5){
					alert('Sorry, The Zip Code you entered is invalid.');
					$('search_working').style.display="none";
					return ;
				}
				msg_data.location = $('adv_zip').value;
				msg_data.radius = $('adv_radius').value;
			} else {
				msg_data.location = false;
				msg_data.radius = false;
			}
		} else {
			msg_data.location = false;
			msg_data.radius = false;
		}
		if($('adv_borough').value != '0'){
			msg_data.borough = $('adv_borough').value;
		} else {
			msg_data.borough = false;
		}
		msg_data.pagenum = 1;
		msg_data.sort_by = false;
		msg_data.sort_type = false;
		msg_data.audiencetype = nycs.search.GetSelectorValues('adv_audiencetype_master','adv_audiencetype-');
		msg_data.interests = nycs.search.GetSelectorValues('adv_interest_master','adv_interest-');
		msg_data.skills = nycs.search.GetSelectorValues('adv_skill_master','adv_skill-');
		msg_data.OpportunityTypeID = 2;
		msg_data.cmd = 'getadvancesearch';
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return ;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return ;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
nycs.search.ToogleOpportunityType = 
	function(OpportunityTypeID){
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		msg_data.pagenum = 1;
		msg_data.sort_by = false;
		msg_data.sort_type = false;
		msg_data.OpportunityTypeID = OpportunityTypeID;
		msg_data.cmd = 'getadvancesearch';
		/*if($('adv_search_tab-1').style.color == "green"){
			$('adv_search_tab-1').style.color= "black";
		} else {
			$('adv_search_tab-2').style.color= "black";
		}*/
		$('adv_search_tab-'+OpportunityTypeID).style.color= "green";
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
nycs.search.Pagination_adv = 
	function(pagenum){
		//alert(pgnum);
		//return false;
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		msg_data.cmd = 'getadvancesearch';
		msg_data.pagenum = pagenum;
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = pagenum;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
nycs.search.SortBy_adv = 
	function(sort,sort_type){
		//alert('Sort Column: '+sort+' in '+sort_type+ ' form.');
		//return false;
		$('search_working').style.display="block";
		var msg_data = nycs.search.msgdata;
		msg_data.cmd = 'getadvancesearch';
		msg_data.pagenum = 1;
		msg_data.sort_by = sort;
		msg_data.sort_type = sort_type;
		new Ajax.Request(nycs.search.dataURL, {
			parameters: $H(msg_data).toQueryString(),
			evalScripts: true,
			onSuccess: function(transport) {
				try {
					var JSON = eval("("+transport.responseText+")");
					if (JSON.emsg) {
						alert(JSON.emsg);
						return false;
					}
					$('search_results').innerHTML = JSON.html;
					nycs.search.currentpage = 1;
					nycs.search.msgdata = msg_data;
				}catch(e) {
					alert("The server's response could not be understood.\nPlease try again.");
					return false;
				}
			},
			onComplete: function(){
				$('search_working').style.display="none";
			}			
		});
	};
/**********************************************************************************************************************/
//Advance Search DOM Functions
/**********************************************************************************************************************/	
//Gets the Values of the Multiple Selectors
nycs.search.GetSelectorValues = 
	function (selector_div,selector_type){
		var index,selval,tempnode1,tempnode2,id;
		var selector_id = new Array();
		tempnode1 = $(selector_div).getElementsByTagName('SELECT');
		for(var x = 0; x < tempnode1.length;x++){
			var div = tempnode1[x];
			id = div.id; 
			index = id.lastIndexOf('-');
			if (index > 0) {
				index = id.slice(index+1);
			}else {
				return false;
			}
			selval = $(selector_type+index).value;
			if(selval != '0'){
				selector_id.push(selval);
			}
		}
		if(selector_id.length < 1){
			return false;
		}else {
			return selector_id.toJSON();
		}
	};
	
	
nycs.search.AddAudienceType = 
	function (){
		var index,cloneNode,tempnode1,tempnode2;
		tempnode1 = $('adv_audiencetype_master').getElementsByTagName('A');
		index = tempnode1.length;
		index++;
		cloneDIV = $('advance_audiencetype_template').cloneNode(true);
		cloneDIV.setAttribute('id', 'advance_audiencetype-'+index);
		cloneDIV.style.display ='block';
		// modify the Text and link IDs
		tempnode2 = cloneDIV.getElementsByTagName('SELECT');
		tempnode2[0].setAttribute('id', 'adv_audiencetype-'+index);
		tempnode2[0].setAttribute('name', 'audiencetype-'+index);
		tempnode2 = cloneDIV.getElementsByTagName('A');
		tempnode2[0].setAttribute('id', 'lnk_remove_audiencetype-'+index);
		$('adv_audiencetype_master').appendChild(cloneDIV);
	};
nycs.search.RemoveAudienceType = 
	function (lnk){
		var index,cloneNode,tempnode1,tempnode2,id_num;
		var id = lnk.id;
		var index = id.lastIndexOf('-');
		if (index > 0) {
			index = id.slice(index+1);
		}else {
			return false;
		}
		$('adv_audiencetype_master').removeChild($('advance_audiencetype-'+index));
		tempnode1 = $('adv_audiencetype_master').getElementsByTagName('A');
		for(var x = parseInt(index); x < tempnode1.length+1;x++){
			id_num = x+1;
			cloneNode = $('advance_audiencetype-'+id_num);
			cloneNode.setAttribute('id', 'advance_audiencetype-'+x);
			// modify the Text and link IDs
			tempnode2 = cloneNode.getElementsByTagName('SELECT');
			tempnode2[0].setAttribute('id', 'adv_audiencetype-'+x);
			tempnode2[0].setAttribute('name', 'audiencetype-'+x);
			tempnode2 = cloneNode.getElementsByTagName('A');
			tempnode2[0].setAttribute('id', 'lnk_remove_audiencetype-'+x);
		}
	};
nycs.search.AddSkill = 
	function (){
		var index,cloneNode,tempnode1,tempnode2;
		tempnode1 = $('adv_skill_master').getElementsByTagName('A');
		index = tempnode1.length;
		index++;
		cloneDIV = $('advance_skill_template').cloneNode(true);
		cloneDIV.setAttribute('id', 'advance_skill-'+index);
		cloneDIV.style.display ='block';
		// modify the Text and link IDs
		tempnode2 = cloneDIV.getElementsByTagName('SELECT');
		tempnode2[0].setAttribute('id', 'adv_skill-'+index);
		tempnode2[0].setAttribute('name', 'skill-'+index);
		tempnode2 = cloneDIV.getElementsByTagName('A');
		tempnode2[0].setAttribute('id', 'lnk_remove_skill-'+index);
		$('adv_skill_master').appendChild(cloneDIV);
	};
nycs.search.RemoveSkill = 
	function (lnk){
		var index,cloneNode,tempnode1,tempnode2,id_num;
		var id = lnk.id;
		var index = id.lastIndexOf('-');
		if (index > 0) {
			index = id.slice(index+1);
		}else {
			return false;
		}
		$('adv_skill_master').removeChild($('advance_skill-'+index));
		tempnode1 = $('adv_skill_master').getElementsByTagName('A');
		for(var x = parseInt(index); x < tempnode1.length+1;x++){
			id_num = x+1;
			cloneNode = $('advance_skill-'+id_num);
			cloneNode.setAttribute('id', 'advance_skill-'+x);
			// modify the Text and link IDs
			tempnode2 = cloneNode.getElementsByTagName('SELECT');
			tempnode2[0].setAttribute('id', 'adv_skill-'+x);
			tempnode2[0].setAttribute('name', 'skill-'+x);
			tempnode2 = cloneNode.getElementsByTagName('A');
			tempnode2[0].setAttribute('id', 'lnk_remove_skill-'+x);
		}
	};
nycs.search.AddInterest = 
	function (){
		var index,cloneNode,tempnode1,tempnode2;
		tempnode1 = $('adv_interest_master').getElementsByTagName('A');
		index = tempnode1.length;
		index++;
		cloneDIV = $('advance_interest_template').cloneNode(true);
		cloneDIV.setAttribute('id', 'advance_interest-'+index);
		cloneDIV.style.display ='block';
		// modify the Text and link IDs
		tempnode2 = cloneDIV.getElementsByTagName('SELECT');
		tempnode2[0].setAttribute('id', 'adv_interest-'+index);
		tempnode2[0].setAttribute('name', 'interest-'+index);
		tempnode2 = cloneDIV.getElementsByTagName('A');
		tempnode2[0].setAttribute('id', 'lnk_remove_interest-'+index);
		$('adv_interest_master').appendChild(cloneDIV);
	};
nycs.search.RemoveInterest = 
	function (lnk){
		var index,cloneNode,tempnode1,tempnode2,id_num;
		var id = lnk.id;
		var index = id.lastIndexOf('-');
		if (index > 0) {
			index = id.slice(index+1);
		} else {
			return false;
		}
		$('adv_interest_master').removeChild($('advance_interest-'+index));
		tempnode1 = $('adv_interest_master').getElementsByTagName('A');
		for(var x = parseInt(index); x < tempnode1.length+1;x++){
			id_num = x+1;
			cloneNode = $('advance_interest-'+id_num);
			cloneNode.setAttribute('id', 'advance_interest-'+x);
			// modify the Text and link IDs
			tempnode2 = cloneNode.getElementsByTagName('SELECT');
			tempnode2[0].setAttribute('id', 'adv_interest-'+x);
			tempnode2[0].setAttribute('name', 'interest-'+x);
			tempnode2 = cloneNode.getElementsByTagName('A');
			tempnode2[0].setAttribute('id', 'lnk_remove_interest-'+x);
		}
	};
/**********************************************************************************************************************/
//Search Widget Functions
/**********************************************************************************************************************/	
nycs.search.SearchWidgetEmbed = 
	function(){
		var category = $('sw_category').value;
		var keyword = $('sw_keyword').value;
		var zip = $('sw_zip').value;
		var radius = $('sw_radius').value;
		var url = "http://localhost/nyc/adv_search/adv_search.php?cmd=widget&category="+category+"&keyword="+keyword+"&zip="+zip+"&radius="+radius;
		nycs.main.HtmlPopUp(url);
	};
nycs.search.SearchFromWidget = 
	function(){
		alert('Search Widget!');
		/*
		var category = $('sw_category').value;
		var keyword = $('sw_keyword').value;
		var zip = $('sw_zip').value;
		var radius = $('sw_radius').value;
		var url = "http://localhost/nyc/adv_search/adv_search.php?cmd=widget&category="+category+"&keyword="+keyword+"&zip="+zip+"&radius="+radius;
		nycs.main.HtmlPopUp(url);*/
	};
/**********************************************************************************************************************/
// Default Functions
/**********************************************************************************************************************/		
nycs.search.ClearSearchZip = 
	function(){
		$('search_zip').value = '';
	};
	
nycs.search.CheckForBorough = 
	function(borough){
		borough = borough.toLowerCase();
		switch(borough){
			case'bronx':
				return 3033;
			break;
			case'brooklyn':
				return 3034;
			break;
			case'manhattan':
				return 3035;
			break;
			case'queens':
				return 3036;
			break;
			case'staten island':
				return 3037;
			break;
			default:
				return false;
			break;
		}
	};
nycs.search.GetPriorityTag = 
	function(tagid){
		switch(tagid){
			case 10320695623:
				return 'Strengthening Communities';
			break;
			case 10320698711:
				return 'Helping Neighbors In Need';
			break;
			case 10320698895:
				return 'Education';
			break;
			case 10320699102:
				return 'Environment';
			break;
			case 10320699209:
				return 'Health';
			break;
			case 10320699309:
				return 'Emergency Preparedness';
			break;
			}
	};
nycs.search.getQuerystring = 
	function (key, default_){
		if (default_==null) default_="";
		key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
		var qs = regex.exec(window.location.href);
		if(qs == null)
			return default_;
		else
			return qs[1];
	}; 
