var CallQueue = false;

QBuffer = function () {
	this.buffer = new queue();

	this.add = function (obj) {
		this.buffer.add_to_tail(obj);
	}
	
	this.remove = function (id) {
		for (var i=0; i<this.buffer.queue_length; i++) {
			if (obj = this.buffer.get_element_at(i)) {
				if (obj.p5 == id) {
					this.buffer.delete_at(i);
				}
			}
		}
		return true;
	}
	
	this.remove_all = function () {
		this.buffer.data = new Array();
		this.buffer.queue_length = 0;
	}
	
	this.find = function (id) {
		
		for (var i=0; i<this.buffer.queue_length; i++) {
			if (obj = this.buffer.get_element_at(i)) {
				if (obj.p5 == id) {
					return new Array(unescape(obj.p1), obj.p2, obj.p3, unescape(obj.p4), obj.p5, obj.p6);
				}
			}
		}
	}
	
	this.find_obj = function (id) {
		
		for (var i=0; i<this.buffer.queue_length; i++) {
			if (obj = this.buffer.get_element_at(i)) {
				if (obj.p5 == id) {
					return obj;
				}
			}
		}
	}
	
	this.get_index = function (id) {
		for (var i=0; i<this.buffer.queue_length; i++) {
			if (obj = this.buffer.get_element_at(i)) {
				if (obj.p5 == id) {
					return i;
				}
			}
		}
	}
	
	this.switch_elements = function (id1, id2) {
		var num1 = id1.split('_');
		var num2 = id2.split('_');
		var obj1 = this.find_obj(num1[2]);
		var obj2 = this.find_obj(num2[2]);
	
		var ind1 = this.get_index(num1[2]);
		var ind2 = this.get_index(num2[2]);
		
		this.buffer.data[ind1] = obj2;
		this.buffer.data[ind2] = obj1;
		
		Cookie.set('quicklist['+ind1+']',obj2.p5);
		Cookie.set('quicklist['+ind2+']',obj1.p5);
	}
	
	this.switch_buffer_elements = function (id1, id2) {
		var obj1 = this.find_obj(id1);
		var obj2 = this.find_obj(id2);
		var ind1 = this.get_index(id1);
		var ind2 = this.get_index(id2);

		this.buffer.data[ind1] = obj2;
		this.buffer.data[ind2] = obj1;

		Cookie.set('quicklist['+ind1+']',id2);
		Cookie.set('quicklist['+ind2+']',id1);
	}
	//this.playlist = new 
}

function CheckVideos() {
	var tmp = Cookie.get('qlp_playlist');
	tmp = unescape(tmp);
	var play_items = tmp.split('|');
	for (var i=0; i<play_items.length; i++) {
		var obj = QuicklistBuffer.buffer.get_element_at(parseInt(play_items[i]));
		
		if (obj) {
			$('quicklist_item_select_'+obj.p5).checked = true;
		}
	}
}

var init = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
	method: 'get',
	data: Object.toQueryString({fill_buffer: 1}),
	evalResponse: true,
	onComplete: function() {
	
		var mode = parseInt(Cookie.get('qlp_playlist_mode'));		
		for (var i=0; i<a.length; i++) {
				a[i].p1 = unescape(a[i].p1);
				a[i].p3 = unescape(a[i].p3);
				a[i].p4 = unescape(a[i].p4);
		}
		QuicklistBuffer.buffer.data = a;
		QuicklistBuffer.buffer.queue_length = QuicklistBuffer.buffer.data.length;
		QuicklistPager.init();
		CallQueue = false;
	}
});
	
CallQueue = true;
init.request();

function DisableAddButton(id) {
	var btnObj = $('add_ql_btn_'+id);
	btnObj.onclick = '';
	btnObj.onmouseover = '';
	btnObj.onmouseout = '';
	btnObj.className = 'dodajvideo';
	btnObj.style.display = 'none';
	//var btnFade = new Fx.Style(btnObj, "opacity", {duration: 250});
	//btnFade.start(1,0.5);
}

