function form_rip(form) {
	var data = {};
	$(':input', form).each(function() {
        if (this.name) {
            var input_type = this.type;
            if (input_type === 'radio') {
                if (this.checked) {
                    data[this.name] = this.value;
                }
            } else if (input_type === 'checkbox') {
                data[this.name] = this.checked;
            } else {
                data[this.name] = this.value;
            }
        }
    });
	return data;
}

function form_set(form, data) {
    if (data) {
        $(':input', form).each(function() {
            var input_data = data[this.name];
            if (input_data) {
                var input_type = this.type;
                if (input_type === 'radio') {
                    if (input_data === this.value) {
                        $(this).click();
                    }
                } else if (input_type === 'checkbox') {
                    this.checked = (input_data === true);
                } else {
                    this.value = input_data;
                }
            }
        });
    }
}

var fl_params = {
	src : "/static/uppod.swf",
	width : 500,
	height : 40,
	allowFullScreen : "true",
	allowScriptAccess : "always",
	bgcolor : "#ffffff",
	wmode: "opaque"
};

function show_arrows(elem) {
	var top = $('.ord-top img', elem);
	var bot = $('.ord-bot img', elem);
	if (elem.prev().length) {
		top.show();
	} else {
		top.hide();
	}
	if (elem.next().length) {
		bot.show();
	} else {
		bot.hide();
	}
}

var sub_lock = new Date();

// subscription removing
function remove_subscription() {
	var li = $(this).parents('li');
	$.post($(this).attr('href'), {
				'gid' : $(this).attr('rel')
			}, function(data) {
				li.remove();
			});
	return false;
};

function add_subscription() {
	var form = $(this).parents('form');
	var gid = $(this).attr('rel');
	var text = $(this).text();
	$.post(form.attr('action'), {
				'gid' : gid
			}, function(data) {
				$('.subscriptions').removeClass('addfile-active');
				data = eval('(' + data + ')');
				if(!data.added) {
					return false;
				}
				var list = $('#subscription-list');
				var li = $('<li/>').appendTo(list);
				var a = $('<a/>').attr('href', '/archive/' + gid + '/').text(text);
				a.appendTo(li);
				var del = $('<a/>').attr({'class': 'delete',
										  'rel': gid,
										  'href': list.attr('rel')});
				del.html('<img src="' + static_url + '/img/ico/delete.png" alt="Удалить" title="Удалить"/>');
				del.click(remove_subscription);
				del.appendTo(li);
			});
	return false;
};

function getSubs() {
	var now = new Date();
	var group_subscriptions = $('.subscriptions');
	if (now - sub_lock > 900) {
		var val = $('.subscription-name input', group_subscriptions).val();
		if (val.length > 2) {
			var subs_list = $('.ajaxList', group_subscriptions);
			subs_list.html('');
			$.getJSON('/group/ajax/lists/', {
						'name' : val
					}, function(data) {
						subs_list.html('');
                        var empty = 0;
                        document.getElementById('glaziki').style.display='none';
						$.each(data, function(i, item) {
							if (i < 10) {
                                empty = 1;
								var li = $('<li/>').appendTo(subs_list);
								var a = $('<a/>').attr('href', '#').attr('rel',item.fields.gid).text(item.fields.name);
								a.click(add_subscription);
								a.appendTo(li);
							} else if (i == 10 ) {
                                var b = $('<p style="margin-top: 1em;"><strong>Первые 10 найденных рассылок. Если среди них нет искомой — уточните слово поиска.</strong></p>');
                                b.appendTo(subs_list);
                            }
						});
                        if (empty == 0) {
                            var b = $('<p style="margin-top: 1em;"><strong>Ничего не найдено.</strong></p>');
                            b.appendTo(subs_list);
                        }
					});
		}
	}
}

