(function() {
var create_date, create_fields, days_in_month, image_added, open_edit_image; image_added = function(image, chunk) { var dynamic_items, id, image_id, img, new_list, target; image_id = $(image).attr('id').replace('image_', ''); new_list = $("li.empty_" + chunk).clone(); new_list.find('input').next().val(image_id); new_list.find('span').html($(image).attr('alt')); id = parseInt(image_id + Math.random() * 101); $('input', new_list).each(function(i, input) { input = $(input); input.attr('name', input.attr('name').replace(/images_attributes\]\[[\d]+/, "images_attributes][" + id)); return input.attr('id', input.attr('id').replace(/images_attributes_[\d]+/, "images_attributes_" + id)); }); img = $("<img />").attr({ title: $(image).attr('title'), alt: $(image).attr('alt'), src: $(image).attr('data-grid') }).appendTo(new_list); dynamic_items = new_list.find("#dynamic_items"); dynamic_items.attr('id', "dynamic_items_" + image_id); dynamic_items.find("input").val(""); new_list.attr('id', "image_" + image_id).removeClass('empty'); new_list.attr('id', "image_" + image_id).removeClass("empty_" + chunk); new_list.show(); target = "#page_images_" + chunk; return new_list.appendTo(target); }; jQuery(function() { $('.edit_image').live('click', function() { var image_id, items; image_id = $(this).parents().parents().attr('id').replace('image_', ''); items = $(this).parents().parents().find("#dynamic_items_" + image_id)[0]; return open_edit_image(items, image_id); }); $('.delete_image').live('click', function() { var rm; rm = confirm("Are you sure delete this image?"); if (rm === true) { return $(this).parents('li').first().remove(); } else { return false; } }); $('li.image_field').live('hover', function() { var chunk; chunk = $(this).find('input').first().val(); return $("#page_images_" + chunk).sortable(); }); return $("#month, #year").live('change', function() { var month, year; year = $("#year").find(":selected").val(); month = $("#month").find(":selected").val(); return days_in_month(year, month); }); }); open_edit_image = function(items, image_id) { var fields, input; fields = $(items).clone(); input = fields.find('input'); input.each(function(i, inp) { var field, title, type, value; title = $(inp).attr('data-name'); type = $(inp).attr('data-type'); value = $(inp).val(); field = create_fields(type, value); return $(inp).after($("<div id='image" + image_id + "_title_" + title + "'><span class= 'image-fields-edit'>" + title + "</span>" + field + "</div>")); }); input.after($("<div class='form-actions'><div class='form-actions-left'><a class='button' id='insert_fields'>Insert<a></div></div>")); fields.dialog({ title: "Edit Image Fields", modal: true, resizable: false, autoOpen: true, width: 800, height: 500, close: function() { return setTimeout(function() { return fields.remove(); }, 500); } }); $('a.ui-dialog-titlebar-close').click(function() { return fields.dialog('close'); }); return $('a#insert_fields').click(function() { input.each(function(i, inp) { var date, date_value, field, hour, input_val, minute, title, type; title = $(inp).attr('data-name'); type = $(inp).attr('data-type'); if (type === "string" || type === "integer" || type === "float" || type === "decimal") { field = "input"; } else if (type === "boolean") { field = "input-checkbox"; } else if (type === "text") { field = "textarea"; } else if (type === "date" || type === "datetime") { field = "select"; } input_val = $(items).find("input[data-name='" + title + "']"); if (field === "select") { date_value = []; $("div#image" + image_id + "_title_" + title).find("" + field).each(function() { return date_value.push($(this).val()); }); date = "" + date_value[0] + "-" + date_value[1] + "-" + date_value[2]; hour = date_value[3]; minute = date_value[4]; if (hour) { date = "" + date + " " + hour + ":" + minute; } input_val.val(date); } else if (field === "input-checkbox") { field = field.split("-"); if ($("div#image" + image_id + "_title_" + title).find("" + field[0]).is(":checked")) { input_val.val("true"); } else { input_val.val("false"); } } else { input_val.val($("div#image" + image_id + "_title_" + title).find("" + field).val()); } return fields.dialog('close'); }); return fields.remove(); }); }; create_fields = function(type, value) { var checked, field; switch (type) { case "string": case "integer": case "float": case "decimal": return field = "<input class='image-edit' type='text' value='" + value + "' />"; case "boolean": checked = ''; if (value === "true") { checked = "checked"; } return field = "<input class='image-edit-checkbox' type='checkbox' " + checked + " />"; case "text": return field = "<textarea class='image-edit'>" + value + "</textarea>"; case "date": if (value) { value = value.split("-"); return field = "<select id='year'><option></option>" + (create_date(2010, 2030, 'year', value[0])) + "</select> <select id='month'><option></option>" + (create_date(1, 12, 'month', value[1])) + "</select> <select id='day'><option></option>" + (create_date(1, '', 'day', value)) + "</select>"; } else { return field = "<select id='year'><option></option>" + (create_date(2010, 2030, 'year')) + "</select> <select id='month'><option></option>" + (create_date(1, 12, 'month')) + "</select> <select id='day'><option></option>" + (create_date(1, '', 'day')) + "</select>"; } break; case "datetime": if (value) { value = value.split("-"); return field = "<select id='year'><option></option>" + (create_date(2010, 2030, 'year', value[0])) + "</select> <select id='month'><option></option>" + (create_date(1, 12, 'month', value[1])) + "</select> <select id='day'><option></option>" + (create_date(1, '', 'day', value)) + "</select> <select id='hour'><option></option>" + (create_date(00, 23, 'hour', value.join("-"))) + "</select> <select id='minute'><option></option>" + (create_date(00, 59, 'minute', value.join("-"))) + "</select>"; } else { return field = "<select name='date[0]' id='year'><option></option>" + (create_date(2010, 2030, 'year')) + "</select> <select name='date[1]' id='month'><option></option>" + (create_date(1, 12, 'month')) + "</select> <select name='date[2]' id='day'><option></option>" + (create_date(1, '', 'day')) + "</select> <select name='date[3]' id='hour'><option></option>" + (create_date(00, 23, 'hour')) + "</select> <select name='date[4]' id='minute'><option></option>" + (create_date(00, 59, 'minute')) + "</select>"; } } }; create_date = function(init, end, obj_id, value) { var day, month, selected, year, _ref, _ref2, _results; if (obj_id === 'day' && !value) { year = new Date().getFullYear(); month = new Date().getMonth(); end = new Date(year, month + 1, 0).getDate(); } else if (obj_id === 'day' && value) { year = new Date(value).getFullYear(); month = new Date(value).getMonth() + 1; day = new Date(value).getDate(); end = new Date(year, month, 0).getDate(); } _results = []; for (init = _ref = init, _ref2 = end; _ref <= _ref2 ? init <= _ref2 : init >= _ref2; _ref <= _ref2 ? init++ : init--) { selected = ''; if (value) { if (obj_id === 'year' && init === new Date(value, 1).getFullYear()) { selected = 'selected'; } if (obj_id === 'month' && init === new Date(0, value).getMonth()) { selected = 'selected'; } if (obj_id === 'day' && init === new Date(year, month, day).getDate()) { selected = 'selected'; } if (obj_id === 'hour' && init === new Date(value).getUTCHours()) { selected = 'selected'; } if (obj_id === 'minute' && init === new Date(value).getUTCMinutes()) { selected = 'selected'; } } _results.push("<option value='" + init + "' " + selected + " >" + init + "</option>"); } return _results; }; days_in_month = function(year, month) { var end, init, _ref, _ref2, _results; $("#day").empty(); init = 1; end = new Date(year, month, 0).getDate(); _results = []; for (init = _ref = init, _ref2 = end; _ref <= _ref2 ? init <= _ref2 : init >= _ref2; _ref <= _ref2 ? init++ : init--) { _results.push($("#day").append("<option value='" + init + "'>" + init + "</option>")); } return _results; };
}).call(this);