var ajfile = '/include/aj.php';
var _sDelimiter = '||:|:||';
var _bIsIE7 = false;

$(document).ready( function(){
	WINDOW_HEIGHT = $(window).height();
	WINDOW_WIDTH = $(window).width();

	if( $('#home-form').length > 0)							_xHomepage.init();	
	if( $('#search-form').length > 0)						_xSearchPage.init();
	if( $('#create-account').length > 0)	 				_xAccountPage.init();	
	if( $('#employer-post-creation-holder').length > 0)		_xPostJobPage.init();
	if( $('#create-job-seeker-resume').length > 0)		_xResumePage.init();
	if( $('#manage-results-heading').length > 0)		_xManagePage.init();
	if( $('#resume-results-heading').length > 0)		_xManageResumesPage.init();
	if( $('#search-resumes-form').length > 0)	_xSearchResumesPage.init();	
	if( $('#forgot-pass-form').length > 0)	_xForgotPassPage.init();	
	if( $('#forgot-pass-form-update').length > 0)	_xForgotPassPage.init();	
	
	 
	if($.browser.msie)
		if($.browser.version == '7.0'){
			_bIsIE7 = true;
		}
	
	$('.ul-rows ul').each( function() { 
		if(_bIsIE7)
			$(this).css('height',$(this).height() + 10);
		else
			$(this).css('height',$(this).height());
	});
	
	_xAllPages.init();
 
});

$(window).resize( function(){ 
	WINDOW_HEIGHT = $(window).height();
	WINDOW_WIDTH = $(window).width();
	_xOverlay.resize();
} );

$(window).scroll( function(){
	WINDOW_HEIGHT = $(window).height();
	WINDOW_WIDTH = $(window).width();
	_xOverlay.resize()
});


_xOverlay = {
	
	_nOpacity : 0.7,
	_bShowing : false,
	showTakeover : function(p_sStr){
		
		$(document).bind('keydown', 'return',function (evt){ _xOverlay.closeTakeover(); return false; }); 

		this._bShowing = true;
		$('#overlayData').stop().show().css('opacity',0);
		$('#overlay').empty().stop().css('top',0).css('width',WINDOW_WIDTH).css('height',$(document).height()).css('opacity','0');
		$('#overlay').fadeIn("fast").animate( { opacity:this._nOpacity, width:WINDOW_WIDTH,height:$(document).height(), top:0 , left:0} , 200, '', function(){ _xOverlay.centerContent(); });
		
		if(p_sStr)
			this.showMessage(p_sStr);
	},
	
	resize : function(){
		if(this._bShowing){
			$('#overlay').stop().animate( { opacity:this._nOpacity, width:WINDOW_WIDTH,height:$(document).height(), top:0,left:0} , 0 );
			_xOverlay.centerContent();
		}
	},
	centerContent : function(){
		
		var l_nWidth = $('#overlayData .overlay-content-holder').width();
		var l_nHeight = $('#overlayData .overlay-content-holder').height();
		var l_nTop = parseInt($(window).scrollTop() + ( $(window).height() / 2 ) - (l_nHeight /2 )) + "px";
		var l_nLeft = parseInt(( $(window).width() / 2 ) - (l_nWidth /2 ))+ "px";
		 
		$('#overlayData').animate( { opacity:1, width:l_nWidth+50,height:l_nHeight+50, top:l_nTop , left:l_nLeft} , 100 );
				 
	},
	
	closeTakeover : function(){
		$(document).unbind('keydown', 'return');
		this._bShowing = false;
		$('#overlayData').stop().fadeOut("fast" , function(){ $('#overlayData').html(''); });
		$('#overlay').stop().fadeOut("fast");
	},
	
	showMessage : function(p_sStr){
		$('#overlayData').stop().html('<div class=\"overlay-content-holder\">'+p_sStr+'<a href=\"javascript:void(0)\" onmousedown=\"_xOverlay.closeTakeover()\" class=\"overlay-close-btn\">close</a></div>');				
	},
	
	blockLoadingArea : function(p_sDiv){
		var l_sDivScreen = p_sDiv+'-screen';
		$('#'+p_sDiv).after('<div id="'+l_sDivScreen+'" class="loading-overlay">&nbsp;</div>');
		var l_xBounds = $('#'+p_sDiv).position();
		$('#'+l_sDivScreen).css('top',l_xBounds['top']);
		$('#'+l_sDivScreen).css('opacity',0.50).css('width',$('#'+p_sDiv).width()).css('height',$('#'+p_sDiv).height());
	},
	
	closeLoadingArea : function(p_sDiv){
		var l_sDivScreen = p_sDiv+'-screen';
		$('#'+l_sDivScreen).remove();
	}
 
} 