$(document).ready(function() {
	// temp fix for mozilla, because .hentry:hover {position:relative} makes
	// player reload
	if ($.browser.mozilla) {
		$('.hentry').css('position', 'relative')
	} // makes all .hentry with position relative
	
	//set wmode='opaque' for objects and embed
    var content_area = $('div.right');
    $.each($('object', content_area), function(i, val) {
        var param_wmode = $('param[name="wmode"]', val);
        if (!param_wmode.length) {
            $(val).append('<param value="opaque" name="wmode"/>');
        } else {
            if (param_wmode.attr('value') != 'opaque') {
                param_wmode.attr('value', 'opaque');
            }
        }
    });
    $.each($('embed', content_area), function(i, val) {
		val = $(val);
        if (val.attr('wmode') != 'opaque') {
            val.attr('wmode', 'opaque');
        }
    });
	
	// player embed for mp3 files
    $("a.playable-mp3").each(function() {
        $(this).before($("<div></div>").flashembed(fl_params, {
                    "comment" : this.title,
                    "st" : "/static/slick.txt",
                    "file" : this.href
                }));
    });    
	
	// premod group membership request cancelling
	$('a.cancelmemberrequest')
		.unbind('click')
		.click(function() {
			var link = this.getAttribute('href');
			show_confirm_form('Вы действительно хотите отменить заявку?',
				{
					show: true,
					callback: function() {location.replace(link);}
				},
				{
					show: true,
					callback: function() {}
				});
			return false;
		});

	// join group before post topic
	$('form.joinbeforepost').submit(function() {
		var self = $(this);
		show_confirm_form('<b>Писать в группу могут только её участники.</b>',
			{
				show: true,
				text: 'Вступить в группу',
				callback: function() {self.unbind('submit').submit();}
			},
			{
				show: false,
				callback: function() {}
			});
		return false;
	});

	// join group before upload file
	var add_file_form = $('div.add-file-form');
	$('button.joinbeforeupload', add_file_form).unbind('click').click(function() {
		add_file_form.removeClass('addfile-active');
		show_confirm_form('<b>Добавлять файлы в группу могут только её участники.</b>',
			{
				show: true,
				text: 'Вступить в группу',
				callback: function() {$('form', add_file_form).submit();}
			},
			{
				show: false,
				callback: function() {}
			});
		return false;
	});

	$('a.joinbeforeview').click(function(){
        var self = $(this);
		var link = self.attr('href');
        var autoclick = self.attr('id') === 'autoclick';

        if (autoclick) {
            $.blockUI.defaults.overlayCSS.opacity = 0.8;
            $('body').css({
                'heigth': '100%',
                'position': 'relative',
                'overflow': 'hidden'
            });
        }

		show_confirm_form('<b>Материалы группы доступны только ее участникам.</b>',
			{
				show: true,
				text: 'Вступить в группу',
				callback: function() {window.location.href = link + '&join_accepted=1';}
			},
			{
				show: false,
				callback: function() {
                    if(autoclick) {
                        var group_link = $('#group_link');
                        if(group_link) {
                            window.location.href = group_link.attr('href');
                        } else {
                            window.location.href = '/';
                        }
                    }
                }
			});
		return false;
	});

    $('#autoclick').click();   // see ticket #1360
	

	// admin: forum interests/important topics order
	function order_switch(url, top, bot) {
		$.post(url, {
					'pk1' : top.attr('id'),
					'pk2' : bot.attr('id')
				}, function() {
					top.insertAfter(bot);
					show_arrows(top);
					show_arrows(bot);
				});
	}
	
	var interest_list = $('#forum-interest-list');
	$('a.ord-top', interest_list).click(function() {
		var bot = $(this).parents('tr');
		var top = bot.prev();
		order_switch($(this).attr('rel'), top, bot);
		return false;
	});
	$('a.ord-bot', interest_list).click(function() {
		var top = $(this).parents('tr');
		var bot = top.next();
		order_switch($(this).attr('rel'), top, bot);
		return false;
	});

	var important_list = $('#forum-topic-list');
	$('a.ord-top', important_list).click(function() {
		var bot = $(this).parents('p');
		var top = bot.prev();
		order_switch($(this).attr('rel'), top, bot);
		return false;
	});
	$('a.ord-bot', important_list).click(function() {
		var top = $(this).parents('p');
		var bot = top.next();
		order_switch($(this).attr('rel'), top, bot);
		return false;
	});
	
	// important topic remove
	$('a.delete', important_list).click(function() {
		var self = $(this);
		var p = self.parents('p');
		show_confirm_form('Вы действительно хотите удалить важную тему?',
			{
				show: true,
				callback: function() {
					$.post(self.attr('href'), {
						'imptopic' : p.attr('id')
					}, function(data) {
						p.remove();
						$('p.important', important_list).each(function() {
							show_arrows($(this));
						});
					});
				}
			},
			{
				show: true,
				callback: function() {}
			});
		return false;
	});

	// interest remove
	$('a.delete', interest_list).click(function() {
		var self = $(this);
		var tr = self.parents('tr');
		var interest_name = $('.interest_name', tr).text();
		show_confirm_form('Вы действительно хотите удалить раздел?',
			{
				show: true,
				callback: function() {
					$.post(self.attr('href'), {'interest' : interest_name},
						function(data) {
							if (data.success) {
								$('select option', interest_list).each(function(i, val) {
									if (val.textContent == interest_name)
										$(val).remove();
								});
								tr.remove();
								$('tr', interest_list).each(function() {
									show_arrows($(this));
								});
							}
						}, 'json');
				}
			},
			{
				show: true,
				callback: function() {}
			});
		return false;
	});

	// interest content move to another interest
	$('select', interest_list).change(function() {
		var self = $(this);
		var opt = $('option:selected', self).val();
		var tr = self.parents('tr');
		var gra_title = $('.interest_name', tr);
		var self_topics_count_container = $('var', tr);
		var self_topics_count = parseInt(self_topics_count_container.text());

		if (opt != "-1" && self_topics_count > 0) {
			show_confirm_form('Вы действительно хотите переместить все содержимое в другой раздел?',
				{
					show: true,
					callback: function() {
						$.post(group_interest_move_link, {'interest_from': gra_title.text(), 'interest_to': opt},
							function(data) {
								if (data.success) {
									if (data.topics_count && data.topics_count > 0) {
										self_topics_count_container.text(self_topics_count - data.topics_count);
										if (data.tag_to) {
											$('a.interest_name', interest_list).each(function() {
												var interest_link = $(this);
												if (interest_link.text() == data.tag_to) {
													var updated_topics_count_container = interest_link.parent().find('var');
													updated_topics_count_container.text(parseInt(updated_topics_count_container.text()) + data.topics_count);
													return false;
												}
											});
										}
									}
									$('tr', interest_list).each(function() {
										show_arrows($(this));
									});
								}
							}, 'json');
					}
				},
				{
					show: true,
					callback: function() {}
				});
		}
		else if (opt != "-1" && self_topics_count == 0) {
			show_alert('Раздел пуст.');
		}
		return false;
	});


	// subscription adding
	function handleSubsAdd() {
		var now = new Date();
		setTimeout("getSubs()", 1000);
		sub_lock = now;
		return false;
	}
	var group_subscriptions = $('.subscriptions');
	var subscription_name_input = $('.subscription-name input', group_subscriptions);
	subscription_name_input.keyup(handleSubsAdd).change(handleSubsAdd);
	$('li a.delete', group_subscriptions).click(remove_subscription);
	$('.add-subscription-form-switch', group_subscriptions).click(function() {
		group_subscriptions.toggleClass('addfile-active');
		return false;
	});
	$('form', group_subscriptions).submit(function() {return false;});
	
	
	$('form.submit-debounce').submit(function() {
		$(':submit', $(this)).attr('disabled', 'disabled');
	});
});

