$(function(){
  $.ajaxSetup({
	error: function(xhr){alert(_('Error while AJAX-request') + ' (' + xhr.statusText + ')');},
    beforeSend: function(xhr){showAjaxMask();},
    complete: function(xhr, textStatus){hideAjaxMask();}
  });

  if ($.browser.msie && 7 > parseInt($.browser.version)){
    // Mask for "select" elements under menu for IE 6
    $('.under_menu').before('<iframe id="menu_mask" src="javascript:\'&lt;html&gt;&lt;/html&gt;\';" scrolling="no" frameborder="0" style="position:absolute; top:25px; left:0; display:none"></iframe>');
    $('#module_menu li.active').click(function(){
      menuBody = $(this).children('.under_menu').toggle();
      $('#menu_mask').css({width:menuBody.width(), height:menuBody.height()}).toggle();
    });
  } else {
    $('#module_menu li.active').click(function(){$(this).children('.under_menu').toggle();});
  }
  $('.under_menu').hover(function(){}, function(){$(this).add('#menu_mask').slideUp(200);});
  $('table.colored tbody tr').hover(function(){$(this).addClass('sel');}, function(){$(this).removeClass('sel');}).filter(':even').addClass('hl');
});

function goClock(initDate){
  initTime = initDate;
  serverTimeEl = $("#server_time").text(new Date(initTime).toLocaleString());
  setInterval('serverTimeEl.text(new Date(initTime += 1000).toLocaleString())', 1000);
}

function showAjaxMask(){
    $('#ajax_mask').width($.browser.msie ? $(window).width() : ($(document).width() - ($.browser.opera ? 6 : 0))).height(($(document).height() - 4));
    $('#ajax_mask_wrap').show();
}

function hideAjaxMask(){
    $('#ajax_mask_wrap').hide();
}

function _(mess){
  return ('undefined' == typeof ftTr || 'undefined' == typeof ftTr[mess]) ? mess : ftTr[mess];
}

function runJsonAction(jsonData) {
	if ('string' == typeof jsonData) {
		jsonData = eval('(' + jsonData + ')');
	}
	$.each(jsonData, function(index, data){
		switch (index) {
			case 'updateVal':
				$.each(data, function(ind, val) {$('#'+ind).val(val);});
				break;
			case 'alert':
                message = '';
                $.each(data, function(i, val){message += val + '\n'});
                alert(message);
                break;
            case 'refresh':
				self.top.window.location.reload();
				break;
            case 'redirect':
                self.top.window.location = data;
                break;
			case 'append':
				$.each(data, function (ind, val){$('#'+ind).append(val);});
				break;
			case 'appendvalue':
				$.each(data, function (ind, val){
					el = $('#'+ind);
					oldvalue = el.val();
					newvalue = oldvalue ? oldvalue + ',' + val : val;
					el.val(newvalue);
				});
				break;
			case 'eval':
                $.each(data, function (ind, val){eval(val);});
                break;
            case 'enable':
				$.each(data, function (ind, val){$('#' + val).attr('disabled', false);});
				break;
			case 'updateLoad':
				$.each(data, function (ind, val){$('#'+ind).load(val);});
				break;
			case 'updateText':
				$.each(data, function (ind, val){$('#'+ind).text(val);});
				break;
			case 'updateHtml':
				$.each(data, function (ind, val){
					result = $('#'+ind);
					if(result.length) {result.html(val)} else {alert(val)}
				});
				break;
			case 'updateHtmlTemporary':
                $('#'+data[0]).html(data[1]);
                setTimeout("self.top.$('#" + data[0] + "').html('');", data[2] * 1000);
                break;
            case 'setSelectOptions':
                sElem = $('#' + data[0])[0];
                if (sElem) {
                    sElem.length = 0;
                    $.each(data[1], function(ind, val){sElem.options[sElem.options.length] = new Option(val, ind);});
                    if(data[2]) $(sElem).val(data[2]);
                } else {
                    alert('Invalid select identifier for update');
                }
				break;
			case 'pendingRedirect':
				setTimeout("self.top.window.location.href = '" + data[0] + "'", data[1] * 1000);
				break;
			case 'blink':
				el = self.top.$('#'+data[0]);
				oldContent = el.html();
				el.html(data[1]);
				invl = setInterval('el.fadeOut(1000, function(){$(this).fadeIn(500)});', 100);
				setTimeout("clearInterval(invl); el.html(oldContent);", data[2] * 1000);
				break;
			default:
				break;
		}
	});
}

function requestJson(url, data) {
	$.getJSON(url, data, runJsonAction);
}

function click_count(ltype, lid) {
    script = document.createElement('script');
    script.src = 'http://stats.lux.rbc.dom/click/'+ltype+'/'+lid+'.js';
    document.body.appendChild(script);
}