_xPaypal = {
	
	redirect : function(){
	 	var l_nWidth = $('#paypal-loading').width();
		$('#paypal-loading .loading-bar').animate( { width: (l_nWidth-2)}, 3000, function(){
			 _xPaypal.processForm();
		 });
	},
	
	processForm : function(){
		$('#paypalform').submit();
	}

}



_xHomepage = {
	
	init : function(){
		$('#home-form').submit( function(){ 
			return _xHomepage.validateForm();
		});
		
		$('#home-form .link-submit').click( function(){
			$('#home-form').submit();
			return false;
		});
		
		_xUtils.buildSort('hotjobs-heading',_xHotJobs);
		 
	},
	
	validateForm : function (){
		if(_xUtils.checkEmpty($('#home-form #keywords').val()) && _xUtils.checkEmpty($('#home-form #location').val())){
			_xOverlay.showTakeover('Please enter a keyword or location');
			return false;
		}
		return true;
	}
}


_xAllPages = {
	
	init : function(){
		
		$('.main-nav li ul').hide();
		$('.main-nav li').each(function(){
			//$(this).find('ul').width($(this).find('.topitem').width()-2);
			//$(this).find('ul li').width($(this).find('.topitem').width()-2);
			$(this).hover( function(){ $(this).find('ul').show(); },  function(){ $(this).find('ul').hide(); } );
		});
		
		
		
		$('#login-form').submit( function(){ 
			return _xAccount.validateLoginForm();
		});
		$('#login-form .link-signin').click( function(){
			return _xAccount.validateLoginForm();
		});
		
		$('.a-logout').click( function(){
			_xAllPages.logout();
			return false;
		});
		
			
		$('form select').each( function(){			  
			$(this).val($(this).attr('rel'));
		});
		
		$('form input,form textarea,form select').focus( function(){			  
					$('form input,form textarea,form select').removeClass('field-focus');
					$(this).addClass('field-focus');
		});
		
		
		$('#create-employer_post input,#create-employer_post textarea,#create-employer_post select').blur( function(){			  
				$(this).removeClass('field-focus');
		});
		
		
		$('.clogin').click( function(){	
			if( $('#footer').attr('rel') != 1){
				_xOverlay.showTakeover('Please login first');
				return false;
			}
			if( $(this).hasClass('applynow') ){
				
				if($(this).hasClass('nores')){
					_xOverlay.showTakeover('You must create your resume first: <a href="/job-seekers/resume/">Build Resume</a>');
					return false;
				}else{
					_xOverlay.showTakeover();
					$('#overlayData').load('/template/job/_sendResume.php', { p_nid:$(this).attr('rel') }, function(){});
					return false;
				}
			}
			
		});
		
		_xUtils.bindNewWindow();
		
		$('.print').click( function(){
			window.print();
			return false;
									});
		 
	},
	
	clearLogin : function(){
		$('#login-form input').val('');
	},	
	
	showAccountCreated : function(){
		$('#account-page-options-holder').before('<h2 class="h2-account-created">Account Created!</h2>');
	},
	
	logout : function(){
		
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=logout",
		  success: function(msg){
			 eval(msg);
			 if( $('#account-page-options-holder').length)
				document.location.reload();
		  }
		});
		
		return false;
	},
	
	showLoggedIn : function(){
		this.clearLogin();
		$('#login-error').hide('fast').html('');
		$('#login-box-holder').hide();
		$('#login-active-box-holder').show();
		$('.functional-nav').addClass('signed-in');
		$('#account-creation-holder').hide('fast');	
		
		if( $('#account-page-options-holder').length)
				document.location.reload();
				
	},
	
	
	validateForm : function (){
		if(_xUtils.checkEmpty($('#home-form #keywords').val()) && _xUtils.checkEmpty($('#home-form #location').val())){
			_xOverlay.showTakeover('Please enter a keyword or location');
			return false;
		}
		return true;
	}
	
}