function show_confirm_form(msg, ok_btn, cancel_btn){
	var confirm_form = $('#confirm_form');
	var ok_btn_obj = $('#confirm_form_ok', confirm_form);
	var cancel_btn_obj = $('#confirm_form_cancel', confirm_form);
	
	if (confirm_form.length) {
		$('#confirm_form_text', confirm_form).html(msg);
		
		$('.subscriberu_popup').hide();
		$.blockUI({message: confirm_form});
		
		if (ok_btn.show) {
			ok_btn_obj
				.unbind('click')
				.click($.unblockUI)
				.click(ok_btn.callback);
			if (ok_btn.text) {
				ok_btn_obj.val(ok_btn.text);
			}
		} else {
			ok_btn_obj.hide();
		}
		
		if (cancel_btn.show) {
			cancel_btn_obj
				.unbind('click')
				.click($.unblockUI)
				.click(cancel_btn.callback);
			if (cancel_btn.text) {
				cancel_btn_obj.val(cancel_btn.text);
			}
		} else {
			cancel_btn_obj.hide();
		}
			
		$('.blockOverlay')
			.attr('title', uimsg['unblock'])
			.unbind('click')
			.click($.unblockUI)
			.click(cancel_btn.callback);
		$('.fx', confirm_form)
			.unbind('click')
			.click($.unblockUI)
			.click(cancel_btn.callback);
	}
	return false;
}
function show_alert(msg){
	var confirm_form = $('#confirm_form');
	if (confirm_form.length) {
		$('#confirm_form_text', confirm_form).html(msg);
		$('.subscriberu_popup').hide();
		$.blockUI({message: confirm_form});
		$('#confirm_form_cancel', confirm_form).hide();
		$('#confirm_form_ok', confirm_form)
			.unbind('click')
			.click($.unblockUI)
			.val('Ok');
		$('.fx', confirm_form)
			.unbind('click')
			.click($.unblockUI);
		$('.blockOverlay').attr('title', uimsg['unblock'])
			.unbind('click')
			.click($.unblockUI);
	}
	return false;
}

