var deleteHandlers = new Array();

dojo.declare('cms.module.Module', null, {

	type: 'module',
	deleteButton: null,
	deleteRowButton: new Array(),
	newRowButton: null,
	rowsButton: null,

	constructor: function(moduleDiv){
		this.moduleDiv = moduleDiv;
		this.id = dojo.attr(this.moduleDiv, 'id').substr(6);
		this.addMainButtonEvents();
		this.addRowButtonEvents(moduleDiv);
		//omdat het hier gaat om nieuws verwijder de deleteknop van de tekst
		if(null == deleteHandlers != false) {
			dojo.forEach(deleteHandlers,
				function(button){
					dojo.disconnect(button);
				}
			);
		}
		dojo.query("input[name='delete']", moduleDiv).forEach(dojo.destroy);
	},

	saveAndCloseEditor: function(){
		if (isEmpty(this.editor.editor))
			return;

		dojo.xhrPost({
			url: "/text/save",
			content: {textId:this.id, html:this.editor.editor.getData()},
			load: function(responseObject, ioArgs){
				return responseObject;
			},
			error: function(response, ioArgs){
				alert('Er is iets fout gegaan bij het opslaan. Probeer het opnieuw. U gaat niet langs start en ontvangt geen 200 euro!');
				return response;
			},
			handleAs: "json"
		});
		this.closeEditor(false);
	},

	newRow: function() {
		dojo.xhrPost({
			url: '/module/newRow',
			content: {'moduleContentId':this.id},
			load: function(responseObject, ioArgs){
				var moduleContentId = ioArgs.args.content.moduleContentId;
				if(moduleContentId == 1) {
				    window.location = '/news?newsitem=last';
				    return;
				}
				var contentDiv = dojo.byId('module'+moduleContentId);
				//maak een tijdelijke div aan waar de de response weer uit kan halen
				var tempDiv = dojo.create("div");
				tempDiv.innerHTML = responseObject;
				//Hier is er altijd maar 1 van
				var responseData = tempDiv.children[0];
				//zet hem neer voor het 2de kind :)
				contentDiv.insertBefore(responseData, dojo.query('.module>:nth-child(2)')[0]);
				//add events to the text area's
				
				//this.addRowButtonEvents(responseData);
				loadCss('/css/text.css');
				loadSyncJavascript('/js/text.js');
				addText(responseData);
				deleteButton = dojo.query("input[name='delete']", responseData)[0];
				for(i=0, len = deleteHandlers.length;i<len;i++){
				    if(deleteHandlers[i][0] == deleteButton){
					dojo.disconnect(deleteHandlers[i]);
					dojo.destroy(deleteButton);
					break;
				    }
				}
				dojo.query("input[name='edit']", responseData)[0].click();
			},
			error: function(response, ioArgs){
				console.log(response);
				console.log(ioArgs);
				alert('Er is iets fout gegaan bij het opslaan. Probeer het opnieuw. U gaat niet langs start en ontvangt geen 200 euro!');
				return response;
			},
			handleAs: "json"
		});
	},

	deleteRow: function(event) {
	    var confirmDelete = confirm('Are you sure you want to delete this item?');
	    if(!confirmDelete)
		return;

	    var buttonId = dojo.attr(event.target, 'name').substring(9);

	    dojo.xhrPost({
		url: "/module/removeRow",
		content: {'moduleRowId':buttonId},
		load: function(responseObject, ioArgs){
		    if(responseObject['succes'] == true){
			if(responseObject['moduleId'] == 1){
			    window.location = '/news?newsitem=last';
			    return;
			}
			//find the object
			rowId = ioArgs.args.content.moduleRowId;
			moduleRow = dojo.query('#product'+rowId)[0];
			/*
			textDiv = dojo.query(".editableText", moduleRow)[0];
			textId = dojo.attr(textDiv, 'id').substr(4);
			len = textObjects.length;
			for(i=0;i<len;i++){
				if(textId == textObjects[i].id){
					textObjects[i].destroy();
					break;
				}
			}
			*/
			dojo.destroy(moduleRow);
		    }
		},
		error: function(response, ioArgs){
		    console.log(response, 'delete news');
		    alert('Er is iets fout gegaan bij het verwijderen. Probeer het opnieuw. U gaat niet langs start en ontvangt geen 200 euro!');
		    return response;
		},
		handleAs: "json"
	    });
	},

	addMainButtonEvents: function(){
		this.newRowButtons = dojo.query("input[name='newRow']", this.moduleDiv);
		this.newRowButtons.connect('onclick', this, this.newRow);
	},

	addRowButtonEvents: function(element){
		this.deleteRowButtons = dojo.query("input[name^='deleteRow']", element);
		this.deleteRowButtons.connect('onclick', this, this.deleteRow);
	}

});

var moduleItems = new Array();

function addModuleToObject(moduleItem)
{
	//sla alle text objecten op in een array, zo kan je ze later terug vinden
	moduleItems.push(new cms.module.Module(moduleItem));
}

dojo.addOnLoad(function()
{
	//zet dit in een losse functie zodat hij ook later aangeroepen kan worden
	dojo.query(".module").forEach(addModuleToObject);
})

function addModuleRow(html)
{
	addModuleToObject(html);
	//zeg dat de text geedit moet worden
	dojo.query("input[name='edit']", html)[0].click();
}


