jQuery(document).ready(function()
{	
	
	jQuery('#register input').attr('autocomplete','off');
	
	jQuery("#register input#email,#register input#password").val('');
	jQuery('.required_note').css('display','none');
	
	// check for what is/isn't already checked and match it on the fake ones
	jQuery("input[type=checkbox]").each( function() {

              if( jQuery(this).hasClass('nofake' ) ){

              } else {

                if( this.id == 'emi_mailinglist' && jQuery(this).is(':checked') == false) {
                  prepare_emi(jQuery('#emi_mailinglist'));
                }

                jQuery(this).parent().append('<a href="" class="fakecheck fackchecker" id="fake'+this.id+'"></a>');
                jQuery(this).css('display','none');

                var id = this.id;
                var label = jQuery('label[for="'+this.id+'"]');
                jQuery(label).click( function () {
                        checkboxclick( jQuery('#fake'+id ) )
                });
                (this.checked) ? jQuery("#fake"+this.id).addClass('fakechecked') : jQuery("#fake"+this.id).removeClass('fakechecked');

             }
	
	});
	
	// function to 'check' the fake ones and their matching checkboxes
	jQuery(".fakecheck").click(function(){
		checkboxclick(this);
		return false;
	});

	jQuery('span.fakechecker').click(function(){
		checkboxclick(jQuery(this).next('a.fakecheck'));
	});
	jQuery('span.fakechecker').mouseover().css('cursor','pointer');

	
	jQuery('#registration_form #password_help, #registration_form #password2_help, #registration_form #emi_COUNTRY').children('div').css('display','none');
	
	jQuery('#registration_form input#password, #registration_form input#password2').change( function(){
		if( jQuery(this).val() != ''){
			jQuery('#registration_form input#password, #registration_form input#password2').addClass('required');
		} else if(  jQuery(this).val() == '' ){
			jQuery('#registration_form input#password, #registration_form input#password2').removeClass('required');
		}
	});
	
	jQuery('#registration_form #emi_COUNTRY').blur( function(){
		if( jQuery(this).val() == ''){
			seterror('emi_COUNTRY');
		} else if(  jQuery(this).val() != '' ){
			setok('emi_COUNTRY');
		}
	});
	
	jQuery('#username,#email,#password').change(function () {
		ajaxCheck(this);
	});

	jQuery('#password2').change(function () {
		if( jQuery('#password').val() == jQuery('#password2').val() ){
			setok('password2');
		} else {
			seterror('password2');
		}
	});
});


function addChecking(id){
	jQuery('#'+id+'_help div').addClass('checking');		
	jQuery('#'+id+'_help div').removeClass('ok');
	jQuery('#'+id+'_help div').removeClass('error');
	jQuery('#'+id+'_help div').fadeIn();		
}

function removechecking(id){
	jQuery('#'+id+'_help div').removeClass('checking');
	jQuery('#'+id+'_help div').removeClass('ok');
	jQuery('#'+id+'_help div').removeClass('error');
	jQuery('#'+id).removeClass('ok');
}

function setok(id){
	removechecking(id);
	jQuery('#'+id+'_help div').addClass('ok');
}
function seterror(id){
	jQuery('#'+id+'_help div').addClass('error');
}
function ajaxCheck(Obj){
	
	inputString = jQuery(Obj).val();
	id = jQuery(Obj).attr('id');
	
	addChecking(id);
	
	if(inputString.length < 3) {
		jQuery('#'+id+'_help div span.check').css('display','block');
	} else {
            var tok = jQuery('input:regex(name,[0-9a-f]{32})').attr('name');
		jQuery.post("/index.php",
                  { task: "checkuservalue", option: "com_user",tmpl:"component", type: "raw",lookat : id, tok: tok, lookup: inputString },
                  function(data) {
			if( data == 0 ) {
				if( jQuery('#msg_'+id).attr('id') == 'msg_'+id ){
					jQuery('#msg_'+id).fadeOut('600').remove();
				}
				setok(id);
				return true;
			} else {
				seterror(id);
				if( jQuery('#msg_'+id).attr('id') != 'msg_'+id ){
					jQuery('#'+id).parents('tr').after('<tr id="msg_'+id+'"><td class="label"></td><td colspan="2"><div class="no_height smaller">'+data+'</div></td></tr>');
				} else if( jQuery('#msg_'+id).attr('id') == 'msg_'+id && jQuery('#msg_'+id+ ' div').html() != data ){
					jQuery('#msg_'+id+ ' div').html(data)
				}
				return false;
			}
		});
	}	
}

function checkboxclick(obj){
	
	if( obj.id == undefined ){
		var id = jQuery(obj).attr('id').replace('fake','');
	} else {
		var id = obj.id.replace('fake','');
	}

	
	if( jQuery(obj).hasClass('fakechecked') ){
		jQuery(obj).removeClass('fakechecked');
		checked = '';
	} else {
		jQuery(obj).addClass('fakechecked');
		checked = 'checked';
	}

       
	//if( id == 'emi_mailinglist' && jQuery.browser['msie'] == false ){
	if( id == 'emi_mailinglist'  ){
		prepare_emi(obj);
	}		
	
	jQuery('#'+id).attr('checked',checked);
	return false;	
}

function prepare_emi(obj){
	if( jQuery(obj).hasClass('fakechecked') ){
		jQuery('tr.emi').fadeIn('1000');
		jQuery('tr.emi select').addClass('required');
	} else {
		jQuery('tr.emi select').removeClass('required');
		jQuery('tr.emi').fadeOut('1000');
	}
}

jQuery.expr[':'].regex = function(elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ?
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels,'')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}
