//
//
//
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


function goto_url(url)
{
	document.location.href = url;	
}

function contentItemMM(item, state)
{
	$(item).find('.user-content-ctrl-a').css("display", state ? "inline" : "none");
	if (state)
		$(item).addClass('user-content-slctd');
	else 
		$(item).removeClass('user-content-slctd');	
}

function titleMM(item, state)
{
	if (state)
		$(item).find('.list-title-dis').addClass('list-title-hover').removeClass('list-title-dis');
	else 
		$(item).find('.list-title-hover').addClass('list-title-dis').removeClass('list-title-hover');
}

function setMessage(fieldname, message, type)
{
	var field = document.getElementById(fieldname+'-message');
	if (field)
	{
		if (type == 'clear')
			field.className = "";
		else
			field.className = (!type) ? 'form-error' : ('form-' + type);
		field.innerHTML = message;
	}
}

function clearMessage(fieldname, fieldname2)
{
	setMessage(fieldname, '', 'clear');
	if (fieldname2)
		setMessage(fieldname2, '', 'clear');
}

function isEnter(event)
{
	if (!event) event = window.event;
	var keynum = ((event.charCode) && (event.keyCode==0)) ? event.charCode : event.keyCode;
	
	if(keynum == 13)
	{
		return !$.boxeeIsBlocked();
	}
	return false;
}

//
//
//
$.htmlspecialchars_decode = function (str) 
{
    var decoder = document.createElement('textarea');
    decoder.innerHTML = str;
    return decoder.value;
};

//
// send validation
//
$.sendValidation = function()
{
	$.getJSON("/accountapi/sendvalidation" , {format : 'json'} , function(json) 
		{
	    	if (json && json.success)
	    	{
	    		$.boxeeBlockUI('Please check your inbox for a validation email.', null, false);
				setTimeout(function() { $.boxeeUnblockUI();}, 2000);
	    	}
	    	else if (json && json.error_msg)
	    	{
	    		$.boxeeBlockUI(json.error_msg, null, true);
	    	}
	    	else
	    	{
	    		$.boxeeBlockUI("Failed sending validation email", null, true);
	    	}			    	
	    });
};

//
// recover pwdbtns
//
$.recoverPwd = function()
{
	var btns = [{txt:'Recover' , isdefault:true , func:function()
	{
		var email = document.getElementById('email_address').value;
		$.boxeeBlockUI("Sending password recovery email...");
		$.getJSON('/auth/recoverbyemail', {email:email}, function(json)
		{
			var doTimeout = true;
			
	    	if (json && (json.error_msg || json.alert_msg))
		    	$.boxeeBlockUI(json.error_msg ? json.error_msg : json.alert_msg, null, json.error_msg ? true : false);
	    	
			if (doTimeout)
			{
				setTimeout(function()
				{
					$.boxeeUnblockUI();
					if (document.getElementById('email_address'))
						document.getElementById('email_address').value = '';
					document.form1.username.focus();
				}, 2000);
			}
	    	
		});
	}}];

	var d = $('<div style="text-align:center">Enter your email, and we\'ll send you a link to recover your password.'+
			  '<input style="width:100%;margin-top:16px;" type="text" id="email_address"/></div>');
	
	$.boxeeBlockUI(d, btns);
};

//
// add / remove / block friend
//
$.friendAction = function(friendId, action, msg, gotoUrl, successCallb, nopopup) 
{
	var actionFriendOk = function(timeout) 
	{ 
		if (!nopopup)
			$.boxeeBlockUI("Please wait..."); 
	    $.getJSON("/friends/"+action+"/"+friendId, {format : 'json'} , function(json) 
	    {
	    	var has_error = json && json.error_msg;
	    	if (!timeout)
	    		timeout = 0;
	    		
	    	if (!nopopup && json && (json.error_msg || json.alert_msg))
	    	{
		    	$.boxeeBlockUI(json.error_msg ? json.error_msg : json.alert_msg, null, json.error_msg ? true : false);
		    	timeout = 2000;
	    	}
	    	
	    	
	    	var ondone = function()
	    	{
	    		if (!has_error) 
	    		{ 
	    			if (gotoUrl)
	    				document.location.href = gotoUrl;
	    			else if (successCallb)
	    				successCallb();
	    		}
	    	};
	    	
	    	if (nopopup)
	    	{
	    		ondone();
	    	}
	    	else 
	    	{
			    setTimeout(function() 
			    {
			    	$.boxeeUnblockUI({ onUnblock: ondone});
		    	}, timeout);
	    	}
		    
	    });
	};
	
	// show message with 'yes' and 'no'
	if (msg && msg.length > 0)
	{
		var btns = [{txt:'no', func : function() {$.boxeeUnblockUI()}}, 
		            {txt:'yes', isdefault:true, func : actionFriendOk}] ;
	    $.boxeeBlockUI(msg, btns);
	}
	// no message -> do action 
	else 
		actionFriendOk(1000);
};

//
// subscrube to feed
//
$.addFeed = function(rssURL, rsv, rsa, rsp, rst, callb) 
{
	$.boxeeBlockUI("Fetching Feed ... just a moment...");
	
	var data = { url : rssURL, format : 'json'};
	data['rsv'] = rsv;
	data['rsa'] = rsa;
	data['rsp'] = rsp;
	data['rst'] = rst;
		
    $.getJSON("/rss/subscribe", data , function(json) 
    {
		var error = (json && json.error_msg);
		
    	if (json && (json.error_msg || json.alert_msg))
    	{
	    	$.boxeeBlockUI(json.error_msg ? json.error_msg : json.alert_msg, null, json.error_msg ? true : false);
    	}
    	
    	if (json && !json.error_msg)
    	{
		    setTimeout(function() 
		    {
		    	$.boxeeUnblockUI();
		    	if (!error && callb)
		    	{
		    		callb();
		    	}
	    	}, 2000);
    	}
    });
};

