/* -------------------------------------------------------------------- Peafowl JS http://www.chevereto.com/ @version 1.8 @author Rodolfo Berríos --------------------------------------------------------------------- */ // Shake fn jQuery.fn.shake = function(){ this.each(function(init){ var jqNode = $(this); jqNode.css({position: 'relative'}); for (var x=1; x<=2; x++){ jqNode.animate({ left: -10 },0) .animate({ left: 0 },30) .animate({ left: 10 },30) .animate({ left: 0 },30); } }); return this; } // Exists fn jQuery.fn.exists = function(){return jQuery(this).length>0;} $(function (){ /*** vars ***/ var uploadID = "#upload"; var upload_action = "#upload-action"; var active_class = "active"; var error_box = "#error-box"; var error_boxID = error_box.substring(1); // Don't edit /*** upload selector ***/ var select_remote = "#select-remote"; var select_local = "#select-local"; var upload_local = "#upload-local"; var upload_remote = "#upload-remote"; /*** tools ***/ var preferences = "#preferences"; var preferences_box = "#preferences-box"; var upload_button = "#upload-button"; var pref_shorturl = "#pref-shorturl"; /*** inputs ***/ var url_input = "#url"; var resize_input = "#resize"; var preferences_box_input = preferences_box + " input"; /*** boxes ***/ var upload_remote = "#upload-remote"; var resizing = "#resizing"; /*** resize switch ***/ var resizing_switch = "#resizing-switch"; var resizing_box = "#resizing-box"; /*** uploadify ***/ var UploadifyID = "#uploadify"; var fileQueue = "#fileQueue"; /*** messages ***/ var cancel_upload_msg = "Do you really want to cancel the process?"; var empty_form_msg = "You must complete part of the form in order to continue"; var local_error_msg = "No image has been uploaded"; /*** txt ***/ var just_uploaded_txt = "Just uploaded"; var images_txt = "images"; /*** misc ***/ var cancel_upload = "#cancel-upload"; var empty_upload_class = "empty-upload"; var error_class = "error"; var show_upload_class = "show_upload"; var hide_upload_class = "hide_upload"; var uploading_class = "uploading"; /*** uploaded_list ***/ var content = "#content"; var uploaded_list = "#uploaded_list"; var viewing = "#viewing"; var imgWeight = "#imgWeight"; var imgDimentions = "#imgDimentions" var view_full_image = "#view-full-image"; var img_full_image = "img#full_image"; var socialize = "#socialize"; var short_url = "#short-url"; var loading_changeID = "loading"; /*** multicodes ***/ var multi_codes = "multi-codes"; var base_url = "http://www.turboimg.com/"; /*** sticky footer ***/ var footer_height = $('#in-foot').outerHeight(true)+1; $("#wrap").css('margin-bottom', -footer_height); $("#wrap").append('
'); $("#push").css('height', footer_height); $(footer_height).css('height', footer_height); /*** reset form */ $(uploadID).each(function() { this.reset(); }); /*** popups ***/ $("a[rel='pop-up']").click(function () { var pop_w = '650'; var pop_h = '350'; var pop_left = (screen.width/2)-(pop_w/2); var pop_top = (screen.height/2)-(pop_h/2); var settings = "height="+pop_h+", width="+pop_w+", scrollTo, resizable=1, scrollbars=1, location=0, top="+pop_top+", left="+pop_left; window.open(this.href, 'Popup', settings); return false; }); /*** error show fx ***/ // This prepend + slide the error boxes. function errorShow(errorMsg, errorClass) { $(uploadID).prepend(''); $(error_box).slideDown(); if($(upload_button).hasClass("uploading")) { $(upload_action).fadeOut(); } } /*** reactivate upload fx ***/ // When the upload has failed, this re-activates the form. function reactivateUpload() { $(upload_button).html('Upload').removeClass(uploading_class); $(cancel_upload).css('display', 'none'); $(preferences_box_input + "," + resize_input + "," + url_input).removeAttr('disabled'); $(upload_action).fadeIn(); $(UploadifyID).uploadifyClearQueue(); $(url_input).val(""); } /*** error click fx ***/ function errorClick() { $(error_box).slideUp(250, function() { $(error_box).remove() }); } /*** onlive do the fx... ***/ $(error_box).live('click', function() { errorClick(); reactivateUpload(); }); /*** focus source ***/ // I know that is fast/easy/pretty to use hide()/show() or fade but that will break the Flash queue. // And it's just a weird flash issue. function focusSource(toActive, toRest, toHide, toShow) { $(toActive).addClass(active_class); $(toRest).removeClass(active_class); $(toHide).addClass(hide_upload_class).removeClass(show_upload_class); $(toShow).addClass(show_upload_class).removeClass(hide_upload_class); } function focusRemote() { focusSource(select_remote, select_local, upload_local, upload_remote); } function focusLocal() { focusSource(select_local, select_remote, upload_remote, upload_local); } /*** function isuploading ***/ function isUploading() { return $(upload_button).hasClass(uploading_class); } /*** upload selector magic ***/ $(select_remote).click(function () { if($(upload_remote).hasClass(hide_upload_class) && !isUploading()) focusRemote(); }); $(select_local).click(function () { if($(upload_local).hasClass(hide_upload_class) && !isUploading()) focusLocal(); }); /*** preferences ***/ $(preferences).click(function () { if(!isUploading()) { $(preferences_box).slideToggle("normal", "easeOutBounce"); $(this).toggleClass(active_class); } }); /*** pref-shorturl ***/ $(pref_shorturl).prop('checked', false); $(pref_shorturl).change(function(){ var bool_doShort = $(this).is(':checked') ? '1':'0'; var doShort = '/content/system/js/pref.php?doShort='+bool_doShort; $(UploadifyID).uploadifySettings('scriptData',{'sID': 'e93fe8cc102b1aed701ba8c441af586e', 'doShort': $(pref_shorturl).is(':checked')}); $.ajax({url: doShort}); }); /*** resizing ***/ $(resizing_switch+" a").click(function () { if(!isUploading()) { $(resizing_box).slideToggle("normal"); $(this).toggleClass(active_class); } }); /*** validate input fields ***/ $(uploadID).validate({ rules: { url : { required: false, url: true }, resize: { required: false, digits: true, min: 16, max: 1280 } }, messages: { url: false, resize: false } }); /*** upload ***/ $(upload_button).click(function () { // Do something... if($(fileQueue).text()!=='' || $(url_input).val()!=='') { // Remove class error in #url and Focus in if($(fileQueue).text()!=='') { $(url_input).removeClass(error_class) focusLocal(); } else { focusRemote(); } if($(this).hasClass(uploading_class)==false && $(resize_input).hasClass(error_class)==false && $(url_input).hasClass(error_class)==false) { // No errors... Do the upload. errorClick(); $(this).addClass(uploading_class); $(this).html('Uploading'); $(cancel_upload).fadeIn(); $(preferences_box_input + "," + resize_input + "," + url_input).attr('disabled', 'disabled'); // Call the upload... if($(fileQueue).text()!=='') { $(UploadifyID).uploadifyUpload(); } else { $.post("/upload.php", { url: $(url_input).val(), resize: $(resize_input).val()}, function(response) { // on 500 this is just skipped. on 200 (meaning that error_reporting is on) this gives null response if(response !== null) { if (response.error == "true") { errorShow("Error: "+response.errorMsg); } else { // Redirect url upload window.location = "/?v="+response.ImgName; } } else { console.log("Fatal error on upload.php"); errorShow(local_error_msg+" (null)"); } }, 'json').error(function(data) { errorShow(local_error_msg); }); } } else { // erros... Shake it. if($(resize_input).hasClass(error_class)) { $(resizing).shake(); } if($(url_input).hasClass(error_class)) { $(upload_remote).shake(); } } } else { // Do something if($(error_box).hasClass(empty_upload_class)) { $(error_box).shake(); } else { // No error box.. Start a new one or just replace text? if($(error_box).text()=='') { errorShow(empty_form_msg, empty_upload_class); } else { $(error_box+" span").html(empty_form_msg); $(error_box).addClass(empty_upload_class); } } } }); /*** cancel upload ***/ $(cancel_upload).click(function () { if(confirm(cancel_upload_msg)) { window.location.reload(true); } }); /*** change functions ***/ function change_html_txt(selector, search, replace) { $(selector).html($(selector).html().replace(search, replace)); } function change_attr(selector, attr, search, replace) { $(selector).each(function(index) { $(this).attr(attr,$(this).attr(attr).replace(search, replace)); }); } /*** Select inputs ***/ $(".image-tools-section input, #multi-codes textarea").click(function() { this.focus(); this.select(); }); /*** uploadify ***/ // Catch the images ImagesUp = ''; $(UploadifyID).uploadify({ 'uploader' : '/content/system/js/uploadify.swf', 'expressInstall' : '/content/system/js/expressInstall.swf', 'fileDataName' : 'ImageUp', 'script' : '/upload.php', 'fileExt' : '*.jpg;*.jpeg;*.png;*.gif;*.bmp', 'fileDesc' : 'Image Files (.JPG, .PNG, .GIF, .BMP)', 'scriptData' : {'sID': 'e93fe8cc102b1aed701ba8c441af586e', 'doShort': $(pref_shorturl).is(':checked')}, 'sizeLimit' : 4718592, // Bytes 'queueID' : 'fileQueue', 'queueSizeLimit' : 5, 'simUploadLimit' : 1, 'auto' : false, 'multi' : true, 'removeCompleted' : false, 'scriptAccess' : 'always', 'buttonText' : 'SELECT FILES', 'onSelect' : function(event,ID,fileObj) { queue_item_error = $(fileQueue+" .uploadifyError"); if(queue_item_error.length > 0) { $(fileQueue+" .uploadifyError").each(function() { $(this).remove(); }); $(error_box).trigger("click"); } }, 'onError' : function (event,ID,fileObj,errorObj) { var _onError_explained = errorObj.type + ' Error: ' + errorObj.info; console.log(_onError_explained); }, 'onComplete' : function(event, queueID, fileObj, response, data) { eval("var response="+response); if (response.error == "true") { // SERVER SIDE ERROR $(UploadifyID+queueID).addClass("uploadifyError") .find('.byteSize').remove() .find('.status').remove(); $(UploadifyID+queueID+" span.percentage").html(response.errorMsg); return false; } else { // SERVER SIDE OK ImagesUp += response.ImgName; } }, 'onAllComplete' : function(event, data) { if(ImagesUp!=='') { // One or more images uploaded if(data.filesUploaded==1) { window.location = "/?v="+ImagesUp; } else { window.location = "/?uploaded"; } } else { errorShow(local_error_msg); } } }); });