var PageClass = function() {
	this.loaderImage = new Image();
	this.loaderImage.src = '/styles/loading.gif';
	this.commentHolder = false;
} 

PageClass.prototype.articleVote = function(articleId, direction) {
	var jsonRequest = new Request.HTML({url: "/ajax.php", onSuccess: function(elTree, elList, elHtml){
		if (elHtml && isNaN(elHtml)) {
			$('articleVoteError').innerHTML = elHtml;
			$('articleVoteError').style.display = 'block';
			$('articleVoteOk').style.display = 'none';
		} else {
			$('articleVoteError').style.display = 'none';
			$('articleVoteButtons').style.display = 'none';
			$('articleVoteOk').style.display = 'block';
			if(!isNaN(elHtml)) {
				$('ratingValue').innerHTML = elHtml;
			}
		}
	}}).post({action:'articleVote', 'articleId': articleId, 'direction': direction});	
}

PageClass.prototype.articleTab = function(tab) {
	if(tab == 'comments') {
		$('backlinksLink').className = '';
		$('backlinks').style.display = 'none';
		$('commentsLink').className = 'selected';
		$('comments').style.display = 'block';
		document.location.hash = tab;
	} else if(tab == 'backlinks') {
		$('backlinksLink').className = 'selected';
		$('backlinks').style.display = 'block';
		$('commentsLink').className = '';
		$('comments').style.display = 'none';
		document.location.hash = tab;
	}
}

PageClass.prototype.articleChangeUser = function(typeId){
	switch(typeId-0) {
		case 2:
			$('smallLoginForm').style.display = 'block';
			$('smallRegistrationForm').style.display = 'none';
			$('submitButton').style.display = 'none';
			break;
		case 3:
			$('smallLoginForm').style.display = 'none';
			$('smallRegistrationForm').style.display = 'block';
			$('submitButton').style.display = 'none';
			break;
		default:
			$('smallLoginForm').style.display = 'none';
			$('smallRegistrationForm').style.display = 'none';
			$('submitButton').style.display = 'block';
	}
	$('articleUserError').style.display = 'none';
}

PageClass.prototype.setUserTitle = function(login){
	if (login) {
		$('userBlockNemo').style.display = 'none';
		$('userBlockLogin').innerHTML = login;
		$('userBlockLogged').style.display = 'block';
	} else {
		$('userBlockNemo').style.display = 'block';
		$('userBlockLogin').innerHTML = '';
		$('userBlockLogged').style.display = 'none';
	}
}

PageClass.prototype.ajaxLogin = function(formId) {
	if(!$('loginFormEmail') || !$('loginFormEmail').value || !$('loginFormPassword') || !$('loginFormPassword').value) {
		return false;
	}
	$('articleUserError').style.display = 'none';
	var input = {
		'action': 'ajaxLogin',
		'email':  $('loginFormEmail').value,
		'pass':   $('loginFormPassword').value
	}

	var jsonRequest = new Request.JSON({'url': '/ajax.php', 'onSuccess': function(data) {
			if (data && data.ok) {
				if($('articleUserRecognize')) {
					$('articleUserRecognize').style.display = 'none';
				}
				$('articleUserMessageLogged').style.display = 'block';
				if ($('submitButton')) {
					$('submitButton').style.display = 'block';
				}
				if($('articleUserName')) {
					$('articleUserName').style.display = 'none';
					$('articleUserNameField').disabled = 'disabled';
				}
			} else {
				$('articleUserError').style.display = 'block';
				$('articleUserError').innerHTML = data.message;
			}
			Page.setUserTitle(data.message);
		}
	}).post(input);
}

PageClass.prototype.ajaxRegister = function(formId) {
	if(!$('regFormName') || !$('regFormName').value || !$('regFormEmail') || !$('regFormEmail').value) {
		return false;
	}
	$('articleUserError').style.display = 'none';
	var input = {
		'action': 'ajaxRegister',
		'title':   $('regFormName').value,
		'email':  $('regFormEmail').value
	}
	var jsonRequest = new Request.JSON({url: "/ajax.php", onSuccess: function(data) {
			if (data && data.ok) {
				if($('articleUserRecognize')) {
					$('articleUserRecognize').style.display = 'none';
				}
				$('articleUserMessageRegistred').style.display = 'block';
				
				if ($('submitButton')) {
					$('submitButton').style.display = 'block';
				}
				if($('articleUserName')) {
					$('articleUserName').style.display = 'none';
					$('articleUserNameField').disabled = 'disabled';
				}
			} else {
				$('articleUserError').style.display = 'block';
				$('articleUserError').innerHTML = data.message;
			}
			Page.setUserTitle(data.message);
		}
	}).post(input);
}

PageClass.prototype.commentReply = function(commentId){
	if(!this.commentHolder) {
		this.commentHolder = document.createElement('div');
		this.commentHolder.className = 'commentHolder';
		this.commentHolder.innerHTML = 'Váš nový komentář';
	}
	var comment = $('comment' + commentId);
	if(!comment) return false;
	if(comment.nextSibling.nextSibling && comment.nextSibling.nextSibling.id) {
		comment.parentNode.insertBefore(this.commentHolder, comment.nextSibling.nextSibling);
	}
	else if(comment.nextSibling && comment.nextSibling.id) {
		comment.parentNode.insertBefore(this.commentHolder, comment.nextSibling);
	} else {
		comment.parentNode.appendChild(this.commentHolder);
	}
	$('commentParent').value = commentId;
	
	//if(comment.nextSibling).tagName
	//comment.parentNode.insertAfter()
}

