var filter;
var Filter;
Filter = new Class({
	target_div: null,
	loader_path: '/media/img/loader_bkg.gif',
	initialize: function(target_div) {
		var _this = this;
/* console.log('initialized target_div', target_div); */
	if(typeof(target_div) == 'undefined'){
		_this.target_div = $(document.body);
	}
	
	else if(typeof(target_div) == 'string'){
		_this.target_div = $(target_div);
	}
	
	else
		_this.target_div = target_div

		// Get all concerned links for Filter 
		var elements = _this.target_div.getElements('*[rel=video_list_filter]').combine(_this.target_div.getElements('*[rel=pagination]'));
/* console.log('elements', _this.target_div.getElements('*[rel=video_list_filter]'));		 */
		elements.each(function(element) {
			element.addEvent('click', function(e) {
				e.stop();
				//	Start the process
				_this.element_click(element);
			});
		});
	},
	
	
	ajax_loader: function(target){
/* console.log('ajax loader on'); */
		target.setStyles({
			'background-image': 'url('+_this.loader_path+')',
			'background-position': 'center 4px',
			'background-repeat': 'repeat-x'
		});
	},

	unset_ajax_loader: function(target){
/* console.log('ajax loader of'); */
		target.setStyle('background-image', 'none');
	},

	element_click: function(element){
		_this = this;
		//	Show the loader
		_this.ajax_loader(_this.target_div);
		
		//	Do the query
		query = new Request({
			url: element.get('href'), 

			onSuccess: function(xml){
				_this.update_content(query.response['xml'], element.get('href'));
				_this.unset_ajax_loader(_this.target_div);
				return true;

			},
			
			onFailure: function() {
				_this.unset_ajax_loader(_this.target_div);
				return false;
			}
		}).send();
	},
	

	update_content: function(xml, url){
		_this = this;

		//	Get data status
		var data_status = _this.getNodeValueFromName(xml, 'status');

		if(data_status == 'ok'){
			//	Update content
//			var clip_list = new Element('div', {'id': 'clip_list', 'class': 'subcontent'});
			var clip_list = _this.target_div.getElement('.subcontent');
			clip_list.innerHTML = '';
			var clip_target = new Element('ul', {'id': 'clip_list_ul'}).inject(clip_list);
	
			var clips = xml.getElementsByTagName('clip');
			clip_target.empty();
			for(i=0; i<clips.length;i++){
				var clip = clips[i].childNodes[0].nodeValue;
			
				var newLi = new Element('li', {'class': 'clip_list_element channel_brd_bt_color'});	//	Creat new clip item
				newLi.innerHTML = clip;											//	Add data in clip item
				newLi.inject(clip_target);										//	Add clip item in the page
			}
	
			//	Update filters
//			var filter = new Element('div', {'id': 'clipsfilter', 'class': 'submenu'});
			var filter = _this.target_div.getElement('.submenu');
			filter.innerHTML = _this.getNodeValueFromName(xml, 'filter');
	
			//	Update pagination
//			var pagination_top = new Element('div', {'id': 'pagination_top', 'class': 'pagination'});
			var pagination_top = _this.target_div.getElement('.pagination_top');
			pagination_top.innerHTML = _this.getNodeValueFromName(xml, 'pagination');
			if(_this.getNodeValueFromName(xml, 'pagination') == '&nbsp;') pagination_top.setStyle('display', 'none');
	
//			var pagination_bottom = new Element('div', {'id': 'pagination_bottom', 'class': 'pagination'});
			var pagination_bottom = _this.target_div.getElement('.pagination_bottom');
			pagination_bottom.innerHTML = _this.getNodeValueFromName(xml, 'pagination');
			if(_this.getNodeValueFromName(xml, 'pagination') == '&nbsp;') pagination_bottom.setStyle('display', 'none');
	
			//	Put content on the page		
/*
			_this.target_div.innerHTML = '';
			pagination_top.inject(_this.target_div);
			filter.inject(_this.target_div);
			clip_list.inject(_this.target_div);
			pagination_bottom.inject(_this.target_div);
*/
		}
		else{
			//	Error msg
			var master_content = _this.target_div.getElement('.subcontent');
			master_content.innerHTML = '';
			var error_msg_box = new Element('div', {'class': 'special_box'}).inject(master_content);
			var error_msg = new Element('p', {'text': _this.getNodeValueFromName(xml, 'error_msg')}).inject(error_msg_box);
			
			//	Filters
//			var filter = new Element('div', {'id': 'clipsfilter', 'class': 'submenu'});
			var filter = _this.target_div.getElement('.submenu');
			filter.innerHTML = _this.getNodeValueFromName(xml, 'filter');

			
						
//			filter.inject(_this.target_div);
//			master_content.inject(_this.target_div);
		}
		//	Reaload script on item
		_this.initialize(_this.target_div.get('id'));
		
		//	Update google
		_this.googleUpdate(url);
		
		
		//	Update displayed url
//		window.location.replace(url);

		
	},

	getNodeValueFromName: function(node, name) {
		var value = "";
		
		try {
			value = node.getElementsByTagName(name)[0].childNodes[0].nodeValue;
		} catch(e) {}
		
		return value;
	},
	
	googleUpdate: function(url){
		if(pageTracker) {
			pageTracker._trackPageview(url);
		}
	},

	changeAnchor: function(anchor){
		// Si l'url possde dŽjˆ une ancre
		if (window.location.href.match(new RegExp('#.*$'))){
			window.location = window.location.href.replace(
				new RegExp('#.*$'),
				'#' + anchor
			);
		}
		// Sinon, il suffit de l'ajouter ˆ la fin
		else{
			window.location = window.location.href + "#" + anchor
		}
		
		return window.location;
	}
});