function reloadImg(target)
{
	var url = target.src;
	target.src = url.split('?')[0] + '?' + Math.random(); 
}

function setRating(elem, d, user_id)
{
	var c = $(elem).parent().find("center");
	$.getJSON('/_admin.rate', {
		user_id: user_id, d: d
	}, function (data) {
		if (!data || typeof(data) != "object" || !data.user_id) return;
		c.text(data.rating);
	});
}

function editCard(obj, user_id)
{
	var fld = $(obj).prev('span');
	var res = prompt("Введите новый номер карты для пользователя " + fld.parent('td:first').next('td').text(), fld.text());
	if (res === null) return;
	$.getJSON('/_admin.change_card', {
		user_id: user_id, num: res
	}, function (data) {
		if (!data || typeof(data) != "object" || !data.user_id) return;
		fld.text(data.num);
	});
}

function delFile(obj)
{
	$(obj).parents('div:first').remove();
}
function selFile()
{
	var cur = $(this);
	var div = cur.parent();
	var val = cur.val();
	
	cur.attr({
		disabled: true,
		title: val
	}).blur().unbind("change", selFile);
	
	//создать все тэги
	$('<span>', { text: val }).insertBefore(cur).append('<br/>');
	
	$('<span>', { text: "  Описание" })
		.append('<input type="text" name="comment[]"/>&nbsp;')
		.append('<img src="/images/close-icon.gif" onclick="delFile(this);" style="cursor: pointer; vertical-align: middle;"')
		.append('<br/><br/>')
		.insertAfter(cur)
	;
	
	$('<input>', { type: "file", "name": cur.attr('name') })
		.insertAfter(div)
		.change(selFile)
		.wrap('<div class="file"></div>');
}
function onItemSelected(item)
{
	if (item == null) 
	{
		$('#options').empty();
		return;
	}
	$('#options').html('<a href="/_admin.photos?remove=' + item.data.id + '">удалить фотографию</a>');
	//console.log(item.data.id);
}

var cooliris = {
	onEmbedInitialized: function() {
		cooliris.embed.setCallbacks({
			select: onItemSelected
		});
	}
};

var calendar = {
	colors: ['#dddddd', '#dd0000', '#00dd00'],
	cells: {}
};
function dec2hex(val)
{
	return parseInt(val).toString(16).replace(/^([\da-f])$/, "0$1");
}

function toColor(rgb)
{
	return '#' + dec2hex(rgb[0]) + dec2hex(rgb[1]) + dec2hex(rgb[2]);
}
function onCalendar()
{
	var obj = $(this);
	
	var mdata = obj.data();
	var state = parseInt(mdata['state']);
	obj.removeClass('state-' + state);
	state = state == 2 ? 0 : state + 1;
	var data = {};
	data["state"] = state;
	data["date"] = mdata["date"];
	if (mdata['id'])
	{
		data["id"] = mdata['id'];
	}
	$.getJSON('?switch', data, updCalendar);
}
function updCalendar(data)
{
	updateCell(data);
}
function fillTime()
{
	var data = {};
	var form = $('#fill_form').serializeArray();
	var i;
	for (i in form)
	{
		var param = form[i];
		data[param.name] = param.value;
	}
	data["fill_type"] = $('#status_sel').val();
	$.getJSON("?fillTime", data, onFill);
}
function fillItv()
{
	var data = {};
	data["date_from"] = $('#fill_form input[name="date_from"]').val();
	data["date_to"] = $('#fill_form input[name="date_to"]').val();
	
	var form = $('#itv_form').serializeArray();
	var i;
	for (i in form)
	{
		var param = form[i];
		data[param.name] = param.value;
	}
	data["fill_type"] = $('#status_sel').val();
	$.getJSON("?fillItv", data, onFill);
}
function onFill(data)
{
	if (data.errstr)
	{
		showError(data.errstr);
		return;
	}
	var i;
	for (i in data.dates)
	{
		updateCell(data.dates[i], data.state);
	}
}

function updateCell(data, state)
{
	if (state === undefined) state = data.state;
	var obj = calendar.cells[data.date];
	if (!obj) return;
	obj = $(obj);
	
	for (var sc = 0; sc < 3; sc++)
	{
		if (sc != state)
		{
			obj.removeClass('state-' + sc);
		}
	}
	
	
	obj.addClass('state-' + state);
	obj.data("state", state);
	if (data.id)
	{
		obj.data("id", data.id);
	}
	else delete obj.data()["id"];
}

function bindCalendar(i, target)
{
	var obj = $(target);
	var meta = obj.metadata();
	delete obj.data()['metadata'];
	calendar.cells[meta.date] = target;
	var data = obj.data();
	data["date"] = meta.date;
	data["state"] = meta.state;
	if (meta.id)
	{
		data["id"] = meta.id;
	}
}
function statusColor()
{
	var obj = $(this);
	obj.css('background-color', calendar.colors[obj.val()]);
}

function showError(msg)
{
	$('#error-dialog p').text(msg);
	$('#error-dialog').dialog({
		modal: true,
		resizable: false
	});
}

function onMessageRemove(msg_id)
{
   $.getJSON('/_wall.msgremove', {id: msg_id}, _removeMessage);
   return false;
}
function _removeMessage(data)
{
   if (!data || typeof(data) != "object" || !data.id) return;
   if (data.ok)
   {
	  $('#comment_' + data.id).next().remove();
      $('#comment_' + data.id).remove();
   }
}

function embedCooliris(id, url, width, height)
{
  if ($('#' + id).length)
  {
	var w = width !== undefined ? width : 706;
	var h = height !== undefined ? height : 450;
  	var params = {
		allowFullScreen: "true",
		allowScriptAccess: "always"
	};
	var flashvars = {
		feed: url,
		style: "black",
		numRows: 2,
		showEmbed: false,
		showItemEmbed: false,
		showSearch: false,
		showNavArrows: true
	};
  	swfobject.embedSWF("/flash/cooliris.swf", id, w, h, "9.0.0", "/flash/expressInstall.swf", flashvars, params);
  }
}

$(function(){
  $('#regform').submit(function(){
    var ok = true;
    $('#regform input[type!="submit"]').each(function() {
      if (!$(this).val()) {
	  	ok = false;
		alert("Одно из полей не заполнено!");
		return false;
	  }
    });
	if ($('#regform input[name="pass1"]').val() != $('#regform input[name="pass2"]').val()) {
		ok = false;
		alert("Введённые пароли не совпадают!");
	}
	return ok;
  });
  $('#selfiles input').change(selFile);
  
  embedCooliris('photos', "/_feed.photos");
  embedCooliris('videos', "http://gdata.youtube.com/feeds/api/playlists/54364384F49C36DA");
  embedCooliris('karts', "/media/karts.xml", 454);
  
  $('#photoupload').submit(function(){
  	$('#photoupload input').attr("disabled", false).filter(":file[value='']").remove();
  });
  $('table.tablesorter').tablesorter();
  var calendar = $('#calendar');
  if (calendar.length && calendar.hasClass('admin')) {
  	calendar.find('td.cell').click(onCalendar).each(bindCalendar);
  }
  $("input.datepicker").datepicker({ autoSize: true, dateFormat: "dd.mm.yy" });
  $('#status_sel').change(statusColor);
});