PageClass.prototype.reloadCaptcha = function(imageId){
	if($(imageId)) {
		var image = $(imageId);
	} else {
		return false;
	}
	image.parentNode.style.background = 'transparent url("' + this.loaderImage.src + '") no-repeat center center';
	image.style.visibility = 'hidden';
	image.onload = function() {
		this.style.visibility = 'visible';
		this.parentNode.style.background = 'none';
	};
	image.src = image.src.replace(/&nc=\d+/, '&nc='+(new String((new Date).getTime())).substr(8,5));
}

PageClass.prototype.showOverlay = function(link){
	if(!$('overlay')) {
		var div = document.createElement('div');
		div.id = 'overlay';
	    div.onclick = function() {
			Page.closePopups();
			this.style.display = 'none';
			return false;
		}
	    $('mother').parentNode.appendChild(div);
	} else {
		var div = $('overlay');
	}
	div.style.display = 'block';
}

PageClass.prototype.hideOverlay = function(link){
	
}

PageClass.prototype.closePopups = function(link){
	$$('div').each(function(el) {
		if(el.className.indexOf('popup') > -1 && el.className.indexOf('popup-in') == -1) {
			el.style.display = 'none';
		}
	})
}

PageClass.prototype.popupRecomend = function(link, offset){
	this.showOverlay();
	if(!offset) offset = -100;
	$('popupRecomend').style.top = (this.findPosY(link)+offset) + 'px';
	$('popupRecomend').style.display = 'block';
	$('popupRecomendError').style.display = 'none';
	$('recomendForm').style.display = 'block';
	$('popupRecomendOk').style.display = 'none';

}

PageClass.prototype.popupRecomendSend = function(){
	var input = {
		'action': 'recomend',
		'sender': $('recommendSender').value,
		'from': $('recommendFrom').value,
		'target': $('recommendTarget').value,
		'comment': $('recommendComment').value,
		'captcha': $('recomendCaptcha').value
	}
	$('popupRecomendError').style.display = 'none';
	var jsonRequest = new Request.HTML({url: "/ajax.php", onSuccess: function(elTree, elList, elHtml){
			if (elHtml) {
				$('popupRecomendError').style.display = 'block';
				$('popupRecomendError').innerHTML = elHtml;
			}
			else {
				$('recomendForm').style.display = 'none';
				$('popupRecomendOk').style.display = 'block';
			}
		}
	}).post(input);
}

PageClass.prototype.showPassForm = function(flag) {
	$('passTr').style.display = flag ? '' : 'none';
	$('passCheckTr').style.display = flag ? '' : 'none';
	$('profilePassword').disabled = flag ? '' : 'disabled';
	$('profilePasswordCheck').disabled = flag ? '' : 'disabled';
	$('profilePassword').value = '';
	$('profilePasswordCheck').value = '';
}

PageClass.prototype.changeDomainSelect = function(domainId) {
	$$('#loginForm select[id^=categorySelect]').each(function(el) {
		if(el.id == 'categorySelect' + domainId) {
			el.style.display = 'block';
			el.disabled = '';
		} else {
			el.style.display = 'none';
			el.disabled = 'disabled';
		} 
	});
}

PageClass.prototype.wysiwyg = function(holder) {
	tinyMCE.init({
		mode : "textareas",
		editor_selector : "mceEditor",
		editor_deselector : "mceNoEditor",
		entity_encoding : "raw",
		relative_urls : false,
		theme : "advanced",
		language: "cs",
		
		plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",//simplebrowser,advlink,inlinepopups,contextmenu,fullscreen",
		
		theme_advanced_buttons1_add : "|,fontsizeselectcut,copy,paste,pastetext,pasteword,forecolor,backcolor,,insertimage,nonbreaking",
    	theme_advanced_buttons2_add : "|,tablecontrols",
    	theme_advanced_buttons3 : "",
	
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_blockformats : "p,h2,h3,h4",
		theme_advanced_resizing : true,
 		theme_advanced_resize_horizontal : true,
 		theme_advanced_statusbar_location : "bottom",


		file_browser_callback : "TinyMCE_simplebrowser_browse",

    	height: "350px",

    	plugin_simplebrowser_width : '800',
		plugin_simplebrowser_height : '600',
		plugin_simplebrowser_browselinkurl : '/_data/wysiwyg/plugins/simplebrowser/browser.html?Connector=connectors/php/connector.php',
		plugin_simplebrowser_browseimageurl : '/_data/wysiwyg/plugins/simplebrowser/browser.html?Type=Image&Connector=connectors/php/connector.php',
		plugin_simplebrowser_browseflashurl : '/_data/wysiwyg/plugins/simplebrowser/browser.html?Type=Flash&Connector=connectors/php/connector.php',
    	relative_urls : false,
		extended_valid_elements : "a[name|href|target|title|onclick],img[src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|style|class],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
		});
}

PageClass.prototype.dateField = function(field, trigger) {
	var cFrom = new Calendar({
		inputField: field,
		dateFormat: "%d.%m.%Y",
		trigger: trigger,
		bottomBar: false,
		onSelect: function() {
			var date = Calendar.intToDate(this.selection.get());
			this.hide();
		}
	});
}


PageClass.prototype.findPosX = function(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
    do {
        curleft += obj.offsetLeft;
    } while (obj = obj.offsetParent);
    }
    return curleft;
}

PageClass.prototype.findPosY = function(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
    do {
        curtop += obj.offsetTop;
    } while (obj = obj.offsetParent);
    }
    return curtop;
}


var Page = new PageClass();

