/*
* Copyright (c) 2010 Alexander Wiederhold
*/

/* Media */
function Media(type)
{
    var im = this;
    im.type = type;
    im.limit = im.type == 'comment' ? 30 : 30;

    im.limitCnt = 0;
    im.cancel = false;

    im.loaded = false;
    im.files = {};
    im.initvars = {};
    im.p = '/js/external/uploadify';
    im.lnk = null;

    im.manager = function(e) {
        im.lnk = e;

        jQuery(im.lnk).append(loading);

        if (jQuery('#media:hidden').length > 1)
            jQuery('#media:hidden').remove();

        if (!im.loaded) {
            jQuery.get(im.p + '/uploadify.css', function(css) {
                jQuery('head').append('<style>'+css+'</style>');
            });

            jQuery.getScript(im.p + '/swfobject.js', function(){
                im.uploadify();
            });

            im.loaded = true;
        }
        else if (jQuery('#media:hidden').length < 1) {
            im.media();
        } else if (jQuery('#media:hidden').length == 1) {
            jQuery(im.lnk).find('img').remove();
            jQuery('#media').show();
        }
    }

    im.uploadify = function() {
        jQuery.getScript(im.p + '/jquery.uploadify.v2.1.0.js', function(){
            im.media();
        });
    }

    im.media = function() {
        if (typeof im.initvars == 'undefined')
            im.initvars = '';

        jQuery.post('/ajax/media/manager.php', {'init': im.initvars, 'type': im.type}, function(data) {
            jQuery('#media').html(data);
            jQuery('#getmanager').hide();

            im.init();
        });
    }

    im.init = function() {
        d = {};
        d[ssn.n] = ssn.id;
        d['type'] = im.type;

        var path = '/archive/images/';
        path += im.type == 'comment' ? 'comments/thumbs' : 'gallery/gal/thumbs/';

        jQuery('#file').uploadify({
            'uploader': '/swf/uploadify.swf',
            'script': '/ajax/media/upload.php',
            'scriptData': d,
            'method': 'GET',
            'folder': path,
            'cancelImg': im.p + '/cancel.png',
            'expressInstall': '/swf/expressInstall.swf',
            'multi': true,
            'buttonText': 'Durchsuchen',
            'wmode': 'transparent',
            'auto': true,
            'queueID': 'fileQueue',
            'onComplete': function(event, queueID, fileObj, reposnse, data) {
                im.oncomplete(event, queueID, fileObj, reposnse, data);
            },
            'onInit': function() {
                jQuery("#media object").focus();

                if (im.files.length > 0) {
                    jQuery('#media-ctr').empty();

                    jQuery.each(im.files, function(i, v) {
                        im.add(v);
                    });

                    im.limitCnt = jQuery('[id^=zmp-]').length;
                }
            }
        });

        jQuery(im.lnk).find('img').remove();
    }

    im.oncomplete = function(event, queueID, fileObj, json, data) {
        eval('var response=' + json);
        im.add(response);
        im.chklimit(queueID);
    }

    im.add = function(data) {
        var i = data['id'];

        jQuery('div#uploaded').append(data['html']);
        jQuery('div#media-ctr').append('<input type="hidden" name="media[]" value="' + i + '" id="zmv-'+ i + '" />');
    }

    im.remove = function(i) {
        jQuery.post('/ajax/media/delete.php', { 'id': i, 'type': im.type }, function() {
            if (typeof i == 'undefined')
                jQuery('#zmv-, #zmp-').remove();
            else
                jQuery('#zmv-' + i + ', #zmp-' + i).remove();

            im.chklimit();
        });
    }

    im.chklimit = function(queueID) {
        im.limitCnt = jQuery('[id^=zmp-]').length;

        if (queueID == null) {
            if (im.limitCnt >= im.limit) {
                jQuery('#add_image_ext').attr('disabled', 'disabled');
            }
            else {
                jQuery('#add_image_ext').attr('disabled', '');
            }
        }

        if (im.limitCnt >= im.limit && jQuery('#fileUploader').is(':visible')) {
            if (typeof queueID != null) {
                jQuery('#file').uploadifyCancel(queueID);
                jQuery('#file').uploadifyClearQueue();
            }

            jQuery('#fileUploader').hide();
            jQuery('#fileUploader').after('<span id="c-max-images">Maximale Bilderanzahl (' + im.limit + ') erreicht.</span>');
        }
        else if (jQuery('#fileUploader').is(':hidden')) {
            jQuery('#fileUploader').show();
            jQuery('#c-max-images').remove();
        }

        /* Link Hervorhebung */
        if (jQuery('#opt_photo').length) {
            if (im.limitCnt > 0) {
                var ac = 'apfeil_i';
                var rc = 'apfeil_a';
            }
            else {
                var ac = 'apfeil_a';
                var rc = 'apfeil_i';
            }

            jQuery('#opt_photo').removeClass(rc)
                .addClass(ac);
        }
    }

    im.loader = function(e, d) {
        if (d) {
            jQuery(e).removeClass('ajax-loader').addClass('highlight');
        }
        else {
            jQuery(e).val('').removeClass('highlight').addClass('ajax-loader');
        }
    }

    im.upload = function() {
        jQuery('#file').uploadifyUpload();
    }

    im.toeditor = function(name, e)
    {
        var img = '<img border="0" src="' + name + '" />';
        tinyMCE.execCommand('mceInsertRawHTML', false, img);
        var area = jQuery('textarea:visible').not('[name^=b_comm]');

        if (jQuery(area).length)
            insertAtCaret(jQuery(area).attr('id'), ' [img]' + name + '[/img] ');

        var area = jQuery('#b_comm');

        if (jQuery(area).length)
            insertAtCaret('b_comm', img);
    }

    im.downExternal = function(i, b) {
        jQuery(b).attr('disabled', 'disabled')
            .before('<img id="preloader" src="/images/preloader.gif">');

        var v = jQuery(i).val();
        jQuery('#m-error').remove();

        if (v.length < 7) {
            jQuery(b).after('<div id="m-error" style="color: #c00">Bitte geben Sie ein URL zum Bild ein</div>');
            jQuery('#m-error').show();
            jQuery(b).attr('disabled', '');
            jQuery('#preloader').remove();
            return;
        }

        jQuery.post('/ajax/media/get.php', { 'url': v, 'type' : im.type }, function(r) {
            jQuery(b).attr('disabled', '');
            jQuery('#preloader').remove();

            eval('var response=' + r);
            im.add(response);
            im.chklimit(null);
        });
    }
}

var m = new Media('comment');
var em = new Media('event');


