var l;
var p;
window.addEvent('domready', function(){
	CT_LayerLink.layerUrlPrefix = 'layer/';
	l = new CT_Layer();
	l.addEvent('hide', function(){
        //var xy = $(window).getScroll();
		CT_Tools.setAnchor("alle-beitraege");
        //$(window).scrollTo(xy.x, xy.y);
	});
	
	p = new CT_Processor();
	p.registerList([CT_HoverItem, CT_Label, CT_LayerLink, CT_LayerForm, LayerFileUpload, CenterLayer, UploaderPlugin, NG_SubmissionItem]);
	p.process($(document.body));
	if(mainNav) $(mainNav).addClass('active');
});

var LayerFileUpload = new Class();
LayerFileUpload.onMatch = function(el, match){
	var iFrame = new iFrameFormRequest(el,{
		onComplete: function(response){
			CT_Layer.current.fill(response);
		}
	});
};
LayerFileUpload.matchList = ["form.LayerFileUpload"];

var CenterLayer = new Class();
CenterLayer.onProcess = function(el){
	if(el == CT_Layer.current.layer){
		var pageX = $(document.body).getSize().x;
		//var pageY = $(document.body).getSize().y;
		el.setStyle('left', pageX / 2 - el.getSize().x / 2);
		//el.setStyle('top', pageY / 2 - el.getSize().y / 2);
		
		var scrollHeight = $(window).getScroll().y;
		if(scrollHeight < 130) scrollHeight = 150;
		else scrollHeight += 20;

        if(scrollHeight > 1200) scrollHeight = 1200;
		el.setStyle('top', scrollHeight);
	}
};

var UploaderPlugin = new Class();
UploaderPlugin.matchList = ["div.NG_ImageUploader"];
UploaderPlugin.onMatch = function(el, match){
	var uploader = new qq.FileUploader({
		element: el,
		template: '<div class="qq-uploader" style="display:none">' +
					 '<div class="qq-upload-drop-area"></div>' +
                '<div class="qq-upload-button"></div>' +
                '<ul class="qq-upload-list"></ul>' + 
             '</div>',
		action: 'ajax/wettbewerb/hochladen/' + el.innerHTML + '/',
		debug: false,
        multiple: false,
        size: 2*1024*1024,
        button:$('Uploader_Button'),
        allowedExtensions:['jpg', 'jpeg', 'png', 'gif'],
        onSubmit: function(id, file){
            $('Uploader_State').innerHTML = 'Lade hoch...';
            return true;
        },
		onComplete:function(id, file, response){
			if(response.error) $('Uploader_State').innerHTML = response.error;
			else if(response.success){
				$('Uploader_Preview').set('src', response.image);
                $('Uploader_State').innerHTML = 'Das Bild wurde hochgeladen.';
			}

            /*($('Uploader_Button')[0]).empty();
            ($$('div.NG_ImageUploader')[0]).empty();

            UploaderPlugin.onMatch($$('div.NG_ImageUploader')[0]);*/
		},
        showMessage: function(m){
            $('Uploader_State').set('text', m);
        },
        messages: {
            typeError: "Es sind nur JPG-, PNG- und GIF-Dateien zulässig.",
            sizeError: "Die Datei darf nicht größer als 2 MB sein.",
            minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.",
            emptyError: "Die Datei ist leer.",
            onLeave: "Es werden gerade Dateien hochgeladen."
        }
	});
};

var NG_SubmissionItem = new Class({
	initialize: function(el, match){
		el.addEvent('click', function(){
            showSubmissionItem(el.get('rel'), true, el.hasClass('AdminItem'));
		});
	}
});
function showSubmissionItem(id, addToHistory, adminMode){
    if(addToHistory == null || addToHistory){
        CT_Tools.setAnchor("beitrag-" + id);
    }

    if(adminMode)
        CT_Layer.current.load('layer/wettbewerb/beitrag/' + id + '/?admin=1');
    else
        CT_Layer.current.load('layer/wettbewerb/beitrag/' + id + '/');
}
NG_SubmissionItem.matchList = [".NG_SubmissionItem"];

// Competition helpers
function getPreviousCompetitionItem(currentId){
	var items = $('submissionsList').getElements('.NG_SubmissionItem'),
		i = items.length,
		id,
		targetId;
	while (i--) {
		id = items[i].get('rel');
		if (id == currentId) {
			targetId = i - 1;
			break;
		}
	}
	if (targetId >= 0){
		showSubmissionItem(items[targetId].get('rel'), true);
	} else {
		if($('submissionsListPreviousPage')){
			$('submissionsList').addEvent('loaded', _onGetPreviousCompetitionItemPageLoaded);
			$('submissionsListPreviousPage').onclick();
		}
	}
}
function _onGetPreviousCompetitionItemPageLoaded(){
	$('submissionsList').removeEvent('loaded', _onGetPreviousCompetitionItemPageLoaded);
	
	items = $('submissionsList').getElements('.NG_SubmissionItem');
	if(items.length > 0) showSubmissionItem(items[items.length - 1].get('rel'), true);
}
function _onGetNextCompetitionItemPageLoaded(){
	$('submissionsList').removeEvent('loaded', _onGetNextCompetitionItemPageLoaded);
	
	items = $('submissionsList').getElements('.NG_SubmissionItem');
				if(items.length > 0) showSubmissionItem(items[0].get('rel'), true);
}
function getNextCompetitionItem(currentId){
	var items = $('submissionsList').getElements('.NG_SubmissionItem'),
		i = items.length,
		id,
		targetId;
	while (i--) {
		id = items[i].get('rel');
		if (id == currentId) {
			targetId = i + 1;
			break;
		}
	}
	if (targetId && targetId < items.length){
		showSubmissionItem(items[targetId].get('rel'), true);
	} else {
		if($('submissionsListNextPage')){
			$('submissionsList').addEvent('loaded', _onGetNextCompetitionItemPageLoaded);
			$('submissionsListNextPage').onclick();
		}
	}
}

function refreshRating(itemId, rating){
    var items = $('submissionsList').getElements('.NG_SubmissionItem'),
    i = items.length,
    el;

    while(i--){
        if(items[i].get('rel') == itemId){
            el = items[i];
            el.getElement('.votingText').set('text', rating);
        }
    }
}

function showPlaceholder(element, text){
	if(element.get('value') == ''){
		element.set('value', text);
		element.addClass('placeholder');
	}
}

function hidePlaceholder(element, text){
	if(element.get('value') == text){
		element.set('value', '');
		element.removeClass('placeholder');
	}
}
