/*
 * Author: Arnolds Verins, MRM Starsky
 * Date: 2009-06-08
 * Description: Documentation about validator: http://docs.jquery.com/Plugins/Validation/validate
 */
jQuery(document).bind("ready", function(){
	try{
		if(jQuery('#signupform').length){
			var validator = _initValidator(jQuery("#signupform"));
			signup.init(validator);
		}else if(jQuery('#myprofileform').length){
			var validator = _initValidator(jQuery("#myprofileform"));
			myprofile.init(validator);
		}
		if (feedcontrol) {
			feedcontrol.init();
		}
		
		// Form info boxes
		jQuery('.form_info').mouseover(function(){
			showInfoBox(this);
		});
	}catch(ex){ if(debug) alert(ex); }
});

function showInfoBox(caller){
	try{
		var form_box = jQuery('.form_info_box', caller.parentNode)[0];
		var top = jQuery(caller).position().top-13;
		if ($.browser.msie && $.browser.version < 7) top-=10; // IE6
		var left = jQuery(caller).position().left-10;
		jQuery(form_box).fadeOut(0).css('top', top + 'px').css('left', left + 'px').fadeIn();
		
		jQuery(form_box).mouseout(function(){
			hideInfoBox(caller);	
		});
	}catch(ex){ if(debug) alert(ex); }	
}
function hideInfoBox(caller){
	try{
		jQuery('.form_info_box').fadeOut();
	}catch(ex){ if(debug) alert(ex); }	
}

function _initValidator(form){
	try{
		// Adds custom validator method too Validator class
		jQuery.validator.addMethod("username", function(value, element, params) { 
			return this.optional(element) || !/[^a-z_0-9]/i.test(value); 
		}, jQuery.format('Please enter only "a-z", "0-9" and "_" characters'));
		
		// Init validator rules
		var validator = jQuery(form).validate({
			rules: {
				user_name:{
					required:true,
					minlength:2,
					username: true,
					remote: myprofile_uri + '/checkusername.ajax.php'
				},
				user_password:{
					required:true,
					minlength:6
				},
				user_confirmpassword:{
					minlength:6,
					equalTo: jQuery('[name=user_password]')[0],
					required:true
				},
				user_email:{
					required:true,
					email: true
				},
				meta_first_name:{ required:true },
				meta_last_name:{ required:true },
				meta_country: { min:0 },
				meta_description:{ required:true }
			},			
			messages: {
				user_confirmpassword:{
					equalTo: "Please enter the same password again"	
				},
				user_name:{
					remote: 'Sorry, that username is already used.'
				},
				meta_country: 'Please choose your country',
				meta_description: 'Please describe who you are and what you do'
			},
			errorElement: 'div',
			errorPlacement: function(error, element) {
				if (jQuery(element).attr("name") && (jQuery(element).attr("name") == 'provide_me_with_a_blog')) {
					element = jQuery('input[name=meta_share_blog]')[0];
				}
				try{
					var sticker = jQuery(element).closest('.sticker, .dropdownsticker');
					if(sticker.length){						
						sticker.addClass('s_error');
						error.appendTo(jQuery(element).closest('.row'));
					}else{
						var _input = jQuery(element).closest('.input');
						if(_input.length){
							error.appendTo(_input);		
						}else{
							var textarea = jQuery(element).closest('.textarea');
							error.appendTo(textarea.parent());		
						}
					}
				}catch(ex){ alert(ex); }
			},
			highlight: function(element, errorClass) {
				if (jQuery(element).attr("name") && (jQuery(element).attr("name") == 'provide_me_with_a_blog')) {
					element = jQuery('input[name=meta_share_blog]')[0];
				}
				try{
					var sticker = jQuery(element).closest('.sticker, .dropdownsticker');
					if(sticker.length){
						sticker.addClass('s_error');
						jQuery('.'+errorClass, sticker[0].parentNode).fadeIn();
					}else{
						var _input = jQuery(element).closest('.input');
						if(_input.length){
							jQuery('.'+errorClass, _input).fadeIn();
						}else{
							var textarea = jQuery(element).closest('.textarea');
							jQuery('.'+errorClass, textarea.parent()).fadeIn();
						}
					}
				}catch(ex){ alert(ex); }
			},
			unhighlight: function(element, errorClass) {
				try{
					var sticker = jQuery(element).closest('.sticker, .dropdownsticker');
					if(sticker.length){
						sticker.removeClass('s_error');
						//jQuery('.'+errorClass, sticker[0].parentNode).fadeOut();
					}else{	
						var _input = jQuery(element).closest('.input');
						if(_input.length){
							jQuery('.'+errorClass, _input).fadeOut();
						}else{
							var textarea = jQuery(element).closest('.textarea');
							jQuery('.'+errorClass, textarea.parent()).fadeOut();
						}
					}
				}catch(ex){ alert(ex); }
			},
			ignore: '.ignore'
		
		});	
		return validator;
	}catch(ex){ if(debug) alert(ex); }	
	return null;
}