var TagBar = Class.create();

TagBar.prototype = {
	me:			null,
	baseURL:	"",
	params: 	{},
	uid:		0,
	
	initialize: function (url){
		
		if (arguments[2])
		{
		// create popup
		var div = document.createElement('DIV');
			div.id = 'tag_popup';
			div.barObj = this;
			div.innerHTML = '<form action="" method="post" name="tagForm" onsubmit="return false;">	\
				<div class="Tags-Title"><span class="BoldTitle">Enter your tags below.</span> Use commas to separate tags.</div>	\
				<div class="Tags-Title">Examples: sci-fi, manga, anime, dvd</div>	\
				<div class="Tags-Title"><textarea rows="3" cols="10" class="Tags-Textarea" id="tags_area"></textarea></div>	\
				<div class="Tags-Submit"><input type="image" src="/images/btn_save_tags.gif" onclick="$(\'tag_popup\').barObj.submitTags()" /></div>	\
				<div class="Tags-Alert" id="tags_alert"></div>	\
			</form>';
			
		// add popup to document node
		document.body.appendChild(div);
		}
		
		// some params
		this.params = arguments[1];
		
		// set url
		if (url)
			this.baseURL = url;
			
		// userid
		this.uid = arguments[2];
		
		if (!this.uid) {
			
			try {
				$('tag').onclick = function(event) {
					var event = event || window.event;
					location.href = 'https://www.animewild.com/create_account.php';
					return false;
				};
			} catch (err) {}
			
			try {
				$('tag_this').onclick = function(event) {
					var event = event || window.event;
					alert('Please register or login to send tags!');
					return false;
				};
			} catch (err) {}

			return false;
		}
		
		// initialize popup div and attach them to the tag link
		var popup = new NewPopup('tag_popup', {target: ['tag','tag_this'], height: 105, beforeClose: this.beforeClose, callerObj: this});
		this.me = popup;

		// set tags
		try {
			if (this.params.tags)
				$('tags_area').value = this.params.tags;
		} catch (err) {}
		
	},
	
	submitTags: function() {
		var tags = $('tags_area').value;
		var callerObj = this;
		
		callerObj.hideError();
		
		if (tags)
		{
			// Ajax request
			var opt = {
				method: 'post',
				postBody: "tags=" + tags + 
					"&categories_id=" + callerObj.params.categories_id + 
					"&products_id=" + callerObj.params.products_id,
					
				// Handle successful response
				onSuccess: function(response) {
					callerObj.riseError('Tags was successfully sent, thanks.');
					callerObj.refreshTagList();
					setTimeout(
						function() {
							callerObj.me.hide(callerObj.me.options.popup);
							callerObj.me.hide(callerObj.me.tap);
							// $('tags_area').value = '';
						}, 2000
					);
				},
				// Handle other errors
				onFailure: function(response) {
					callerObj.riseError('Error: Sorry, server error have been occured.');
					setTimeout(
						function() {
							callerObj.me.hide(callerObj.me.options.popup);
							callerObj.me.hide(callerObj.me.tap);
						}, 2000
					);
				}
			};
			
//			callerObj.riseError('Sending...');
			new Ajax.Request(callerObj.baseURL + "/sendTags.php", opt);
		}
		else
		{
			this.riseError('Error: Please enter some tags above.');
		}	
			
		return false;
	},
	
	beforeOpen: function(){
	},
	
	beforeClose: function(element) {
		element.options.callerObj.hideError();
	},
	
	riseError: function(text) {
		this.hideError();
		
		var alert_box = $('tags_alert');
		var elementDimensions = Element.getDimensions(alert_box);
		Element.setStyle(alert_box, {width: 0});
			alert_box.innerHTML = text;
			
		new Effect.Scale(alert_box, 100, {
			scaleFrom: 0, 
			scaleContent: false, 
			scaleY: false, 
			scaleMode: {
				originalHeight: elementDimensions.height, 
				originalWidth: elementDimensions.width
			}
		});

	},
	
	hideError: function(text) {
		$('tags_alert').innerHTML = '';
	},
	
	refreshTagList: function() {
		var tag_list = $('tags_list');
		var products = tag_list.getAttribute("products");
		var cat = tag_list.getAttribute("cat");
		var callerObj = this;
		
		if (products || cat)
		{
			// Ajax request
			var opt = {
				method: 'post',
				postBody: "products=" + products + "&cat=" + cat,
					
				// Handle successful response
				onSuccess: function(response) {
					tag_list.innerHTML = response.responseText;
				},
				// Handle other errors
				onFailure: function(response) {
				}
			};
			
			new Ajax.Request(callerObj.baseURL + "/tagList.php", opt);
		}
	}
	
	
};