_xSearchPage = {
	
	init : function(){
		
		if($('#search-form').length){
			
			$('#search-form').submit( function(){ 
				_xSearchJobs.validateForm();
				return false;
			});
			$('#search-form .link-search').click( function(){
				_xSearchJobs.validateForm();
				return false;									 
			});
			
			
			_xUtils.buildSort('hotjobs-heading',_xHotJobs);
			_xUtils.buildSort('search-results-heading',_xSearchJobs);
			//$('#hotjobs-heading .c4 a').click();
		}
	}

}


_xManagePage = {
	
	init : function(){
		_xUtils.buildSort('manage-results-heading',_xManageJobs);
	}

}


_xManageResumesPage = {
	
	init : function(){
		_xUtils.buildSort('resume-results-heading',_xManageResume);
	}
}

_xForgotPassPage = {
	
	l_bValid : false,
	init : function(){
		
		$('#forgot-pass-form').submit( function(){ 
			_xForgotPassPage.validateForm();
			return false;
		});
		$('#forgot-pass-form .link-search').click( function(){
			_xForgotPassPage.validateForm();
			return false;									 
		});
		
		$('#forgot-pass-form-update').submit( function(){ 
			_xForgotPassPage.validateFormUpdate();
			return false;
		});
		$('#forgot-pass-form-update .link-search').click( function(){
			_xForgotPassPage.validateFormUpdate();
			return false;									 
		});
		
		
		
		
	},
	
	validateForm : function(){
		
		this.l_bValid = true;
		var l_sEmail = $('#forgot-pass-form #email').val();
		 
		if(_xUtils.checkEmpty(l_sEmail)){
			_xOverlay.showTakeover('Please enter your email');
			$('#forgot-pass-form #email').focus();
			_xForgotPassPage.l_bValid = false;
			return false;
		} 
		
		if(!this.l_bValid)
			return false;
		
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=forgotPassPost&e="+escape(l_sEmail),
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
	},		
		
	
	validateFormUpdate : function(){
		
		this.l_bValid = true;
		var l_sNewPass = $('#forgot-pass-form-update #new_password').val();
		var l_sNewPass2 = $('#forgot-pass-form-update #new_password2').val();
		var l_nId = $('#forgot-pass-form-update #p_nId').val();
		var l_sT = $('#forgot-pass-form-update #p_sT').val();
		 
		if(_xUtils.checkEmpty(l_sNewPass)){
			_xOverlay.showTakeover('Please enter a new password');
			$('#forgot-pass-form-update #new_password').focus();
			_xForgotPassPage.l_bValid = false;
			return false;
		} 
		if(_xUtils.checkEmpty(l_sNewPass2)){
			_xOverlay.showTakeover('Please re-enter a new password');
			$('#forgot-pass-form-update #new_password2').focus();
			_xForgotPassPage.l_bValid = false;
			return false;
		} 
		
		if(!_xUtils.checkAlphaNumeric(l_sNewPass)){
			_xOverlay.showTakeover('Password must be letters and numbers only');
			$('#forgot-pass-form-update #new_password').focus();
			_xForgotPassPage.l_bValid = false;
			return false;
		} 
		
		if(!_xUtils.checkAlphaNumeric(l_sNewPass2)){
			_xOverlay.showTakeover('Password must be letters and numbers only');
			$('#forgot-pass-form-update #new_password2').focus();
			_xForgotPassPage.l_bValid = false;
			return false;
		} 
		  
		if( l_sNewPass != l_sNewPass2  ){
			_xOverlay.showTakeover('Passwords do not match');
			$('#forgot-pass-form-update #new_password').focus();
			_xForgotPassPage.l_bValid = false;
			return false;
		}  
		
		if(!this.l_bValid)
			return false;
		 
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=forgotPassUpdate&p="+escape(l_sNewPass)+"&i="+escape(l_nId)+"&t="+escape(l_sT),
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
	}		
		 
}



