/*
	Requires:
	
    <div id="feedbackboxcontainer" style="overflow:hidden; height:0px; padding-top:14px;"></div>
	
*/

var FeedbackBox = new Class({
							  
	messages : [],
	feedbackbox : null,
	feedbackboxcontainerid : 'feedbackboxcontainer',
	messagetableheader : null,
	messagetablebody : null,
	messagetablefooter : null,
							  
	initialize : function(messages, cssfontsize, csscorners) {
		
		if(cssfontsize == '11px') {
			this.cssfontsize = '11px;';
		} else {
			this.cssfontsize = '12px;';
		}
		
		if(csscorners == true) {
			this.csscorners = 'rounded-corners4px';
		} else {
			this.csscorners = null;
		}	
		
		
		if($type(messages) == 'array' || $type(messages) == 'object') {
			this.messages = messages;
		} else {
			alert('feedbackbox.initialize(messages): Argument "messages" must be of type array');
			return;
		}
		
		this.build();
		
	},
	
	//use to set a different div than feedbackboxcontainer for displaying the feedback
	setCustomFeedbackboxcontainerId : function(id) {
		this.feedbackboxcontainerid = id;
	},
							  
	reset : function() {
		
		if($chk($(this.feedbackboxcontainerid))) {
			$(this.feedbackboxcontainerid).set('html','');
		}
		
	},
	
	hide : function(instant) {
		
		if(!$chk(instant)) {
		
			if($chk($(this.feedbackboxcontainerid))) {
				$(this.feedbackboxcontainerid).tween('height',0);
				this.reset();
			}
		
		} else {
			
			if($chk($(this.feedbackboxcontainerid))) {
				$(this.feedbackboxcontainerid).setStyle('height',0);
				this.reset();
			}
			
		}
		
	},
	
	show : function() {
		
		this.reset();
		this.feedbackbox.inject($(this.feedbackboxcontainerid));		
		$(this.feedbackboxcontainerid).tween('height', (this.feedbackbox.getSize().y+7));
		
	}
							  
});

var SuccessBox = new Class({
	
	Implements : FeedbackBox,
	
	build : function() {

		this.feedbackbox = new Element('div',{'id':'feedbackbox' + Math.floor(Math.random()*1000+1), 'class':'successdisplay ' + this.csscorners, 'align':'left', 'style':'padding:14px;'});
		this.messagetableheader = '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
		this.messagetablebody = '';
		for(var i = 0; i < this.messages.length; i++) {
			this.messagetablebody = this.messagetablebody + this.getRow(this.messages[i]);
		}
		this.messagetablefooter = '</table>';
		this.feedbackbox.set('html',(this.messagetableheader + this.messagetablebody + this.messagetablefooter));
	
	},
	
	getRow : function(message) {
		return('<tr><td width="16" valign="top"><img src="/images/icons/accept.png" style="margin-top:1px;" width="16" height="16" border="0" hspace="4" vspace="2" /></td><td width="7"></td><td class="successmessage" valign="top" style="padding-top:2px; font-size:' + this.cssfontsize + '; padding-bottom:7px;">' + message + '</td></tr>');
	}
	
});

var ErrorBox = new Class({
							  
	Implements : FeedbackBox,
	
	build : function() {


		this.feedbackbox = new Element('div',{'id':'feedbackbox' + Math.floor(Math.random()*1000+1), 'class':'errordisplay ' + this.csscorners, 'align':'left', 'style':'padding:14px;'});
		this.messagetableheader = '<table border="0" cellpadding="0" cellspacing="0">';
		this.messagetablebody = '';
		for(var i = 0; i < this.messages.length; i++) {
			this.messagetablebody = this.messagetablebody + this.getRow(this.messages[i]);
		}
		this.messagetablefooter = '</table>';		
		this.feedbackbox.set('html',(this.messagetableheader + this.messagetablebody + this.messagetablefooter));

	},
	
	getRow : function(message) {
		return('<tr><td width="16" valign="top"><img src="/images/icons/exclamation.png" style="margin-top:1px;" width="16" height="16" border="0" haspace="4" vspace="2" /></td><td width="7"></td><td class="errormessage" valign="top" style="padding-top:2px; font-size:' + this.cssfontsize + '; padding-bottom:7px;">' + message + '</td></tr>');
	}
							  
});