function AddQuicklistItem(videoid) {
    	var holderDiv;
	
	var item_html = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({id: videoid}),
				onComplete: function() {
					if ($('main_quicklist_window').style.display == 'none') 
						$('main_quicklist_window').style.display = '';
					$('quicklist_canvas').style.display = '';
					$(holderDiv).remove();
					$('quicklist').setHTML($('quicklist').innerHTML + this.response.text);
					CallQueue = false;
					DisableAddButton(videoid);
					QuicklistPager.refresh();
				}
			    });

	var r = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({id: videoid, fetch_data: 1}),
				evalResponse: true,
				onComplete: function() {	
					QuicklistBuffer.add(data_item[0]);
					if (!QuicklistPager.current_view_full()) {
						item_html.request();
					}
					else {
						CallQueue = false;
						QuicklistPager.refresh();
						DisableAddButton(videoid);
					}
				}
			    });
	
	if (!CallQueue) {
		if (QuicklistBuffer.find(videoid)) {
			DisableAddButton(videoid);
		}
		else {
			CallQueue = true;
			QuicklistBuffer.buffer.queue_length++;
			if (!QuicklistPager.current_view_full()) {
				holderDiv = document.createElement('div');
				$(holderDiv).addClass('vsebina_row');
				var innerDiv = document.createElement('div');
				$(innerDiv).addClass('klasifikatorvs');
				$(innerDiv).setText($('main_quicklist_window').getProperty('loading'));
				$(holderDiv).appendChild(innerDiv);
				$('quicklist').appendChild(holderDiv);
			}
			QuicklistBuffer.buffer.queue_length--;
			r.request();
		}
	}
}

function RemoveQuicklistItem(videoid) {
	var item = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({id: videoid, remove: 1}),
				onComplete: function() {
					$('quicklist_item_'+videoid).style.display = 'none';
					QuicklistBuffer.remove(videoid);
					CallQueue = false;
					$('QUICKLIST_LOADING').innerHTML = '';
					if (QuicklistBuffer.buffer.queue_length == 0) {
						$('main_quicklist_window').style.display = 'none';
						QuicklistBuffer.remove_all();
					}
					else {
						QuicklistPager.refresh();
					}
				}
			});

	if (!CallQueue) {
		CallQueue = true;
		$('QUICKLIST_LOADING').innerHTML = $('main_quicklist_window').getProperty('loading');
		item.request();
	}
}

function ReplaceQuicklistItem(current_item, new_item, firstElement) {
	var r = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({id: new_item}),
				onComplete: function() {
					$('quicklist_item_'+current_item).remove();
					if (firstElement)
						$('quicklist').setHTML(this.response.text+$('quicklist').innerHTML);
					else
						$('quicklist').setHTML($('quicklist').innerHTML + this.response.text);
					$('QUICKLIST_LOADING').innerHTML = '';
					CallQueue = false;
				}
			});

	if (!CallQueue) {
		CallQueue = true;
		$('QUICKLIST_LOADING').innerHTML = $('main_quicklist_window').getProperty('loading');
		r.request();
	}
}

function RemoveQuicklistItems(videoids) {
	var r = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({ids: videoids, remove: 1}),
				onComplete: function() {
					//alert(videoids.length);
					for (var i=0; i<videoids.length; i++) {
						$('quicklist_item_'+videoids[i]).style.display = 'none';
						QuicklistBuffer.remove(videoids[i]);
					}
					
					if (QuicklistBuffer.buffer.queue_length == 0) {
						$('main_quicklist_window').style.display = 'none';
					}
					CallQueue = false;
					QuicklistPager.refresh();
					$('QUICKLIST_LOADING').innerHTML = '';
					if (QuicklistBuffer.buffer.queue_length == 0) {
						$('main_quicklist_window').style.display = 'none';
					}
				}
			});

	if (!CallQueue) {
		CallQueue = true;
		$('QUICKLIST_LOADING').innerHTML = $('main_quicklist_window').getProperty('loading');
		r.request();
	}
}

function RefreshQuicklist(offset) {
	var r = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({offset: offset, refresh: 1}),
				update: 'quicklist',
				onComplete: function() {
					CallQueue = false;
					$('QUICKLIST_LOADING').innerHTML = '';
				}
			});
	
	if (!CallQueue) {
		CallQueue = true;
		$('QUICKLIST_LOADING').innerHTML = $('main_quicklist_window').getProperty('loading');
		r.request();
	}
}

function RemoveSelectedQuicklistItems() {
	//alert('RemoveSelectedQuicklistItems');
	var del = new Array();
	var j=0;
	for (var i=0; i<QuicklistBuffer.buffer.queue_length; i++) {
		var obj = QuicklistBuffer.buffer.get_element_at(i);
		if ($('quicklist_item_select_'+obj.p5)) {
			if ($('quicklist_item_select_'+obj.p5).checked) {
				del[j] = $('quicklist_item_select_'+obj.p5).value;
				j++;
			}
		}
	}
	
	RemoveQuicklistItems(del);	
}

function RemoveAllQuicklistItems() {
	var item = new Ajax('/ajax/GetQuicklistItem.php?rnd='+Math.random(), {
				method: 'get',
				data: Object.toQueryString({remove_all: 1}),
				onComplete: function() {
					$('quicklist').innerHTML = '';
					QuicklistBuffer.remove_all();
					$('main_quicklist_window').style.display = 'none';
					CallQueue = false;
					$('QUICKLIST_LOADING').innerHTML = '';
				}
			});

	if (!CallQueue) {
		CallQueue = true;
		$('QUICKLIST_LOADING').innerHTML = $('main_quicklist_window').getProperty('loading');
		item.request();
	}
}