_xSearchResumesPage = {

	init : function(){
		
		$('#search-resumes-form').submit( function(){ 
			_xSearchResumes.validateForm();
			return false;
		});
		$('#search-resumes-form .link-search').click( function(){
			_xSearchResumes.validateForm();
			return false;									 
		});
		
		_xUtils.buildSort('search-resume-results-heading',_xSearchResumes);
	}
}
	


_xHotJobs = {
	
	sortBy : function(p_sKey){

		_xOverlay.blockLoadingArea('hot-jobs-loading-area-holder');
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=hotSortBy&head="+p_sKey,
		  success: function(msg){
			  eval(msg);
			  _xOverlay.closeLoadingArea('hot-jobs-loading-area-holder');
			  _xUtils.bindNewWindow();
		  }
		});
		
	}

}


			 
_xManageJobs = {
	 
	sortBy : function(p_sKey,p_nPage){
		_xUtils.standardSort(p_sKey,p_nPage,'loading-area-holder','manageSortBy');
	}

}

_xManageResume = {
	  
	sortBy : function(p_sKey,p_nPage){
		_xUtils.standardSort(p_sKey,p_nPage,'loading-area-holder','resumeSortBy');
	}

}
 
 
_xSearchResumes = {
	 
	
	sortBy : function(p_sKey,p_nPage){
		if(!p_nPage)
			p_nPage = 1;
		
		var l_nCategory = $('#s_category').val();
		var l_nLocation = $('#s_location').val();
		var l_nKeywords = $('#s_keywords').val();
		
		_xOverlay.blockLoadingArea('loading-area-holder');
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  
		  data: "a=searchResumeSortBy&page="+p_nPage+"&head="+p_sKey+"&c="+l_nCategory+"&l="+l_nLocation+"&k="+l_nKeywords,
		  success: function(msg){
			  eval(msg);
			 _xOverlay.closeLoadingArea('loading-area-holder');
			 _xUtils.bindNewWindow();
		  }
		});
		
	},
	
	validateForm : function (){
		this.sortBy('added',1);
		return false;
		 	
	}

}



_xSearchJobs = {
	 
	
	sortBy : function(p_sKey,p_nPage){
		if(!p_nPage)
			p_nPage = 1;
		
		
		var l_nCategory = $('#search-form #category').val();
		var l_nLocation = $('#search-form #location').val();
		var l_nKeywords = $('#search-form #keywords').val();
		var l_Zipcode = $('#search-form #zipcode').val();

		_xOverlay.blockLoadingArea('loading-area-holder');
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=searchSortBy&page="+p_nPage+"&head="+p_sKey+"&c="+l_nCategory+"&l="+l_nLocation+"&k="+l_nKeywords+"&z="+l_Zipcode,
		  success: function(msg){
			  eval(msg);
			  $.scrollTo('#search-form',500, {} );
			  _xOverlay.closeLoadingArea('loading-area-holder');
			  _xUtils.bindNewWindow();
		  }
		});
		
	},
	
	validateForm : function (){
		_xSearchJobs.sortBy('created');
		return;
		 	
	}

}

_xPostJobPage = {

	init : function(){
	 
		$('#create-employer_post').submit( function(){ 
			return _xPostJob.validateForm();
		});
		$('#create-employer_post .link-search').click( function(){
			return _xPostJob.validateForm();
			 								 
		}); 
		
		$('#n_position').change( function(){
			 if( $(this).val() == 6){
				 $('#payment-area').hide();
				 $('#ex').val('fp-int');
			 }else{
				 $('#payment-area').show();
				 $('#ex').val('');
			 }
		}); 
		
		
	}
	
}

_xResumePage = {

	init : function(){
		 
		$('#create-job-seeker-resume').submit( function(){ 
			return _xResume.validateForm();
			 
		});
		$('#create-job-seeker-resume .link-search').click( function(){
			return _xResume.validateForm();							 
		}); 
 		
	}
	
}



_xAccountPage = {
	
	init : function(){
		
		if( $('#create-account').length) {
			$('#create-account').submit( function(){ 
				_xAccount.validateForm();
				return false;
			});
			$('#create-account .link-search').click( function(){
				_xAccount.validateForm();
				return false;									 
			}); 
			 
			$('#create-account :radio').click( function(){			  
				_xAccountPage.toggleAccountTypes($(this).val());
			}); 
			
			  
			_xAccountPage.toggleAccountTypes($('#create-account #account_type_value').val());
		
		}
	},
	
	toggleAccountTypes : function(p_sType){
		
		switch(p_sType){
			case 'E' :
				$('.company-items').show("fast");
				break;
			default :
				$('.company-items').hide("fast");
				break;
		}
	
	}
}



