$(document).ready(setupValidators);
$(document).ready(initControls);

function setupValidators(){
	$.validator.addMethod("captcha", validateCaptcha, "Incorrect verification code");
	$.validator.setDefaults({ 
		errorPlacement: function(error, element) {
			if ( element.is(":radio") )
				error.appendTo( element.parents('table.radiobuttons').parent() );
			else if ( element.is(":checkbox") )
				error.appendTo ( (element.parents('table.checkboxes').length > 0)? element.parents('table.checkboxes').parent():element.parent() );
			else
				error.appendTo( element.parent() );
		}
	});
}

function initControls(){	
	var ckeditors = $("textarea.richtext");
	if(ckeditors.length > 0){
		ckeditors.ckeditor(function(){}, 
			{
				toolbar: 'Basic',
				filebrowserBrowseUrl : '/js/ckfinder/ckfinder.html',
				filebrowserImageBrowseUrl : '/js/ckfinder/ckfinder.html?type=Images',
				filebrowserFlashBrowseUrl : '/js/ckfinder/ckfinder.html?type=Flash',
				filebrowserUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
				filebrowserImageUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
				filebrowserFlashUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
			});	
	}
	
	try{
		$("button, input:submit, input:button, a.button").button();
		$("input.datepicker").datepicker({dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true});
		$("input, select, textarea").tipTip({maxWidth: "auto", edgeOffset: 10, defaultPosition: 'right', activation: 'focus'});
		$(".listselect").listselect();
	}catch(Exception){}
}

function validateCaptcha(value, element)
{
	challengeField = $("input#recaptcha_challenge_field").val();
	responseField = $("input#recaptcha_response_field").val();
	var response = $.ajax({
		type: "POST",
		url: "/captcha/",
		data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
		async: false
		}).responseText;
	
	if(response == "true"){
		return true;	
	}
	else{
		return false;
	}
}	
