var editor = new Array();
var placeHolder = new Array();
function editPost(postId) {
	var dateTime = new Date();
	var d = dateTime.getTime();
	placeHolder[d] = $('postId_' + postId);
	var dataClone = placeHolder[d].cloneNode(1);
	function cancelEdit() {
		placeHolder[d].innerHTML = dataClone.innerHTML;
	}
	new Ajax.Request('/editPost.php', {
	parameters : '&ID=' + postId + '&u=' + d,
	onSuccess : function(req) {
		placeHolder[d].innerHTML = req.responseText;
		setTimeout(function() {
			editor[d] = CKEDITOR.replace('editor_' + d, {
			filebrowserBrowseUrl : '/media/index.php',
			filebrowserUploadUrl : '/media/index.php'
			});
			var a = new Element('input', {
			'href' : 'javascript:void(0)',
			'type' : 'button',
			'value' : 'Avbryt'
			});
			a.onclick = function() {
				cancelEdit();
			};
			placeHolder[d].appendChild(a);
		}, 200);
	}
	});
}
function removePost(postId) {
	if (!confirm("Vill du verkligen ta bort inlägget och dess kommentarer?"))
		return false;
	new Ajax.Request('/removePost.php', {
	parameters : '&ID=' + postId,
	onSuccess : function(r) {
		$('postId_' + postId).fade( {
			duration : 0.5
		});
	},
	onFailure : function(r) {
		alert('Kunde inte ta bort inlägget.');
	}
	});
}
function newPost(postId) {
	var dateTime = new Date();
	var d = dateTime.getTime();
	placeHolder[d] = new Element('div').addClassName('post');
	$('content').insert( {
		top : placeHolder[d]
	});
	function cancelEdit() {
		placeHolder[d].remove();
	}
	new Ajax.Request('/newPost.php', {
	parameters : '&ID=' + postId + '&u=' + d,
	onSuccess : function(req) {
		placeHolder[d].innerHTML = req.responseText;
		setTimeout(function() {
			editor[d] = CKEDITOR.replace('editor_' + d, {
			filebrowserBrowseUrl : '/media/index.php',
			filebrowserUploadUrl : '/media/index.php'
			});
			var a = new Element('input', {
			'href' : 'javascript:void(0)',
			'type' : 'button',
			'value' : 'Avbryt'
			});
			a.onclick = function() {
				cancelEdit();
			};
			placeHolder[d].appendChild(a);
		}, 200);
	}
	});
}
function cancelPreview(u) {
	placeHolder[u].preview.remove();
	placeHolder[u].setStyle( {
		display : 'block'
	});
}
function previewPost(form) {
	var u = form.u.value;
	$(form).content.value = editor[u].getData();
	if (!placeHolder[u].preview) {
		placeHolder[u].preview = new Element('div').addClassName('post preview');
	}
	Element.insert(placeHolder[u], {
		before : placeHolder[u].preview
	});
	placeHolder[u].setStyle( {
		display : 'none'
	});
	try {
		new Ajax.Request('/previewPost.php', {
		parameters : $(form).serialize(),
		onSuccess : function(r) {
			placeHolder[u].preview.innerHTML = r.responseText;
			var a = new Element('input', {
			'href' : 'javascript:void(0)',
			'type' : 'button',
			'value' : 'Spara inlägg'
			});
			a.onclick = function() {
				postForm(form);
				cancelPreview(u);
			};
			placeHolder[u].preview.appendChild(a);
		},
		onComplete : function(r) {},
		onFailure : function(r) {
			alert('Ett fel uppstod, du kanske inte har behörighet att redigera inlägget.');
		}
		});
	} catch (e) {
		alert(e.message);
	}
	return false;
}
function postForm(form) {
	var u = form.u.value;
	$(form).content.value = editor[u].getData();
	$(form).addClassName('sending');
	try {
		$(form).request( {
		onSuccess : function(r) {
			$(form).removeClassName('sending');
			if ($(form).doCreatePost) {
				document.location.href = r.responseText;
			} else {
				placeHolder[u].innerHTML = r.responseText;
			}
		},
		onComplete : function(r) {},
		onFailure : function(r) {
			form.removeClassName('sending');
			alert('Ett fel uppstod, du kanske inte har behörighet att redigera inlägget.');
		}
		});
	} catch (e) {
		alert(e.message);
	}
	return false;
}
function dropdownmenu(el) {
	if ($(el).getStyle("display") == 'none')
		$(el).appear( {
			'duration' : 0.3
		});
	else
		var ul = $(el).fade( {
			'duration' : 0.3
		});
}
function publishComment(commentId) {
	new Ajax.Request('/comments.php', {
	parameters : '&doPublishComment=1&ID=' + commentId,
	onSuccess : function(req) {
		$('commentId_' + commentId).removeClassName('unpublished').innerHTML = req.responseText;
	},
	onFailure : function(req) {
		alert("Kunde inte publicera kommentar.");
	}
	});
}
function deleteComment(commentId) {
	if (!confirm('Vill du verkligen radera kommentaren?'))
		return false;
	new Ajax.Request('/comments.php', {
	parameters : '&doDeleteComment=1&ID=' + commentId,
	onSuccess : function(req) {
		$('commentId_' + commentId).fade( {
			duration : 0.3
		});
		setTimeout(function() {
			$('commentId_' + commentId).remove();
			if ($('comments').childElements().length == 0)
				$('comments').insert('<p>Det finns inga kommentarer</p>');
		}, 300);
	},
	onFailure : function(req) {
		alert("Kunde inte ta bort kommentar.");
	}
	});
}
function postComment(form) {
	$(form).addClassName("sending");
	new Ajax.Request('/comments.php', {
	parameters : $(form).serialize(),
	onSuccess : function(req) {
		$(form).removeClassName("sending");
		$(form).reset();
		if ($('comments').firstDescendant().nodeName == 'P')
			$('comments').firstDescendant().remove();
		var a = new Element('div').update(req.responseText);
		var comment = a.firstDescendant();
		comment.setStyle( {
			display : 'none'
		});
		$('comments').insert(comment);
		comment.appear( {
			duration : 0.5
		});
		
		setTimeout(function() {
			$(comment).scrollTo();
		}, 100);
	},
	onFailure : function(req) {
		$(form).removeClassName("sending");
		alert(req.responseText);
	}
	});
	return false;
}
function previewStyle(form) {
	$('style').href = "/style/preview.php?" + $(form).serialize();
}
Event.observe(window, 'load', function() {
	$$('code').each(function(el) {
		hljs.highlightBlock(el, '    ');
	});
});
function OnNodeRemovedFromDocument(event) {
	$$('.error').each(function(el) {
		if (el.reference) {
			if ($(el.reference).form === event.target) {
				el.reference.removeWarning();
			}
		}
	});
}
function validateForm(el) {
	el.warnings = false;
	el.getElements().each(function(control) {
		control.addWarning = function(content) {
			if (!control.warning) {
				control.warning = $(document.createElement('div')).addClassName("error rc dropshadow").setStyle( {
					display : 'none'
				});
				control.warning.reference = control;
				document.body.appendChild(control.warning);
			}
			control.warning.setStyle( {
			left : control.cumulativeOffset().left + control.scrollWidth + 10 + 'px',
			top : control.cumulativeOffset().top - 3 + 'px',
			position : 'absolute',
			zIndex : '2000'
			}).update(content);
			control.addClassName("error");
			control.warning.appear( {
				duration : 0.3
			});
			el.warnings = true;
			el.addEventListener('DOMNodeRemoved', OnNodeRemovedFromDocument, false);
		};
		control.removeWarning = function() {
			if (control.warning) {
				control.warning.fade( {
					duration : 0.3
				});
				control.warning = false;
				control.removeClassName("error");
			}
		};
		control.validate = function() {
			if (control.hasClassName('required')) {
				if (control.type == 'checkbox') {
					if (control.checked != true) {
						control.addWarning('Får inte lämnas okryssad.');
					} else {
						control.removeWarning();
					}
				} else if (control.type == 'radio') {
					var nodeList = control.form[control.name];
					var checked = false;
					for ( var i = 0; i < nodeList.length; i++) {
						if (nodeList[i].checked == true) {
							checked = true;
							break;
						}
					}
					if (!checked) {
						if ($(nodeList[nodeList.length - 1]).addWarning)
							$(nodeList[nodeList.length - 1]).addWarning('Du måste göra ett val');
					} else {
						if (nodeList[nodeList.length - 1].warning) {
							nodeList[nodeList.length - 1].warning.remove();
							nodeList[nodeList.length - 1].warning = false;
							nodeList[nodeList.length - 1].removeClassName("error");
						}
					}
				} else if (control.nodeName == 'select' || control.nodeName == 'SELECT') {
					if (control.value.length < 1) {
						control.addWarning('Du måste göra ett val');
					} else {
						control.removeWarning();
					}
				} else {
					if (control.value.length < 1) {
						control.addWarning('Får inte vara tomt');
					} else {
						control.removeWarning();
					}
				}
			}
			if (control.hasClassName('email')) {
				var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,8}$/i;
				if (control.value.search(emailRegEx) == -1 && (control.value.length > 0 || control.hasClassName('required'))) {
					control.addWarning('Du måste ange en korrekt e-postadress');
				} else {
					control.removeWarning();
				}
			}
		};
		control.observe('focus', function() {
			control.removeWarning();
		});
		control.observe('blur', control.validate);
		control.validate();
	});
	if (!el.warnings)
		return true;
	else
		return false;
}