_xResume = {
	
	 l_bValid : false,
	 l_aSendingVars : null,
	 validateForm : function (){
	    
		this.l_bValid = true;
		 
		$('#create-job-seeker-resume input').each( function(){
			if($(this).attr('accesskey')){
				
				if(_xUtils.checkEmpty($(this).val())){
					_xOverlay.showTakeover('Please enter: '+$(this).parent().find("label").text().replace("*",""));
					$(this).focus();
					_xResume.l_bValid = false;
					return false;
				}
			}
		});
		
		if(!this.l_bValid)
			return false;
		 
		var l_aIds = $('#create-job-seeker-resume #n_categories').selectedValues().toString().split(",");
		if(!l_aIds[0] > 0){
			_xOverlay.showTakeover('Please select at least one Category');
				$('#create-job-seeker-resume #n_categories').focus();
				_xResume.l_bValid = false;
				return false;
		}
		
		$('#create-job-seeker-resume #n_categories_id_list').val(l_aIds);  
		
		if(!this.l_bValid)
			return false;
		
		 
		return true;
		 	
	},
	
	payForPost : function(p_nId){
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=payForPost&p_nId="+p_nId,
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
	},
	
	removeResume : function(p_xObject,p_nId,p_nJId){
		
		if( confirm('Are you sure you want to delete this resume for your list?') ){
			
			$(p_xObject).parents("ul").remove();
			$.ajax({
			  type: "POST",
			  url: ajfile,
			  data: "a=removeResume&p_nId="+p_nId+"&p_nJId="+p_nJId,
			  success: function(msg){
				  eval(msg);
			  }
			});
			
		}
		 
	},
	
	
	
	 
	
	toggleActive : function(p_xObject,p_nId,p_sToken){
		
		var l_nState = $(p_xObject).attr('rel');
		if(l_nState == -1){
			_xOverlay.showTakeover('Payment Must be made before posting live');	
			return false;
		}else if(l_nState == 1){
			$(p_xObject).attr('rel','0').text('Activate');
		}else if(l_nState == 0){
			$(p_xObject).attr('rel','1').text('Deactivate');
		}
		 
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=toggleActive&p_nState="+l_nState+"&p_nId="+p_nId+"&p_sToken="+p_sToken,
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
	 
	}
	

}




_xPostJob = {
	
	 l_bValid : false,
	 l_aSendingVars : null,
	 validateForm : function (){
	   
		  
		this.l_bValid = true;
		 
		$('#create-employer_post input').each( function(){
			if($(this).attr('accesskey')){
				
				if(_xUtils.checkEmpty($(this).val())){
					_xOverlay.showTakeover('Please enter: '+$(this).parent().find("label").text().replace("*",""));
					$(this).focus();
					_xPostJob.l_bValid = false;
					return false;
				}
			}
		});
		
		if(!this.l_bValid)
			return false;
		 
		var l_aIds = $('#create-employer_post #n_categories').selectedValues().toString().split(",");
		if(!l_aIds[0] > 0){
			_xOverlay.showTakeover('Please select at least one Category');
				$('#create-employer_post #n_categories').focus();
				_xPostJob.l_bValid = false;
				return false;
		}
		
		$('#create-employer_post #n_categories_id_list').val(l_aIds);  
		
		if(!this.l_bValid)
			return false;
		
		/*
		_xPostJob.l_aSendingVars = new Array();
		$('#create-employer_post input,#create-employer_post textarea,#create-employer_post select').each( function(){
			_xPostJob.l_aSendingVars.push( Base64.encode( $(this).attr('id') + _sDelimiter + $(this).val()));				
		});
		
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=createPost&args="+_xPostJob.l_aSendingVars.join(','),
		  success: function(msg){
			  eval(msg);
		  }
		});
		*/
		return true;
		 	
	},
	
	payForPost : function(p_nId){
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=payForPost&p_nId="+p_nId,
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
	},
	
	removePost : function(p_xObject,p_nId,p_sToken){
		
		if( confirm('Are you sure you want to delete this listing?') ){
			
			$(p_xObject).parents("ul").remove();
			$.ajax({
			  type: "POST",
			  url: ajfile,
			  data: "a=removePost&p_nId="+p_nId+"&p_sToken="+p_sToken,
			  success: function(msg){
				  eval(msg);
			  }
			});
			
		}
		
		
	},
	
	toggleActive : function(p_xObject,p_nId,p_sToken){	
		
		var l_nState = $(p_xObject).attr('rel');
		if(l_nState == -1){
			_xOverlay.showTakeover('Payment Must be made before posting live');	
			return false;
		}else if(l_nState == 1){
			$(p_xObject).attr('rel','0').text('Activate');
		}else if(l_nState == 0){
			$(p_xObject).attr('rel','1').text('Deactivate');
		}
		 
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=toggleActive&p_nState="+l_nState+"&p_nId="+p_nId+"&p_sToken="+p_sToken,
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
	 
	}
	

}

