/* --------------------------------------------------------------------
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);
}
}
});
});