var DOM = YAHOO.util.Dom;

function ModeratorDialog() {
    var dialog, handlerObj, objectID, objType;
    var postBtn, oForm, redirectLink;
    var wait, error, errorMsg;
    var status;
    var dialogW = 300;
    var dialogH = 120;
    
    return {
    
    	show : function(iD, rL, aCt, type){
    		redirectLink = rL;
			oForm.id.value = iD; 		objectID = iD; 		// object id (community_id, user_id, idea_id)
			oForm.status.value = aCt; 	status = aCt; 		// featured,unfeatured
			oForm.objtype.value = type; objType = type; 	// user, community, idea
			handlerObj = getEl(aCt + '-link' + objectID);			
			
			var heaDER = getEl("moderatorConfHeader");
	    	
	    	if(aCt == "moderator") heaDER.update('Available moderator privileges?');			
			if(aCt == "nomoderator") heaDER.update('Unavailable privileges?');			
			
        	var position = DOM.getXY(handlerObj.id);
        	dialog.resizeTo(dialogW, dialogH);
			dialog.moveTo(position[0]-dialog.width+37, position[1]+19);
           	dialog.show(handlerObj);
    	},
    	
        init : function(){
        	oForm = DOM.get('moderator-form');
            wait = getEl('moderator-wait');
            error = getEl('moderator-error');
            errorMsg = getEl('moderator-error-msg');
            this.createDialog();
        },
    
        submitComment : function(){
            wait.radioClass('active-msg');

            YAHOO.util.Connect.setForm(oForm);

			var commentSuccess = function(o){
			
				//alert(o.responseText);
				//return;
				
            	var result = eval('new Object(' + o.responseText + ')');
                wait.removeClass('active-msg');
                if(result.errors.length == 0){
	                dialog.hide();
	                if(redirectLink == '' || redirectLink == null){
						if(status == "moderator"){
							DOM.get("moderatorTD" + objectID).style.display = "none";
							DOM.get("nomoderatorTD" + objectID).style.display = "";
						}
						if(status == "nomoderator"){
							DOM.get("moderatorTD" + objectID).style.display = "";
							DOM.get("nomoderatorTD" + objectID).style.display = "none";
						}
					}
					else{
						setTimeout(location = redirectLink, 100);
					}
				}
				else{
                    error.radioClass('active-msg');
                    var err = '';
                    for(i in result.errors){
                    	err += '<div class="Error">' + result.errors[i] + '</div>\n';
                    }
                    dialog.resizeTo(dialogW, dialogH+30);
                    errorMsg.update(err);
				}
            };

            var commentFailure = function(o){
                error.radioClass('active-msg');
                errorMsg.update('Unable to connect.');
            };
            
            YAHOO.util.Connect.asyncRequest('POST', 'query_wrapper.php',
                    {success: commentSuccess, failure: commentFailure});
        },
        
        createDialog : function(){
            dialog = new YAHOO.ext.BasicDialog("moderator-dlg", {
					draggable: false,
                    modal:false,
                    width: dialogW,
                    height: dialogH,
                    shadow:true,
                    minWidth:dialogW,
                    minHeight:dialogH,
                    resizable: false
            });

            dialog.addKeyListener(27, dialog.hide, dialog);
            dialog.addKeyListener(13, this.submitComment, this);
            
            postBtn = getEl('moderator-post-dialog-btn');
            postBtn.on('click', this.submitComment, this);

            cancelBtn = getEl('moderator-cancel-dialog-btn');
            cancelBtn.on('click', dialog.hide, dialog);

            dialog.on('hide', function(){
                wait.removeClass('active-msg');
                error.removeClass('active-msg');
            });
            
            dialog.on('show', function(){
				postBtn.focus();
            });
        }
    };
};

var ModeratorEntity = new ModeratorDialog();
YAHOO.ext.EventManager.onDocumentReady(ModeratorEntity.init, ModeratorEntity, true);
