/**
*	Поддержка конструктора форм 
*/

var count = 0

function addBlock(type, first) // {{{
{
	_addBlock({'type' : type, 'id' : count, 'position' : first > 0 ? 'first' : 'last'});
} // }}}

function _addBlock(params) // {{{
{
	// общие параметры
	var id = params['id'] || count;
	var type = params['type'] || 'text';

	var name = params['name'] || 'field_'+count;
	var alias = params['alias'] || 'field_'+count ;
	var required = params['required'] || false;

	// остальное брахло
//	var type_params = params['type_params'] || new Array; // специфичные параметры типа
//	var multiple = params['multiple'] || false; // зависит от типа
//	var feedback = params['feedback'] || false; // только для email


	var _params = params;

	var block = $('#base_block_'+type)
		.clone()
		.attr('id', 'block_'+id)
		.find('input[name*="#ID#"]')
			.each(function(){
				var o = $(this);
				o.attr('name', o.attr('name').replace('#ID#', id));
			})
			.end()
		.find('input[name="block_ids[]"]').attr('value', id).end()
		.find('input[name="block_'+id+'_pos"]').attr('value', (params['position'] == 'first' ? 0 : count) ).end()
		.find('input[name="block_'+id+'_name"]').attr('value', name).end()
		.find('input[name="block_'+id+'_alias"]').attr('value', alias).end()
		.find('input[name="block_'+id+'_required"]').attr('checked', (required ? 'checked' : '') ).end();


	if( params['position'] == 'first' ){
		var first_block = first_block = $('#form_body').find('div.formcreator_block').eq(0);
		if(first_block.length){

			first_block.before(block);
			// увеличить позиции у всех последующих блоков
			block.nextAll('div.formcreator_block').find('input[name$="_pos"]').each(function(){
				var obj = $(this);
				obj.attr('value', (1 + parseInt(obj.attr('value'))) );
				});
		}else{

			block.appendTo('#form_body');
		}

	}else{
		block.appendTo('#form_body');
	}
	count++;

} // }}}
	
function addOption(block) // {{{
{
	var block = findBlock(block);

	if(!block) return false;
	var block_id = block.id;

	var row = $('table.block_opts_table tr:last', block);
	row.clone().insertAfter(row).find('input').attr('value', '');

} // }}}

function RemoveBlock(obj) // {{{
{
	if(!confirm("Are you sure?")) {
		return
	}
	var block = findBlock(obj);
	if(block){
		block.parentNode.removeChild(block)
	}
} // }}}

function MoveBlock(obj, direct) // {{{
{
	var moved_node = findBlock(obj);
	if(!moved_node) return false;

	moved_node = $(moved_node);
	var near_node = false;
	if(direct == 'up'){
		near_node = moved_node.prevAll('div.formcreator_block').eq(0);
	}else if(direct == 'down'){
		near_node = moved_node.nextAll('div.formcreator_block').eq(0);
	}
	if(near_node && !near_node.length) near_node = false;

	if(near_node){

		var moved_pos_obj = $('input[name$="_pos"]', moved_node);
		var near_pos_obj = $('input[name$="_pos"]', near_node);
		var moved_pos = moved_pos_obj.attr('value');
		moved_pos_obj.attr('value', near_pos_obj.attr('value'));
		near_pos_obj.attr('value', moved_pos);

		if(direct == 'up'){
			moved_node.animate({opacity: 'hide', height: 'hide'}, 'fast', 'linear'
				, function(){
					$(this).insertBefore(near_node).show('fast');
				});
		}else{
			moved_node.animate({opacity:'hide', height: 'hide'}, 'fast', 'linear'
				, function(){
					$(this).insertAfter(near_node).show('fast');
				});
		}
	}

} // }}}

function findBlock(obj) // {{{
{
	var par = obj;
	if(typeof par == 'string' || typeof par == 'number') par = document.getElementById('block_'+par);

	while(par && ( par.tagName != 'DIV' || par.className != 'formcreator_block' ) ){
		par = par.parentNode;
	}
	return par;
} // }}}

function ToggleHandlerParams(handler) // {{{
{
	var cb = $('#cb_form_handler_'+handler);
	var show  = cb.attr('checked');

	if(show){
		$('.fc_'+handler+'_params').show();
	}else{
		$('.fc_'+handler+'_params').hide();
	}

} // }}}

function ToggleTemlateActivity(mode) // {{{
{
	var cb = $('input:checkbox[name="reset_tpl['+mode+']"]');
	var ta = $('textarea[name="form_tpl['+mode+']"]');

	ta.attr('disabled', cb.attr('checked'));

} // }}}

// Привязка jquery validate к captcha
function BindActivateConfirmForm(){
	var $forms = $(".need_confirm");
	$forms.focusin(function() {
		$forms.removeClass("active-form");
		$(this).addClass("active-form");
	});
	
	$.validator.addMethod("CheckConfirmCode", function(value, element) {
		var $active_form = $(".need_confirm.active-form");
		var confirm_code = '';
		var confirm_value = '';
		$active_form.each(function(){
			confirm_code = $('#confirm_code', this).val();
			confirm_value = $('#confirm_value', this).val();
		});

//		alert(confirm_code+' '+confirm_value);

		$.ajax({
			type: "GET",
			url: "/mod/api/formcreator/check_captcha",
			async: false,
			data: {
				confirm_code: confirm_code,
				confirm_value: confirm_value
			},
			dataType:"html",
			success: function(msg){
				if(msg == "true"){
					confirm_success = true;
				}else confirm_success = false;
			}
		});
		
		return confirm_success;
	}, "Неверный код");


	$.validator.addMethod("CheckConfirm_input_Code", function(value, element) {
		var $active_form = $(".need_confirm.active-form");
		var confirm_code = '';
		var confirm_value = '';
		$active_form.each(function(){
			confirm_code = $('#confirm_code', this).val();
			confirm_value = $('#confirm_input', this).val();
		});

//		alert(confirm_code+' '+confirm_value);

		$.ajax({
			type: "GET",
			url: "/captcha.php",
			async: false,
			data: {
				confirm_code: confirm_code,
				confirm_value: confirm_value
			},
			dataType:"html",
			success: function(msg){
				if(msg == "true"){
					confirm_success = true;
				}else confirm_success = false;
			}
		});
		
		return confirm_success;
	}, "Неверный код");


	$('.obn_img').click(function(){
		conf_div = $(this).closest('.conf_block');
		$("#confirm_value", conf_div).focus().val('');
		confirm_code = $('#confirm_code', conf_div).val();
		$.getJSON("/mod/api/formcreator/reload_captcha", {code: confirm_code}, function(data){
			old_code = data.old_code;
			conf_div = $('[value="'+old_code+'"]').closest('.conf_block');
			$('#confirm_code', conf_div).val(data.confirm_code);
			$('.conf_img', conf_div).attr('src', data.img);
			$('.img_loading', conf_div).removeClass('img_loading').addClass('obn_img');
		});
		$(this).removeClass('obn_img').addClass('img_loading');
		return false;
	});

}



/* vim: set foldmethod=marker:
	$Id: formcreator.js,v 1.9 2009-10-28 14:58:35 belukov Exp $ */