_xAccount = {
	 
	 l_bLoginValid : false,
	 l_aSendingVars : null,  
	 l_bLoggedIn : false,
	 l_sAccountType: null,  
	 validateForm : function (){
	 
	 
		$('#create-account :radio').each( function(){			  
			if( $(this).attr('id') == 'account_type' && $(this).attr('checked')){
				$('#create-account #account_type_value').val( $(this).val());
			}
		});
		_xAccount.l_sAccountType = $('#create-account #account_type_value').val();
 
	 	    
		this.l_bLoginValid = true;
		 
		$('#create-account input').each( function(){
			if($(this).attr('accesskey')){
				
				if( ( _xAccount.l_sAccountType == 'J' || _xAccount.l_sAccountType == 'I')  && $(this).attr('id').substr(0,9) == 'n_company'){
					 
				}else{
					 
					if(_xUtils.checkEmpty($(this).val())){
						_xOverlay.showTakeover('Please enter: '+$(this).parent().find("label").text().replace("*",""));
						$(this).focus();
						_xAccount.l_bLoginValid = false;
						return false;
					}
				}
			}
		});
		
		if(!this.l_bLoginValid)
			return false;
		
		
		_xAccount.l_aSendingVars = new Array();
		
		$('#create-account input,#create-account textarea,#create-account select').each( function(){
			_xAccount.l_aSendingVars.push( Base64.encode( $(this).attr('id') + _sDelimiter + $(this).val()));				
		});
		
		
		var l_xField = $('#create-account #n_userid');
		if(!_xUtils.checkAlphaNumeric($(l_xField).val())){
			_xOverlay.showTakeover('User Id must be letters and numbers only');
			$(l_xField).focus();
			return false;	
		}
		
		l_xFieldPassword = $('#create-account #n_password');
		if(!_xUtils.checkAlphaNumeric($(l_xFieldPassword).val())){
			_xOverlay.showTakeover('Password must be letters and numbers only');
			$(l_xField).focus();
			return false;	
		} 
		 
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=createAccount&args="+_xAccount.l_aSendingVars.join(','),
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
		 	
	},
	
	
	validateLoginForm : function (){
		
		var l_xField = $('#login-form #userid');
		if(_xUtils.checkEmpty($(l_xField).val())){
			_xOverlay.showTakeover('Please enter a User Id');
			$(l_xField).focus();
			return false;
		}
		var l_xFieldPassword = $('#login-form #password');
		if(_xUtils.checkEmpty($(l_xFieldPassword).val())){
			_xOverlay.showTakeover('Please enter a Password');
			$(l_xFieldPassword).focus();
			return false;
		}
		 
		if(!_xUtils.checkAlphaNumeric($(l_xField).val())){
			_xOverlay.showTakeover('User Id must be letters and numbers only');
			$(l_xField).focus();
			return false;	
		}
		if(!_xUtils.checkAlphaNumeric($(l_xFieldPassword).val())){
			_xOverlay.showTakeover('Password must be letters and numbers only');
			$(l_xFieldPassword).focus();
			return false;	
		}
		 
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a=loginAccount&u="+escape($(l_xField).val())+"&p="+escape($(l_xFieldPassword).val()),
		  success: function(msg){
			  eval(msg);
		  }
		});
		
		return false;
		 	
	}
	  
}