function ToggleQuicklist() {
	if ($('quicklist_canvas').style.display == 'none')
		$('quicklist_canvas').style.display = '';
	else
		$('quicklist_canvas').style.display = 'none';
}

function MoveQuicklistItemUp(id) {

	if ($(id) != $(id).getParent().getFirst()) {
		var prev = $(id).getPrevious();
		var current = $(id);
		var clone = $(id).clone().injectBefore(prev);
		current.remove();
		//$(clone).addClass();
		QuicklistBuffer.switch_elements(prev.id, id);
		//QuicklistPager.refresh();
		var tmp = id.split('_');
		$('moveup_'+tmp[2]).className = 'premakniup';
		$('movedown_'+tmp[2]).className = 'premaknidown';
	}
	else {
		var tmp = id.split('_');
		var ind = QuicklistBuffer.get_index(tmp[2]);
		var obj = QuicklistBuffer.buffer.get_element_at(ind-1);
		if (obj) {
			QuicklistBuffer.switch_buffer_elements(obj.p5, tmp[2]);
			ReplaceQuicklistItem(tmp[2], obj.p5, true);
			$('moveup_'+tmp[2]).className = 'premakniup';
			$('movedown_'+tmp[2]).className = 'premaknidown';
		}
	}
}

function MoveQuicklistItemDown(id) {
	if ($(id) != $(id).getParent().getLast()) {
		var next = $(id).getNext();
		var current = $(id);
		$(id).clone().injectAfter(next);
		current.remove();
		QuicklistBuffer.switch_elements(next.id, id);
		var tmp = id.split('_');
		$('moveup_'+tmp[2]).className = 'premakniup';
		$('movedown_'+tmp[2]).className = 'premaknidown';
	}
	else {
		var tmp = id.split('_');
		var ind = QuicklistBuffer.get_index(tmp[2]);
		var obj = QuicklistBuffer.buffer.get_element_at(ind+1);
		if (obj) {
			QuicklistBuffer.switch_buffer_elements(obj.p5, tmp[2]);
			ReplaceQuicklistItem(tmp[2], obj.p5, false);
			$('moveup_'+tmp[2]).className = 'premakniup';
			$('movedown_'+tmp[2]).className = 'premaknidown';
		}
	}
}

QPager = function () {
	this.buffer = new Array();
	this.max_items_per_page = '';
	this.pages = Math.ceil(QuicklistBuffer.buffer.queue_length / this.max_items_per_page);
	
	var tmp = parseInt(Cookie.get('qlp_current_page'));
	if (tmp > 0)
		this.current_page = tmp;
	else
		this.current_page = 1;

	this.draw_pages = function() {
		this.pages = Math.ceil(QuicklistBuffer.buffer.queue_length / this.max_items_per_page);
		var tmp = '';
		for (var i=1; i<this.pages+1; i++) {
				if (this.current_page == i)
					tmp += '<b>'+i+'</b> ';
				else
					tmp += '<a href="javascript:QuicklistPager.setPage(\''+i+'\')">'+i+'</a>';
		}
		$('top_pages').innerHTML = tmp;
		$('bottom_pages').innerHTML = tmp;
	}
	
	this.init = function() {
		tmp = Math.ceil(QuicklistBuffer.buffer.queue_length / this.max_items_per_page);
		this.pages = tmp;
		this.draw_pages();
	}

	this.firstPage = function() {
		if (this.current_page > 1)
			this.setPage(1);
	}
	
	this.lastPage = function() {
		if (this.current_page != this.pages)
			this.setPage(this.pages);
	}
	
	this.nextPage = function() {
		if (this.current_page<this.pages)
			this.setPage(parseInt(this.current_page)+1);
	}
	
	this.prevPage = function() {
		if (this.current_page>1)
			this.setPage(this.current_page-1);
	}
	
	this.setPage = function(n) {
		var offset = (n-1) * this.max_items_per_page;
		this.set_current_page(n);
		this.draw_pages();
		RefreshQuicklist(offset, this.max_items_per_page);
	}
	
	this.refresh = function() {
		if (this.current_view_empty())
			this.setPage(this.current_page-1);
		else
			this.setPage(this.current_page);
	}
	
	this.current_view_full = function() {
		var top = (this.current_page-1) * this.max_items_per_page;
		var bottom = top + this.max_items_per_page;
		if (bottom >= QuicklistBuffer.buffer.queue_length)
			return false;
		else
			return true;
	}
	
	this.current_view_empty = function() {
		var top = (this.current_page-1) * this.max_items_per_page;
		if (top >= QuicklistBuffer.buffer.queue_length)
			return true;
		else
			return false;
	}
	
	this.set_current_page = function(n) {
		Cookie.set('qlp_current_page', n);
		this.current_page = n;
	}
}