function set_link_topic_form() {
	// Link topic creation (create.html template)
    var poll_fields = $('.poll_fields');
    var topic_files_wrapper = $('#topic_files_wrapper');
    var subj_field = $('#id_subject');
    var subj_label = $('label[for="id_subject"]');
    var theme_title = $('p.theme-title');
    var link_topic = $('#link-topic');
    var poll_topic = $('#poll-topic');
	$('input[name="interests"]').bind("focus click", function() {
		if (this == link_topic[0]) {
			theme_title.addClass('theme-link');
			subj_label.text('Добавить ссылку:');
			if (!subj_field.attr('value').match(/^[A-Z]+[A-Z0-9+-.]*:\/\//i)) {
				subj_field.attr('value', 'http://' + subj_field.attr('value'));
			}
            poll_fields.hide();
            topic_files_wrapper.show();
		} else {
			theme_title.removeClass('theme-link');
            if (this == poll_topic[0]) {
			    subj_label.text('Вопрос для голосования:');
                poll_fields.show();
                topic_files_wrapper.hide();
            } else {
                subj_label.text('Название темы:');
                poll_fields.hide();
                topic_files_wrapper.show();
            }
			if (subj_field.attr('value') == 'http://') {
				subj_field.attr('value', '');
			}
		}
	});
}

function set_upload_file_field_clone() {
	$('#addfileinput').click(function() {
				// Клонируем инпут файл
				$("#id_file").clone().each(function() {
							// Делаем name чтобы проще распарсить на сервере
							$(this).removeAttr('id');
							// очищаем заполненность
							this.value = '';
							// Добавляем в форму
							$('#mfi').append($(this));
						});
				return false;
			});

}

function set_video_code_area_clone() {
	$('#addvideocode').click(function() {
				// Клонируем поле для кода видео-ролика
				$("#id_embed").clone().each(function() {
							$(this).removeAttr('id');
							// очищаем заполненность
							this.value = '';
							// Добавляем в форму
							$('#mvi').append($(this));
						});
				return false;
			});
}

function toggleRegister(show, link) {
	$('#commonform, #passform').hide();
	$(show).show();
	$('ul.person-nav li').removeClass('here');
	$(link).parent().parent().addClass('here');
	return false;
}

function loadCats(target, parent) {
	if (parent) {
		target.html("<option value=''></option><option value=''>Идет загрузка данных...</option>");
		$.getJSON("/group/ajax/subcats/", {
					"cat" : parent
				}, function(data) {
					if (data.length > 0) {
						target.html("<option value=''></option>");
						$.each(data, function(i, cat) {
							target.append("<option value='" + cat.pk + "'>" + cat.fields.name + "</option>");
						});
						target.show();
					} else {
						target.hide();
					};
				});
	} else {
		target.hide();
	}
}

function prepareCats() {
	var cat = $('select#cat');
	var subcat1 = $('select#subcat1');
	var subcat2 = $('select#subcat2');
	cat.change(function() {
		loadCats(subcat1, cat.val());
		subcat2.hide();
	});
	subcat1.change(function() {
		loadCats(subcat2, subcat1.val());
	});
}

$(document).ready(prepareCats);
$(document).ready(set_link_topic_form);
$(document).ready(set_upload_file_field_clone);
$(document).ready(set_video_code_area_clone);

$(document).ready(function() {
			$('.f-edit.group-edit select').each(function() {
						var self = $(this);
						if (self.children('option').length > 1) {
							self.show();
						} else {
							self.hide();
						}
					})
		});