_xUtils = {
	
	buildSort : function(p_sId,p_xObj){
		$('#'+p_sId+' li a').click( function(){
				var l_bDown = true;
				var l_sSort = $(this).attr('rel');	

				if(l_sSort.substr( l_sSort.length - 5,5) == ':DESC'){
					$(this).attr('rel',l_sSort.replace(/:DESC/,""));
					l_bDown = false;
				}
				else
					$(this).attr('rel',l_sSort+":DESC");
					
				p_xObj.sortBy($(this).attr('rel'));
				
				$('#'+p_sId+' li span').html('');
				_xUtils.setSortDisplay($(this),l_bDown)
				 
				return false;									 
			});
	},
	
	bindNewWindow : function(){
		$('.new-window').click( function(){
			var randomnumber=Math.floor(Math.random()*1000000);
			window.open($(this).attr('href'),'newwindow'+randomnumber,'location=1,status=1,scrollbars=1,width=700,height='+WINDOW_HEIGHT);
			return false;
		 });
	},
	
	setSortDisplay : function(p_xObj,p_bDown){
		if(p_bDown)
			$(p_xObj).parent().find('span').html('<img src="/image/main/listing-arrow.gif" width="8" height="9" />');
		else
			$(p_xObj).parent().find('span').html('<img src="/image/main/listing-arrow-up.gif" width="8" height="9" />');
	},
	
	standardSort : function(p_sKey,p_nPage,p_sBlockingDiv,p_sAction){
		
		if(!p_nPage)
			p_nPage = 1;
		
		//async: false,

		_xOverlay.blockLoadingArea(p_sBlockingDiv);
		$.ajax({
		  type: "POST",
		  url: ajfile,
		  data: "a="+p_sAction+"&page="+p_nPage+"&head="+p_sKey,
		  success: function(msg){
			  eval(msg);
			  _xOverlay.closeLoadingArea(p_sBlockingDiv);
			  _xUtils.bindNewWindow();
		  }
		});
		
	},
	
	checkEmpty : function(p_sVal){
		l_sVal = escape(p_sVal);
		l_sVal = l_sVal.replace(/\s*((\S+\s*)*)/, "$1");
		l_sVal = l_sVal.replace(/((\s*\S+)*)\s*/, "$1");
		return l_sVal.length < 1;
	}
	,
	checkEmail : function(str) {
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){ return false }
		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){ return false }
		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){ return false }
		if (str.indexOf(at,(lat+1))!=-1){ return false }
		if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){ return false }
		if (str.indexOf(dot,(lat+2))==-1){ return false }
		if (str.indexOf(" ")!=-1){ return false }
		return true					
	},
	checkAlphaNumeric : function(p_sVal){
		return !(/[^a-zA-Z0-9]/.test(p_sVal));	
	}
}


function strip_tags(str, allowed_tags) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Luke Godfrey
    // +      input by: Pul
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i>,<b>');
    // *     returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
    // *     example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
    // *     returns 2: '<p>Kevin van Zonneveld</p>'
    // *     example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
    // *     returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'
    
    var key = '', tag = '', allowed = false;
    var matches = allowed_array = [];
    var allowed_keys = {};
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // Build allowes tags associative array
    if (allowed_tags) {
        allowed_tags  = allowed_tags.replace(/[^a-zA-Z,]+/g, '');;
        allowed_array = allowed_tags.split(',');
    }
    
    // Match tags
    matches = str.match(/(<\/?[^>]+>)/gi);
    
    // Go through all HTML tags 
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;
        }
        
        // Save HTML tag
        html = matches[key].toString();
        
        // Is tag not in allowed list? Remove from str!
        allowed = false;
        
        // Go through all allowed tags
        for (k in allowed_array) {
            // Init    
            allowed_tag = allowed_array[k];
            i = -1;
            
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}
            
            // Determine
            if (i == 0) {
                allowed = true;
                break;
            }
        }
        
        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }
    
    return str;
}
 
 
var Base64 = {

    // private property
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

    // public method for encoding
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i < input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}