﻿//open a url in a new window
function OpenPopUp(objurl) {
	var newWindow = window.open( objurl, "SaveImage", "resizable,status=no,menubar=no,toolbar=no");
	return false;
}
//add a bookmark a url with the especified title
function createBookmark(title,url) {
	if (window.sidebar) // firefox
		window.sidebar.addPanel(title, url, "");
	else if(window.opera && window.print){ // opera
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	}
	else if(document.all)// ie
		window.external.AddFavorite(url, title);
}
//loading feedback for ajax
$(document).ready(function() { configAjaxFeedback() });
function configAjaxFeedback() {
	$('body')
		.prepend('<div class=\"u-loader\">' + Ext.LoadMask.prototype.msg + '</div>')
		.ajaxStart(beginLoad)
		.ajaxStop(endLoad);
}
function beginLoad() {
	$('.u-loader').fadeIn().attr("z-index", 2000);
}
function endLoad() {
	$('.u-loader').fadeOut();
}
//popup menu
//$(document).ready(function() { enablePopupMenus() });
function enablePopupMenus() {
	$('.j-popup-menu').click(function() {
		var wasVisible = false;
		$this = $(this);
		wasVisible = ($this.next().css('display') != 'none');
		hidePopupMenus();
		if (wasVisible == false)
			$this.next().css('left', $this.offset().left).show();
	})
		.next()
		.addClass('j-popup-menu-container')
		.hide();

	$('a:not(.j-popup-menu)').click(function() { hidePopupMenus(); });
}
function hidePopupMenus() {
	$('.j-popup-menu').next().hide();
}
// extjs show and hide 
function ToggleHide(elemId) {
	Ext.fly(elemId).select("." + elemId + "-hide").toggleClass('u-hidden');
}
function ToggleHide2(elemId) {
	Ext.fly(elemId).toggleClass('u-hidden');
}
//Rating and flagging
function Rating() {
	var fly = Ext.fly(this);
	fly.addClass('u-rating-on');
	fly.removeClass('u-rating-off');

	var prev = fly.prev('div.u-star');
	while (prev != null) {
		prev.addClass('u-rating-on');
		prev.removeClass('u-rating-off');
		prev = prev.prev('div.u-star');
	}
	var next = fly.next('div.u-star');
	while (next != null) {
		next.removeClass('u-rating-on');
		next.addClass('u-rating-off');
		next = next.next('div.u-star');
	}

	prev = fly.prev('div.u-flag');
	if (prev != null) {
		prev.removeClass('u-flagging-on');
		prev.addClass('u-flagging-off');
	}
	
}
function Flagging() {
	var fly = Ext.fly(this);
	fly.toggleClass('u-flagging-on');

	var next = fly.next('div.u-star');
	while (next != null) {
		next.removeClass('u-rating-on');
		next.addClass('u-rating-off');
		next = next.next('div.u-star');
	}
}
function ClearRating() {
	var stars = Ext.fly(this).select('div');
	stars.removeClass('u-rating-on');
	stars.removeClass('u-rating-off');
	stars.removeClass('u-flagging-on');
	stars.removeClass('u-flagging-off');
}
function ExpandCollapse(elem) {
	if (elem.className == "u-expanded") {
		elem.className = "u-collapsed";
		elem.parentNode.parentNode.children[1].style.display = 'none';
	} else {
		elem.className = "u-expanded";
		elem.parentNode.parentNode.children[1].style.display = '';
	}
}
function collapse(id) {
	var fly = Ext.get(id);
	fly.dom.style.display = 'none';
	fly = Ext.get(id + '-expand');
	fly.dom.style.display = '';
	fly = Ext.get(id + '-collapse');
	fly.dom.style.display = 'none';
}
function expand(id) {
	var fly = Ext.get(id);
	fly.dom.style.display = '';
	fly = Ext.get(id + '-expand');
	fly.dom.style.display = 'none';
	fly = Ext.get(id + '-collapse');
	fly.dom.style.display = '';
}
Ext.onReady(function() {
	Ext.select('.u-ratable div.u-star').on('mouseenter', Rating);
	Ext.select('.u-ratable div.u-flag').on('mouseenter', Flagging);
	Ext.select('.u-ratable').on('mouseleave', ClearRating);
});
//rating
function rate(uid, id, rating, requestUrl, selector) {
	$.get(requestUrl, { uid: uid, id: id, rating: rating }, function(data) {
		if (data != null) {
			$(selector + id).html(data);
			$(selector + id + ' div.u-star').hover(Rating);
		}
	});
}
