var addBarPopupMenuActive = null;
var addPhotoGroupId = null;
var addPhotoGroupName = null;
var kanjiSupport = false;
var galleryCurrentPhotoId = null;

function addslashessingle(str){
	// http://kevin.vanzonneveld.net
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Ates Goral (http://magnetiq.com)
	// +   improved by: marrtins
	// +   improved by: Nate
	// +   improved by: Onno Marsman
	// *     example 1: addslashes("kevin's birthday");
	// *     returns 1: 'kevin\'s birthday'
	return (str+'').replace(/(['])/g, "\\$1").replace(/\0/g, "\\0");
}

function getComputedBgColor(obj){
	var bgcolor = jQuery(obj).css('backgroundColor');
	if (bgcolor == 'transparent') {
		 jQuery(obj)
		 .parents()
		 .each(function(){
				 var bg = jQuery(this).css('backgroundColor');
				 if (bg != 'transparent'
				 && bgcolor == 'transparent')
						 bgcolor = bg;
		});
	}
	return bgcolor;
}

/* ========= */

function galleryAutoShowNow(autoId){
	$("a#photoHandle" + autoId).click();
}

function galleryAutoShow(autoId){
	setTimeout(function(){
				galleryAutoShowNow(autoId);
			}, 1000);
}

function galleryPhotoOnShow(elem){
}

function galleryPhotoOnClose(){
	$('div.fancy_label').remove();
	$('div.fancy_label_own').remove();
}

function galleryPhotoPinRemove(elem){
	var dataObj = $(elem).find('span.photoData')[0];
	var data = dataObj.innerHTML.split(' ');
	var mode = data[0];
	var photoId = data[1];
	var name = data[2];
	$('div.fancy_label_own').remove();
	xajax_doRemoveLabel(mode, photoId, name);
}

function galleryPhotoPinAction(posX, posY, elem){
	var dataObj = $(elem).find('span.photoData')[0];
	var data = dataObj.innerHTML.split(' ');
	var mode = data[0];
	var photoId = data[1];
	var name = data[2];
	xajax_doAddLabel(posX, posY, mode, photoId, name);
}

function galleryPhotoProceedImage(elem){
	var dataObj = $(elem).find('span.photoData')[0];
	var data = dataObj.innerHTML.split(' ');
	var mode = data[0];
	var photoId = data[1];
	var name = data[2];
	galleryCurrentPhotoId = photoId;
}

function galleryPhotoProceedImageAfterLoad(elem){
	var dataObj = $(elem).find('span.photoData')[0];
	var data = dataObj.innerHTML.split(' ');
	var mode = data[0];
	var photoId = data[1];
	var name = data[2];
	xajax_doGetLabels(mode, photoId, name);
}

function galleryPhotoChangeItem(elem){
	$('div.fancy_label').remove();
	$('div.fancy_label_own').remove();
}

function cbGalleryAddLabel(photoId, posX, posY, name, login, userId, own){
	var label;
	alert('test');
	if (galleryCurrentPhotoId != photoId){
		return;
	}
	if (own)
		label = $('<div class = "fancy_label_own"><a href = "todo-url-for-no-fancy-users">' + escape(name) + '</a></div>');
	else
		label = $('<div class = "fancy_label"><a href = "/user/' + escape(login) + '">' + escape(name) + '</a></div>');	
	label.css({
		'left':		posX + 'px',
		'top':		posY + 'px'
	});
	$('#fancy_attacher').append(label);
	$.fn.fancybox._set_labels();
}

function messagesShowMore(){
	$("#messagesMore").show();
	$("#messagesMoreButton").hide();
	return false;
}

function kanjiDetect(){
	var obj1 = document.getElementById('fonttest');
	var obj2 = document.getElementById('fonttest2');
	var w1 = obj1.offsetWidth;
	var h1 = obj1.offsetHeight;
	var w2 = obj2.offsetWidth;
	var h2 = obj2.offsetHeight;
	kanjiSupport = (w1 != w2);
}


var kanjiFixObjList = [];

function kanjiFixCollect(obj){
	if (obj.childNodes.length > 0){
		for (var i = 0; i < obj.childNodes.length; i++){
			kanjiFixCollect(obj.childNodes[i]);
		} 
		return;
	}
	//alert(obj);
//	obj.nodeValue = "X";
//	if (obj.className == 'kanjifixed')
//		return;
//	obj.innerHTML = "X";
	kanjiFixObjList.push(obj);
}

function kanjiFixProcess(splitlen){
//	return;
//	alert(kanjiFixObjList.length);
	if (!splitlen)
		splitlen = 5;
	for (var i = 0; i < kanjiFixObjList.length; i++){
//		alert(obj);
		var obj = kanjiFixObjList[i];
		var text = obj.nodeValue + " "; // simple hack
		var isToConvert = false;
		var rawclr = getComputedBgColor(obj.parentNode);
		var rawclrObj = new RGBColor(rawclr);
		if (rawclrObj.toHex() == "#000000"){
			var bgcolorObj = new RGBColor("red");
		} else {
			var bgcolorObj = rawclrObj;
		}
		var bgcolor = bgcolorObj.toHex();
		var colorObj = new RGBColor($(obj.parentNode).css("color"));
		var color = colorObj.toHex();
		var size = $(obj.parentNode).css("font-size");
		var weight = $(obj.parentNode).css("font-weight");
//		alert(color);
		if (text){
			var sub = "";
			var buffer = "";
			var newNode = document.createElement('span');
			for (var j = 0; j < text.length; j++){
				var code = text.charCodeAt(j);
				if ((code > 10000) && (buffer.length < splitlen)){
					buffer += text.charAt(j);
				} else {
					if (buffer){
						sub += '<img src = "/char.php?q=' + escape(buffer) + '&amp;bgcolor=' + escape(bgcolor) + '&amp;color=' + escape(color) + '&amp;weight=' + escape(weight) + '&amp;size=' + escape(size) + '" alt = "' + addslashessingle(buffer) + '" />';
						buffer = "";
						isToConvert = true;
					}
					if (code > 10000)
						buffer += text.charAt(j);
					else
						sub += text.charAt(j);
				}
			}
			if (isToConvert){
//				obj.replaceNode(newNode);
				newNode.innerHTML = sub;
				obj.parentNode.replaceChild(newNode, obj);
//				obj.nodeValue = sub;
			}
		}
	}
}

function xajaxUpdateContent(){
	kanjiDetect();
	$("a.fancy").fancybox();
	$("a.fancy.wideslim").fancybox({
		'frameHeight': 270,
		'frameWidth': 550
	});
	$("a.fancy.slim").fancybox({
		'frameHeight': /*230 zmienione bo w ie7 suwaki */300
	});
	var hugeh = 480;
	if (screen.height >= 800){
		hugeh = 500;
	}
	$("a.fancy.huge").fancybox({
		'frameWidth': 450,
		'frameHeight': hugeh
	});	
	$(".autofocus").focus();
	$("a.fancy.fancyGallery").fancybox({
		'pinEnable': true,
		'centerOnScroll': false,
		'callbackPinAction': galleryPhotoPinAction,
		'callbackOnStart': galleryPhotoOnShow,
		'callbackOnClose': galleryPhotoOnClose,
		'callbackProceedImage': galleryPhotoProceedImage,
		'callbackProceedImageAfterLoad': galleryPhotoProceedImageAfterLoad,
		'callbackOnChangeItem': galleryPhotoChangeItem,
		'callbackOwnPinRemove': galleryPhotoPinRemove
	});
	kanjifix();
}

function kanjifix(){
	if (!kanjiSupport){
		/* Global */
		kanjiFixObjList = [];
		var kanjiFixList = $(".kanjifix");
		for (var i = 0; i < kanjiFixList.length; i++){
			var kanjiFix = kanjiFixList[i];
			kanjiFix.className = "kanjifixed";
			kanjiFixCollect(kanjiFix);
		}
		kanjiFixProcess(10);
		/* Small */
		kanjiFixObjList = [];
		var kanjiFixList = $(".kanjifix2");
		for (var i = 0; i < kanjiFixList.length; i++){
			var kanjiFix = kanjiFixList[i];
			kanjiFix.className = "kanjifixed";
			kanjiFixCollect(kanjiFix);
		}
		kanjiFixProcess(3);
	}
}

function formSearch(){
	var username = document.getElementById('search').value;
	document.location.href = '/user/' + username;
	return false;
}

function cbUpdateStars(starsId, value){
	var obj = document.getElementById('stars' + starsId);
	obj.className = 'current-rating current-rating' + value;
	obj.parentNode.className = 'star-rating';
	return false;
}

function setStars(groupName, starsId, value){
	xajax_doSetStars(groupName, starsId, value);
	return false;
}

function setStarsPreview(groupName, starsId, value){
	var obj = document.getElementById('stars' + starsId);
	obj.className = 'current-rating current-rating' + value;
	obj.parentNode.className = 'star-rating star-rating-confirmation';
	return false;
}

function addStars(containerId, groupName, starsName){
	xajax_doAddStars(containerId, groupName, starsName);
	hideAddBarPopupMenu();
	return false;
}

function cbDeleteStars(starsId){
	var obj = document.getElementById('starsContainer' + starsId);
	obj.parentNode.removeChild(obj);
}

function deleteStars(groupName, starsId){
	xajax_doDeleteStars(groupName, starsId);
	return false;
}

function showAddBarPopupMenu(groupId){
	hideAddBarPopupMenu();
	var obj = document.getElementById('groupPopup' + groupId);
	addBarPopupMenuActive = obj;
	obj.style.display = "block";
	obj.style.marginTop = "0px";
	var scrHeight;
	if (window.innerHeight)
		scrHeight = window.innerHeight;
	else if (document.documentElement && document.documentElement.clientHeight)
		scrHeight = document.documentElement.clientHeight;
	else if (document.body)
		scrHeight = document.body.clientHeight;
	var dist = scrHeight - (obj.offsetTop + obj.offsetHeight - document.documentElement.scrollTop);
//	alert(dist);
	if (dist < 10){
		obj.style.marginTop = dist + "px";
//		obj.style.marginTop = Math.max(dist, -100) + "px";
//		dist += Math.max(dist, -100);
	}
/*	if (dist < 10)
		window.scrollTo(0, -dist + 10);*/
	return false;
}

function hideAddBarPopupMenu(){
	if (addBarPopupMenuActive)
		addBarPopupMenuActive.style.display = "none";
	return false;
}


function addEditPhotoDone(groupId, groupName){
	$.fn.fancybox.close();
	xajax_doUpdateGroupPhotos(groupId, groupName);
}

function profileeditDone(){
	$.fn.fancybox.close();
	xajax_doUpdateProfile();	
}

function windowMouseDown(e){
	var target;
	if (e.target)
		target = e.target; else
		target = e.srcElement;
	while (target && target != addBarPopupMenuActive){
		target = target.parentNode;
	}
	if (target != addBarPopupMenuActive)
		hideAddBarPopupMenu();
}

var activeCaptchedForm = null;
var activeCaptchaDone = false;
function popupCaptchaCallback(){
	activeCaptchaDone = true;
	activeCaptchedForm.submit();
}

function popupCaptchaDone(){
	window.parent.popupCaptchaCallback();
	$.fn.fancybox.close();
}

function setCaptchedForm(form){
	activeCaptchedForm = form;
	activeCaptchaDone = false;
}

function messageSendSubmit(form){
	if ((form == activeCaptchedForm) && (activeCaptchaDone))
		return true;
	setCaptchedForm(form);
	$("a#messageSendFancy").click(); 
	return false;
}

function mailboxCheckUsername(value){
	xajax_doCheck(value);
}

var mailboxRealSubmit = false;

function cbMailboxOK(){
	mailboxRealSubmit = true;
	document.getElementById("mailboxForm").submit();
}

function mailboxSubmit(){
	if (mailboxRealSubmit)
		return true;
	mailboxRealSubmit = false;
	mailboxCheckUsername(document.getElementById("mailboxFormUsername").value);
	return false;
}

function goto(url){
	document.location.href = url;
}

/*****************************************************************************/

var oldload = window.onload;
window.onload = function(){
	if (document.body.attachEvent){
		// ie
		document.body.attachEvent('onmousedown', windowMouseDown); 
	} else {
		window.onmousedown = windowMouseDown;
	}
	$('form').submit(function(){
		// On submit disable its submit button
/*
		TODO: Wlaczyc, jak uporam sie z Captcha w Commentsach.
		$('input[type=submit]', this).attr('disabled', 'disabled');
		$('input[type=submit]', this).attr('value', lang_please_wait);
*/
	});
	$(document).ready(function(){
		$('textarea[maxlength]').keyup(function(){
			var max = parseInt($(this).attr('maxlength'));
			if($(this).val().length > max){
				$(this).val($(this).val().substr(0, $(this).attr('maxlength')));
			}
		});
	});
	if (oldload)
		oldload();
}

