dojo.require("dijit.InlineEditBox");
dojo.require("dijit.form.Textarea");
dojo.require("dijit.Dialog");

function createIEB(id) {
    eb = new dijit.InlineEditBox({
            editor: "dijit.form.Textarea",
            autoSave: false,
            onChange: function() { saveClick(this.id.substr(3),this.value); },
            onCancel: function() { editCancelClick(this.id.substr(3)); }
        },id);
	eb.cancel();
	dojo.style(id,'display','none');
}

function deleteClick(id) {
	dojo.byId('quoteNumber').innerHTML = id;
	getQuote(id);
	dijit.byId('confirm').show();	
}

function editClick(id) {
	dojo.style('box' + id,'display','none');
	dojo.style('ieb' + id,'display','');
	dojo.style('edit-button' + id, 'display','none');
	dijit.byId('ieb' + id).edit();
}

function saveClick(id,value) {
	dojo.byId('box' + id).innerHTML = '<div class="loading"><img src="/images/loading.gif" /></div>';
	dojo.style('box' + id,'display','');
	dojo.xhrPost({
	url: '/quote/edit/',
	content: { quote: id, qtext: value },
	load: function(response) { if(response == 'success') { updateQuote(id); }},
    error: function(x) {
       alert("ERROR\n");
    }});
}

function updateQuote(id) {
	dojo.xhrGet({
	    url: "/quote/get",
		content: {quote: id },
	    load: function(result) {
	        if(result == 'error') {
		        alert('sorry, something went wrong');
	        }
	        else {
	        	dojo.style('ieb' + id,'display','none');
	        	dojo.byId('box' + id).innerHTML = result;
	        	dojo.style('box' + id,'display','');
	        	dojo.style('edit-button' + id,'display','');
	        }
	    }
	});
}

function getQuote(id) {
	dojo.xhrGet({
	    url: "/quote/get",
		content: {quote: id },
	    load: function(result) {
	        if(result == 'error') {
		        alert('sorry, something went wrong');
	        }
	        else {
	        	dojo.byId('quote').innerHTML = result;	        	
	        }
	    }
	});	
}

function editCancelClick(id) {
	dojo.style('ieb' + id,'display','none');
	dojo.style('box' + id,'display','');
	dojo.style('edit-button' + id,'display','');
}

function confirmCancelClick() {
	dojo.byId('quote').innerHTML = '';
	dijit.byId("confirm").hide();
		  
}

function deleteQuote() {
	id = dojo.byId('quoteNumber').innerHTML;
	dojo.xhrPost({
		url: '/quote/delete/',
		content: { quote: id},
		load: function(response) { if(response == 'success') { removeQuote(id); } else { alert(response); }},
	    error: function(x) {
	       alert("ERROR\n" + x);
	    }});
}

function removeQuote(id) {
	dijit.byId('confirm').hide();
	//dojo.style('item' + id,'display','none');
	node = dojo.byId('item' + id);
	if(node != null) {
	 	dojo.fx.wipeOut( { node: node, onEnd: function() { dojo.destroy(node); } }).play();
	}
}

function restoreClick(id) {
	dojo.xhrPost({
		url: '/quote/restore/',
		content: { quote: id},
		load: function(response) { if(response == 'success') { removeQuote(id); } else { alert(response); }},
	    error: function(x) {
	       alert("restore error\n" + x);
	    }});
}

function rateClick(id) {
	changeRateIcon(id,'loading');
	dojo.xhrPost({
		url: '/quote/rate/',
		content: { quote: id},
		load: function(response) { if(response == 'success') { changeRateIcon(id,'success'); } else { changeRateIcon(id,'error'); }},
	    error: function(x) {
	       alert("ERROR\n" + x);
	    }});
}

function changeRateIcon(id,to) {
	box = dojo.byId('rateBox' + id);
	if(to == 'loading') {
		box.innerHTML = '<img src="/images/loadingsmall.gif" />';
	}
	else if(to == 'success') {
		box.innerHTML = '<img src="/images/ratedone.png" />';
	}
	else {
		box.innerHTML = '<img src="/images/star.png" />';
	}
}

function approveClick(id) {
	dojo.xhrPost({
		url: '/quote/approve/',
		content: { quote: id},
		load: function(response) { if(response == 'success') { removeQuote(id); } else { alert(response); }},
	    error: function(x) {
	       alert("ERROR\n" + x);
	    }});
}

function deleteCommentClick(id) {
	if (confirm("You are about to delete a comment!")) { 
		dojo.xhrPost({
			url: '/quote/deletecomment/',
			content: { comment: id},
			load: function(response) { if(response == 'success') { removeComment(id); } else { alert(response); }},
		    error: function(x) {
		       alert("ERROR\n" + x);
		    }});
	}
}

function removeComment(id) {
	node = dojo.byId('comment' + id);
	if(node != null) {
	 	dojo.fx.wipeOut( { node: node, onEnd: function() { dojo.destroy(node); } }).play();
	}
}

function myLoad() {
	dojo.addOnLoad(function() { dojo.query(".ieb").forEach(function(e) { createIEB(e.id); } ); });
	dojo.query('button[id^="edit-button"]').connect("onclick",function(b) { editClick(b.target.value); } );
	dojo.query('button[id^="delete-button"]').connect("onclick",function(b) { deleteClick(b.target.value); } );
	dojo.query('button[id^="restore-button"]').connect("onclick",function(b) { restoreClick(b.target.value); } );
	dojo.query('button[id^="approve-button"]').connect("onclick",function(b) { approveClick(b.target.value); } );
	dojo.query('button[id^="rate-button"]').connect("onclick",function(b) { rateClick(b.target.value); } );
	dojo.query('button[id^="delete-comment-button"]').connect("onclick",function(b) { deleteCommentClick(b.target.value); } );
	dojo.query("button").forEach(function(e) { e.disabled = false; } );
	var preloadedImage = (new Image()).src = "/images/loading.gif";
	var preloadedImage = (new Image()).src = "/images/loadingsmall.gif";
	var preloadedImage = (new Image()).src = "/images/ratedone.png";
	var preloadedImage = (new Image()).src = "/images/star.png";
	
}
