$(function(){
var iframe_name = 'k-iframe-' + Math.floor(Math.random()*1000001);
var form = $('', { id: 'k-relation-form', action: '', method: 'POST', style: 'display:none' });
var input = $('', { id: '__k_relation_ids__', name: '__k_relation_ids__', type: 'hidden' });
form.append(input).appendTo($('body'));
$( ".k-relation-ex" ).each(function(index){
var field = $(this);
var list = field.find('select');
var btn_remove = field.find('.btn.remove');
var btn_add = field.find('.btn.add');
var label_add = btn_add.find('span');
var input_ids = field.find('.k-relation-ids');
var has_one = field.hasClass( 'has-one' );
if( has_one ){
list.mousedown(function(e){
e.preventDefault();
});
}
else{
list.change(function(){
if( $(this).find('option:selected').length ){
btn_remove.removeClass("disabled");
}
else{
btn_remove.addClass("disabled");
}
});
}
list.bind( '_refresh', function(){
var str_ids = '';
var sep = '';
$(this).find('option').each(function(i, selected) {
str_ids += sep + $(this).val();
sep = ',';
});
input_ids.val( str_ids );
if( has_one ){
if(str_ids.length){
btn_remove.css('display', 'inline-block');
btn_add.css('display', 'none');
}
else{
btn_add.css('display', 'inline-block');
btn_remove.css('display', 'none');
}
}
});
btn_remove.click(function(){
if( has_one ){
list.empty();
}
else{
list.find('option:selected').each(function(i, selected) {
$(this).remove();
});
}
list.trigger('change');
list.trigger('_refresh');
return false;
});
// modal callbacks
var modal_before_open = function() {
window.KRelation = {
callBack: function( content, exit_code ){
if( exit_code=='exit_save' ){
var arr = jQuery.parseJSON(content);
if(arr.length){
if( has_one && arr.length>1 ) arr.splice(1);
var html = '';
$.each(arr, function( key, val ){
html += '';
});
if( has_one ) list.empty();
list.append(html);
list.trigger('_refresh');
}
}
// close modal
modal_after_close();
}
};
// prep form
form.attr( "action", btn_add.attr('data_relation_src') );
form.attr( "target", iframe_name );
input.val( input_ids.val() );
};
var modal_open = function() {
form.submit();
};
var modal_after_close = function() {
window.KRelation = null;
$.magnificPopup.close();
};
LADON.bindPopupIframe( btn_add, modal_before_open, modal_after_close, "mosaic-iframe", true, iframe_name, modal_open );
});
});