//
// unsubscrube from feed
//
$.removeFeed = function(rs_index)
{
	var removeFeedOk = function() 
	{ 
		$.boxeeBlockUI("Please wait...");
		$.getJSON("/rss/unsubscribe?rs_index=" + rs_index, {format : 'json'} , function(json) 
		{
			var error = (json && json.error_msg);
			
	    	if (json && (json.error_msg || json.alert_msg))
	    	{
		    	$.boxeeBlockUI(json.error_msg ? json.error_msg : json.alert_msg, null, json.error_msg ? true : false);
	    	}
	    	
		    setTimeout(function() 
		    {
		    	$.boxeeUnblockUI();
		    	if (!error)
		    	{
		    		document.location.href = '/user/feeds';
		    	}
	    	}, 2000);
		    
	    });
	};
	
	var btns = [{txt:'no', func : function() {$.boxeeUnblockUI()}}, 
	            {txt:'yes', isdefault:true, func : removeFeedOk}] ;
    $.boxeeBlockUI('Are you sure you want to remove the feed?', btns);
};

//
// blocking popup
//
$.boxeeBlockUI = function(msg, btns, is_error, show_loading, unblockCallb) 
{
	var m;
	var doBlock = false;
	
	if ($(window).data('boxeeBlockUI.history'))
	{
		boxeeBlockRecoverMsg();
		m = $('#popup-container');
	}
	else 
	{
		doBlock = true;
		
		m = $('<div id="popup-container" style="cursor:default" style="display:none"><a class="popup-close"></a>' +
			  '<table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="popup-back popup-left"/></td><td class="popup-back popup-center">' +
			  '<form id="pupup-f"><input style="display:none" type="submit"/>' + 
			  '<div id="popup-message" class="popup-message"></div>' +
			  '<div id="popup-btns" class="popup-btns"></div>' + 
			  '<input type="submit" style="opacity:0;background-color:#434342;font-size:0px;margin:0px;border:0px;width:1px;padding:0px;height:1px;"></form>' +
			  '</div></td><td><div class="popup-back popup-right"/></td></tr></table></div>');
	}
	
	if (is_error)
		m.find('.popup-message').addClass('popup-error').removeClass('popup-message');

	m.find('.popup-close').click(function() {$.boxeeUnblockUI({onUnblock: unblockCallb})} );
	
	boxeeBlockStoreMsg(msg);
	
	// create btns
	var defaultFunc = null;
	if (btns)
	{
		var btns_cnt = $('<div class="link-btns-back link-btns-left"></div><div id="btns-data" class="link-btns-back link-btns-center"></div><div class="link-btns-back link-btns-right"></div>');
		m.find('#popup-btns').append(btns_cnt);
		
		$.each(btns, function() {
			if (this.isdefault)
				defaultFunc = this.func;
			m.find('#btns-data').append(boxeeBlockBtn(this.txt, this.func));
		});
	}
	
	m.find('form').bind("submit", function(e){
			e.preventDefault();
			if (defaultFunc)
				defaultFunc.call();
			else 
				$.boxeeUnblockUI({ onUnblock: unblockCallb});
	    });

	// append msg data to container
	if (show_loading)
	{
		if (!msg.jquery)
			msg = '<img id="popup-load" style="position:relative;left:-8px;top:7px;" src="/htdocs/images/popup/loading.gif"/>' + msg;
		//TODO: support objects
	}
	
	m.find('#popup-message').append(msg);
	
	if (msg.jquery || msg.nodeType)
		$(msg).show();

	// block
	if (doBlock)
		$.blockUI({ message: m });

	m.find('form').focus();
	//m.find('input').eq(0).focus();
};

// close popup
$.boxeeUnblockUI = function(opts)
{
	boxeeBlockRecoverMsg();   
  	$.unblockUI(opts);
};

$.boxeeIsBlocked = function()
{
    if ($(window).data('boxeeBlockUI.history'))
    	return true;
    else
    	return false;
};

boxeeBlockRecoverMsg = function()
{
	// remove appended msg data 
	var els = $('#popup-message').children();
    els.each(function(i,o) {
        // remove via DOM calls so we don't lose event handlers
        if (this.parentNode)
            this.parentNode.removeChild(this);
    });
	
    $('#popup-message').empty();
	$('#popup-btns').empty();
    
    // return msg data to its place 
    var data = $(window).data('boxeeBlockUI.history');
    if (data && data.el) 
	{
        data.el.style.display = data.display;
        data.el.style.position = data.position;
		if (data.parent)
			data.parent.appendChild(data.el);
	}
    $(window).removeData('boxeeBlockUI.history');    
}

function boxeeBlockStoreMsg(msg)
{
    var data = {};
    $(window).data('boxeeBlockUI.history', data);
    
	// save msg data 
    if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) 
	   {
        var node = msg.jquery ? msg[0] : msg;
        data.el = node;
        data.parent = node.parentNode;
        data.display = node.style.display;
        data.position = node.style.position;
		if (data.parent)
			data.parent.removeChild(node);
    }
}

function boxeeBlockBtn(txt, func)
{
	var b = $('<a>'+txt+'</a>');
	b.click(func);
	return b;
}


function setCookie(name, value, days) {
	if (days) 
	{
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	
	document.cookie = name + "=" + value + expires + "; path=/";
}

function getCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
