
	var __locale = '';

	var Search = 
	{
		__page_num: 1,
		__blocked: false,
		
		addPlugin: function()
		{
			 if (window.external && ("AddSearchProvider" in window.external)) {
			   // Firefox 2 and IE 7, OpenSearch
			   window.external.AddSearchProvider("http://www.twitjobsearch.com/SearchPlugin.xml");
			 } 
			 else 
			 {
			   // No search engine support (IE 6, Opera, etc).
			   alert("No search engine support");
			 }
		},
		
		toogleAdvanced: function(elem)
		{
			if(elem.title == 'show')
			{
				jQuery('#advanced').slideDown('slow',function(){elem.innerHTML = 'advanced ▲';});
				jQuery(elem).css('color','#333');
				elem.title = 'hide';
			}
			else
			{
				jQuery('#advanced').slideUp('slow',function(){
					jQuery(elem).css('color','#fff');
					elem.title = 'show';
					elem.innerHTML = 'advanced ▼';
				});
				
			}
		},
		
		selectSearch: function()
		{
			if(jQuery('#search_bar').val() == ''){jQuery('#search_bar').select();}
			tmp = new Image()
			tmp.src = "/images/searching.gif";
			tmp.src = "/images/results_loading.gif";
			
			jQuery('#user_name').keyup(function(){		
				jQuery('#search_bar').val(Search.getAdvancedValues());
			});
			
			jQuery('#all_words').keyup(function(){
				jQuery('#search_bar').val(Search.getAdvancedValues());
			});
			
			jQuery('#negative').keyup(function(){	
				jQuery('#search_bar').val(Search.getAdvancedValues());
			});
			
			jQuery('#exact_phrase').keyup(function(){
				jQuery('#search_bar').val(Search.getAdvancedValues());
			});
			
			jQuery('.or').keyup(function(){
				jQuery('#search_bar').val(Search.getAdvancedValues());
			});
		},
		
		getNegativeValues: function()
		{
			if(jQuery('#negative').val() == '') return '';
			
			window.quote = false;
			var arr = jQuery('#negative').val().split(' ');
			var string = '';
			for(var i =0; i<arr.length; i++)
			{
				if(arr[i].indexOf('"') != -1) 
				{
					if(!window.quote) 
					{
						string += ' -'+arr[i];
						window.quote = true;
					}
					else
					{
						string += ' '+arr[i];
						window.quote = false;
					}
				}
				else
				{
					string += ' -'+arr[i];
				}
			}
			
			return jQuery.trim(string);
		},
		
		getOrValues: function()
		{
			var or1 = jQuery('#OR1').val();
			var or2 = jQuery('#OR2').val();
			var or3 = jQuery('#OR3').val();
			
			if(or1 != '' && or2 != '' && or3 != '')
			{
				return or1+' OR '+or2+' OR '+or3;
			}
			else if(or1 != '' && or2 != '' && or3 == '')
			{
				return or1+' OR '+or2;
			}
			else if(or1 != '' && or2 == '' && or3 != '')
			{
				return or1+' OR '+or3;
			}
			else if(or1 == '' && or2 != '' && or3 != '')
			{
				return or2+' OR '+or3;
			}
			else if(or1 != '' && or2 == '' && or3 == '')
			{
				return or1;
			}
			else if(or1 == '' && or2 != '' && or3 == '')
			{
				return or2;
			}
			else if(or1 == '' && or2 == '' && or3 != '')
			{
				return or3;
			}
			else
			{
				return '';
			}
		},
			
		getAdvancedValues: function()
		{
			if(jQuery('#user_name').val() != '') var user = ' +twitter_account_name:'+jQuery('#user_name').val();
			else var user = '';
			
			if(jQuery('#exact_phrase').val() != '') var e = ' "'+jQuery.trim(jQuery('#exact_phrase').val().replace(/"/g,''))+'"';
			else var e = '';
			
			if(jQuery('#all_words').val()) var k = ' '+jQuery('#all_words').val();
			else k = '';
			
			var negative = Search.getNegativeValues();
			if(negative != '') negative = ' '+negative;
			else negative = '';
			
			var or = Search.getOrValues();
			if(or != '') or = ' '+or;
			else or = '';
			
			return jQuery.trim(k+e+or+negative+user);
		},
		
		doSubmit: function()
		{
			$_elem('search_button').style.background = "#33ccff url('/images/searching.gif') no-repeat center center";
			$_elem('search_button').value = '';
			$_elem('search_button').disabled = true;
		},
		
		toogleLocations: function()
		{	 
			if($_elem('locations_list').style.display == '' || $_elem('locations_list').style.display == 'none')
			{
				$_elem('locations_list').style.display = 'block';
				$_elem('location_triangle').innerHTML = '▲';
			}
			else
			{
				$_elem('locations_list').style.display = 'none';
				$_elem('location_triangle').innerHTML = '▼';
				$_elem('search_bar').select();
			}
		},
		
		changeLocation: function(elem)
		{
			jQuery.post('/ajax/set-search-location','country_code='+elem.title);
			
			var current_country 		= $_elem('current_location').innerHTML;
			var current_country_code 	= $_elem('current_location').title;

			$_elem('current_location').innerHTML = elem.innerHTML;
			$_elem('current_location').title = elem.title;
			
			elem.innerHTML 	= current_country;
			elem.title		= current_country_code;
			;
			this.toogleLocations();
		},
		
		showNextResults: function(query,options)
		{	
			var refines = '';
			var opt = options || {};
			opt.job_type 	= opt.job_type || false;
			opt.job_title 	= opt.job_title || false;
			opt.skills	 	= opt.skills || false;
			opt.tweeted_on 	= opt.tweeted_on || false;
			opt.salary 		= opt.salary || false;
			opt.sort 		= opt.sort || false;
			opt.country 	= opt.country || false;
			opt.city 		= opt.city || false;
			opt.tweet_frequency = opt.tweet_frequency || false;
			opt.type 		= opt.type || false;
			
			if(opt.job_type) 		refines = '&job_type='+opt.job_type;
			if(opt.job_title) 		refines += '&job_title='+opt.job_title;
			if(opt.skills) 			refines += '&skills='+opt.skills;
			if(opt.tweeted_on) 		refines += '&tweeted_on='+opt.tweeted_on;
			if(opt.salary) 			refines += '&salary='+opt.salary;
			if(opt.sort) 			refines += '&sort='+opt.sort;
			if(opt.country) 		refines += '&country='+opt.country;
			if(opt.city) 			refines += '&city='+opt.city;
			if(opt.tweet_frequency) refines += '&tweet_frequency='+opt.tweet_frequency;
			if(opt.type) 			refines += '&type='+opt.type;
			
			
			if(!this.__blocked)
			{
				$_elem('ajax_loader').innerHTML = '<img src="/images/results_loading.gif" alt="loading" /><div class="clear"></div>';
				jQuery.post(__locale+'/ajax/get-next-results','q='+query+refines+'&page='+this.__page_num,Search.handleResults,'json');
				this.__page_num++;
			}
			this.__blocked = true;
			
		},
		
		handleResults: function(response)
		{
			if((response.numFound-Search.__page_num*10)>-9)
			{
				for(var i=0; i<10; i++)
				{
					if(response.results['body'][i] != undefined) Search.addDiv('results',response.results['body'][i],response.results['id'][i],response.results['account'][i]);
				}
				
				$_elem('ajax_loader').innerHTML = '';
				
				Search.__blocked = false;
				tooltip();
				pageTracker._trackPageview();
			}
			else
			{
				Search.__blocked = true;
				Search.__page_num = 1;
				Search.addDiv('results','<div class="clear"></div><h2>No more results</h2>','no_results','empty');
				$_elem('ajax_loader').innerHTML = '';
			}	
			
			$_elem('master_footer').style.bottom = '0';
			$_elem('master_footer').style.height = '39px';
		},
		
		addDiv: function(target,html,id,account) {
			  var ni = document.getElementById(target);
			  var newdiv = document.createElement('div');
			  newdiv.setAttribute('class','result '+account);
			  newdiv.setAttribute('className','result '+account);
			  newdiv.setAttribute('id','id_'+id);
			  newdiv.innerHTML = html;
			  ni.appendChild(newdiv);
		}
	}
	
	var Refine = {
			
		setCounter: function(sub)
		{
			var current = jQuery('#numFound').html();
			current = parseInt(current);
			
			jQuery('#numFound').html(current-sub);
		},
			
		notJob: function(id)
		{
			this.setCounter(1);
			jQuery.post('/ajax/not-a-job','id='+id);
			jQuery('#id_'+id).fadeOut("slow");
		},
		
		notForMe: function(id)
		{
			this.setCounter(1);
			jQuery.post('/ajax/not-for-me','id='+id);
			jQuery('#id_'+id).fadeOut("slow");
		},
		
		blockAccount: function(account)
		{
			jQuery.post('/ajax/block-account','account='+account);
			jQuery('.'+account).fadeOut("slow");
		},
		
		doRef: function(url)
		{
			location.href=url;
		}
			
	}
	
	function CodeGenerator(width,height,location,zoom)
	{
		return '<!-- BEGIN TwitJobSearch Job Map Widget -->\n'+
		'<script type="text/javascript" src="http://www.twitjobsearch.com/widgets/tjsMap.js"></script>'+
		'\n<script type="text/javascript">'+
		'\ntjsMap.settings({'+
			'\nwidth:'+width+','+
			'\nheight:'+height+','+
			'\nlocation: \''+location+'\','+
			'\nzoom: '+zoom+
		'\n});\n\n'+
					
		'tjsMap.display();\n'+
	'</script>\n'+
	'<!-- END TwitJobSearch Job Map Widget -->'
	}
	
	var msg = {
			
			error: function(txt)
			{
				jQuery(".success").remove();
				jQuery(".error").remove();
				jQuery(".loader").remove();
				
				var msg = '<div id="msg_cont"><div class="error">'+txt+'</div></div>';
				jQuery("body").append(msg);
				
				setTimeout(function() {jQuery(".error").fadeOut("slow");},4000);
			},

			success: function(txt)
			{
				jQuery(".success").remove();
				jQuery(".error").remove();
				jQuery(".loader").remove();
				
				var msg = '<div id="msg_cont"><div class="success">'+txt+'</div></div>';
				jQuery("body").append(msg);
				
				setTimeout(function() {jQuery(".success").fadeOut("slow");},2000);
			},
			
			loader: function(txt)
			{
				jQuery(".success").remove();
				jQuery(".error").remove();
				
				var msg = '<div id="msg_cont"><div class="loader">'+txt+'</div></div>';
				jQuery("body").append(msg);
			},
			
			clear: function()
			{
				jQuery("#msg_cont").fadeOut("slow",function(){
					jQuery(".success").remove();
					jQuery(".error").remove();
					jQuery(".loader").remove();
					jQuery("#msg_cont").remove();
				});
			}
				
		}
	
	var box = {
			
		load: function(elem)
		{
			var box = '<textarea id="box__text" onkeyup="box.count(this)" style="margin-top: 3px; width:300px; border:1px solid #666; height: 150px;">'+elem.title+'</textarea><br /><button onclick="box.send()" class="button">ReTweet</button><span id="count" style="color: #333; font-weight: bold; font-size: 15px; margin-left: 10px;">'+(140-elem.title.length)+'</span>';
			
				SimpleBox.open(box,{
					bodyCss:{'padding':'20px','color':'#333','background':'#fff'},
					showCaption:true,
					captionText:elem.rel,
					captionCss:{'color':'#fff'},
					closeImageCss:{'margin':'5px 5px 0 0','top':'6px','right':'-24px','behavior':'url(/css/iepngfix.htc)'},
					bodyWebKitRoundCorners: 5,
					directInput: true,
					showCloseImage:true,
					defaultCloseImageSrc: '/js/SimpleBox/closeButtonRed.png',
					hoverCloseImageSrc: '/js/SimpleBox/closeButtonRedActive.png'
				});
			
			if(140-elem.title.length < 0)
				jQuery("#count").css('color','red');
			else
				jQuery("#count").css('color','#333333');
		},
		
		count: function(elem)
		{
			jQuery("#count").html(140-elem.value.length);
			if(140-elem.value.length < 0)
				jQuery("#count").css('color','red');
			else
				jQuery("#count").css('color','#333333');
		},
		
		send: function()
		{
			jQuery.post("/user/update-status","status="+jQuery("#box__text").val(),box.responseHandler,"json");
			SimpleBox.close();
			msg.loader("Sending request...");
		},
		
		close: function()
		{
			jQuery("#msg_cont").fadeOut("slow");
		},
		
		responseHandler: function(json)
		{
			msg.success('Success !!!');
		}
			
	}
	
	function isUser(job_id,action,result_type,display_type)
	{
		if(!window.user)
		{
			if(!result_type) top.location = '/user/login/?j='+job_id+'&a='+action;
			else top.location = '/user/login/?j='+job_id+'&a='+action+'&r='+result_type+'&d='+display_type;
			return 0;
		}
		else
			return 1;
	}
	
	var iCan = {
			
		__processing: false,
			
		display: function(elem,id,tw,is_prv)
		{
			var box='<div id="icanbox"><div>';
			if(is_prv == 0 || is_prv == false) box += '<a id="public" style="border-right: 1px dashed #c0c0c0" onclick="SimpleBox.close(function(param){iCan.apply(param)},{id:\''+id+'\',tw:'+tw+',type:\'public\',is_prv:\''+is_prv+'\'})" href="javascript:void(0)"><img src="/images/menu/public.png" alt="Public" /> Public <span class="small">Let the world know you can do this job</span></a>';
			box += '<a id="private" onclick="SimpleBox.close(function(param){iCan.apply(param)},{id:\''+id+'\',tw:'+tw+',type:\'private\',is_prv:\''+is_prv+'\'})" href="javascript:void(0)"><img src="/images/menu/private.png" alt="Private" /> Private <span class="small">Keep it between you and the recruiter</span></a>';
			box += '</div><div class="clear"></div></div>';
		
			SimpleBox.open(box,{
				bodyCss:{'padding':'1px','color':'#333','background':'#fff'},
				showCaption:true,
				captionText:elem.title,
				captionCss:{'color':'#fff'},
				closeImageCss:{'margin':'5px 5px 0 0','top':'6px','right':'-24px','behavior':'url(/css/iepngfix.htc)'},
				bodyWebKitRoundCorners: 5,
				directInput: true,
				showCloseImage:true,
				defaultCloseImageSrc: '/js/SimpleBox/closeButtonRed.png',
				hoverCloseImageSrc: '/js/SimpleBox/closeButtonRedActive.png'
			});
		},
		
		apply: function(param)
		{			
			if(param.tw)
				result_type = 'tw';
			else
				result_type = 'st';
			
			if(!isUser(param.id,'i',result_type,param.type)) return 0;
			
			data = 'id='+param.id;
			data += '&result_type='+result_type;
			data += '&display_type='+param.type;
			data += '&is_prv='+param.is_prv;
	
			if(!iCan.__processing) 
			{
				iCan.__processing = true;
				msg.loader('Sending request...');
				jQuery.post('/user/i-can-do-that',data,iCan.applyHandler,'json');
			}
		},
		
		applyHandler: function(json)
		{
			if(json.result)
			{
				msg.success('Success!');
				
				l = jQuery('#candidates_'+json.job_id+' > li > a > span');
				jQuery(l).html((parseInt(jQuery(l).html())+1)+'');
				
				l = jQuery('.applied_jobs_count');
				jQuery(l).html((parseInt(jQuery(l).html())+1)+'');
				
				l = jQuery('.aps_left');
				jQuery(l).html((parseInt(jQuery(l).html())-1)+'');
				
				jQuery('#_'+json.user_id).fadeIn('slow');
				
				jQuery('#candidates_'+json.job_id).append('<li style="display: none;" class="profile_image"><img src="'+json.user_img+'" alt="Me" /></li>');
				jQuery('#candidates_'+json.job_id+' > li.profile_image').fadeIn('slow');
				
				jQuery('#ican_'+json.job_id+' > img').attr('src','/images/menu/unapply_off.png');
				jQuery('#ican_'+json.job_id).attr('title','I can\'t do that');
				jQuery('#ican_'+json.job_id).attr('onclick','');
				jQuery('#ican_'+json.job_id).unbind('click');
				jQuery('#ican_'+json.job_id).bind('click',function(){
					iCan.unapply(json.job_id, json.job_type, json.is_prv);
				});				
			}
			else
				msg.error(json.error);
			
			iCan.__processing = false;
		},
		
		unapply: function(id,job_type,is_prv)
		{
			if(job_type)
				job_type = 'tw';
			else
				job_type = 'st';
			
			var data = 'id='+id+'&result_type='+job_type+'&is_prv='+is_prv;

			if(!iCan.__processing) 
			{
				iCan.__processing = true;
				msg.loader("Sending request...");
				jQuery.post('/user/remove-i-can-do-that',data,iCan.unapplyHanlder,'json');
			}
		},
		
		unapplyHanlder: function(json)
		{
			if(json.result)
			{
				msg.success('Success!');
				l = jQuery('#candidates_'+json.job_id+' > li > a > span');
				jQuery(l).html((parseInt(jQuery(l).html())-1)+'');
				
				l = jQuery('.applied_jobs_count');
				jQuery(l).html((parseInt(jQuery(l).html())-1)+'');
				
				l = jQuery('.aps_left');
				num = (parseInt(jQuery(l).html())+1);
				if(num > 5) num = 5;
				jQuery(l).html(num+'');
				
				jQuery('#candidates_'+json.job_id+' > li.profile_image').fadeOut('slow',function(){
					jQuery(this).remove();
				});
				
				jQuery('#_'+json.user_id).fadeOut('slow');

				jQuery('#ican_'+json.job_id+' > img').attr('src','/images/menu/apply_off.png');
				jQuery('#ican_'+json.job_id).attr('title','I can do that');
				jQuery('#ican_'+json.job_id).attr('onclick','');
				jQuery('#ican_'+json.job_id).unbind('click');
				jQuery('#ican_'+json.job_id).bind('click',function(){
					iCan.display(this,json.job_id,json.tw,json.is_prv);
				});
			}
			else
				msg.error(json.error);
			
			iCan.__processing = false;
		}
		
	}
	
	function help(width)
	{
		SimpleBox.open('#help',{
			bodyCss:{'width':width,'color':'#333','background':'#fff','padding':'20px'},
			showCaption:true,
			captionText:jQuery('#help').attr('title'),
			captionCss:{'color':'#fff'},
			closeImageCss:{'margin':'5px 5px 0 0','top':'5px','right':'-25px','behavior':'url(/css/iepngfix.htc)'},
			bodyWebKitRoundCorners:5,
			showCloseImage:true,
			defaultCloseImageSrc: '/js/SimpleBox/closeButtonRed.png',
			hoverCloseImageSrc: '/js/SimpleBox/closeButtonRedActive.png'
		});
	}
	
	function retweet(elem)
	{
		var data = "status="+elem.title;
		box.load(elem);
	}

	function follow(user)
	{
		jQuery.post("/user/follow","follower="+user,responseHandler,"json");
		msg.loader("Sending request...");
		window.user = user;
	}

	function responseHandler(json)
	{
		if(json.result != "false")
		{
			msg.success("You are now following "+window.user);
		}
		else
			msg.error(json.error);
	}

	function save(elem,id)
	{
		if(!isUser(id,'s')) return 0;
		
		jQueryelem = jQuery(elem);

		jQueryelem.attr('onclick','');
		jQueryelem.unbind('click');
		jQueryelem.bind('click',function(){unsave(this,id)});
		
		jQuery.post("/user/save-job","job_id="+id);
		
		jQueryimg = jQueryelem.children('img');
		jQueryimg.attr('src','/images/menu/saved-job_off.png');
		jQueryimg.attr('alt','unsave');
		jQueryimg.attr('title','unsave');
		
		jQuerysaved_count = jQuery('.saved_jobs_count');
		
		counter = parseInt(jQuerysaved_count.html());
		counter++;
		jQuerysaved_count.html(counter);
	}

	function unsave(elem,id)
	{
		jQueryelem = jQuery(elem);
		
		jQueryelem.attr('onclick','');
		jQueryelem.unbind('click');
		jQueryelem.bind('click',function(){save(this,id)});
		
		jQuery.post("/user/unsave-job","job_id="+id);

		jQueryimg = jQuery(elem).children('img');
		
		jQueryimg.attr('src','/images/menu/save-job_off.png');
		jQueryimg.attr('alt','save');
		jQueryimg.attr('title','save');
		
		jQuerysaved_count = jQuery('.saved_jobs_count');
		
		counter = parseInt(jQuerysaved_count.html());
		counter--;
		if(counter < 1)
			jQuerysaved_count.html('0');
		else
			jQuerysaved_count.html(counter);
	}

	function actionsMenu()
	{
		jQuery('.actions_cont').live('click',function(){
			
			if(window.prevActionsId && window.prevActionsId != this.id)
			{
				jQuery('#'+window.prevActionsId+' > .actions').attr('title','show');
				jQuery('#'+window.prevActionsId+' > ul').slideUp('fast');
				jQuery('#'+window.prevActionsId+' > .actions').html('options▼');
			}
			window.prevActionsId = this.id;
			
			
			if(jQuery('#'+this.id+' > .actions').attr('title') == 'show')
			{
				jQuery('#'+this.id+' > .actions').attr('title','hide');
				jQuery('#'+this.id+' > ul').slideDown('fast',function(){
					/* -- INSERTING FB LIKE BUTTON -- */
					if(jQuery(this).children('.like-container').html() == ''){
						var url = jQuery(this).parent().parent().find('.long').attr('href');
						jQuery(this).children('.like-container').html('<fb:like href="http://www.twitjobsearch.com'+url+'" layout="button_count" show_faces="false" width="49" action="like" font="arial" colorscheme="light"></fb:like>');
						fbAsyncInit();
					}
					/* -- */
				});				
				jQuery('#'+this.id+' > .actions').html('options▲');
			}
			else
			{
				jQuery('#'+this.id+' > .actions').attr('title','show');
				jQuery('#'+this.id+' > ul').slideUp('fast');
				jQuery('#'+this.id+' > .actions').html('options▼');
			}
		});
	}