var errWindow      = null;
var infoWindow     = null;
var popupWindow    = null;

/**
 * Display Error Message
 *
 * @param Msg   - error message
 */
function displayErrorMessage( mgs ) {
	if ( mgs.length == 0) {
		return false;
	}

	if (errWindow) {
		try {
			errWindow.parentNode.removeChild(errWindow);
		} catch (e) {
			alertErr(e, 'displayErrorMessage');
			return false;
		}
	}

	try {
		var msgBox              = document.createElement("DIV");
		msgBox.id               = 'errBox';
		msgBox.name             = 'errBox';
		msgBox.className        = "errormessage";

		divBody = '<font size="3">' + mgs + '</font>';

		msgBox.innerHTML = divBody;
		bodyContentElement = document.getElementById('bodyContent');
		bodyContentElement.insertBefore(msgBox, bodyContentElement.firstChild);
		window.scrollTo(0, msgBox.offsetTop);

		errWindow = msgBox;
	} catch (e) {
		alertErr(e, 'displayErrorMessage');
		return false;
	}
}

/**
 * Display Information Message
 *
 * @param Msg   - information message
 */
function displayInfoMessage( mgs ) {
	if ( mgs.length == 0) {
		return false;
	}
	if (infoWindow) {
		try {
			infoWindow.parentNode.removeChild(infoWindow);
		} catch (e) {
			alertErr(e, 'displayInfoMessage');
			return false;
		}
	}

	try {
		var msgBox              = document.createElement("DIV");
		msgBox.id               = 'errBox';
		msgBox.name             = 'errBox';
		msgBox.className        = "infomessage";

		divBody = '<font size="3">' + mgs + '</font>';

		msgBox.innerHTML = divBody;
		bodyContentElement = document.getElementById('bodyContent');
		bodyContentElement.insertBefore(msgBox, bodyContentElement.firstChild);
		window.scrollTo(0, msgBox.offsetTop);

		infoWindow = msgBox;
	} catch (e) {
		alertErr(e, 'displayErrorMessage');
		return false;
	}
}

function alertErr(e, fName) {
//	alert (e.name + "\n" + e.message);
}

/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////

function displayPopupMessage( mgs, title ) {
	if (!popupWindow) {
		try {
			var msgBox              = document.createElement("DIV");
			msgBox.id               = 'errBox';
			msgBox.name             = 'errBox';
			msgBox.className        = "error_div";

//			divBody  = '<div class="error_div_header" onmousedown="StartDrag(event)\;" onmousemove="Drag(event)\;" onmouseup="EndDrag(event)\;">';
//			divBody += '<div class="error_div_close" onclick="CloseBox()\;">X</DIV>' + title + '</div>';
//			divBody += '<table width="100%"><tr><td>';
			divBody  = '<table width="100%"><tr><td>';
			divBody += '<font size="3">' + mgs + '</font><br />';
			divBody += '</td></tr><tr align="center" valign="middle"><td>';
			divBody += '<input type="button" value="Close" onclick="CloseBox()\;">';
			divBody += '</td></tr><table>';

			msgBox.innerHTML = divBody;
			document.body.appendChild(msgBox);
			popupWindow = msgBox;
			centerDlg(popupWindow);
			popupWindow.focus();
		} catch (e) {
			alertErr(e, 'displayErrorMessage');
			return false;
		}
	}
}

function getBodyScrollTop()
{
  return self.pageYOffset ||
    (document.documentElement && document.documentElement.scrollTop) ||
    (document.body && document.body.scrollTop);
}

function getBodyScrollLeft()
{
  return self.pageXOffset ||
    (document.documentElement && document.documentElement.scrollLeft) ||
    (document.body && document.body.scrollLeft);
}

function centerDlg(dlg) {
	try {
		dlg_width  = dlg.offsetWidth;
		dlg_height = dlg.offsetHeight;

		elWidth2  = dlg_width / 2;
		elHeight2 = dlg_height;

		screenW2 = screen.width / 2;
		screenH2 = screen.height / 2;

		var hScroll = getBodyScrollLeft();
		var vScroll = getBodyScrollTop();

		posX = hScroll + screenW2 - elWidth2;
		posY = vScroll + screenH2 - elHeight2;

		dlg.style.left = posX + 'px';
		dlg.style.top  = posY + 'px';
	} catch (e) {
		alertErr(e, 'centerDlg');
		return false;
	}
}

var currentDrag = null;
var lastCoords = { x: 0, y :0} ;
var currentPos = { x: 0, y :0} ;

function _getEvent(event) {
	if (!event)
	{
		var event = window.event;
	}
	return event;
}

function _getEventTarget(event) {
	var targ;
	event = _getEvent(event);
	if (event.target)
	{
		targ = event.target;
	}
	else if (event.srcElement)
	{
		targ = event.srcElement;
	}
	if (targ.nodeType == 3) // defeat Safari bug
	{
		targ = targ.parentNode;
	}

	return targ;
}

var StartDrag = function(event) {
	event = _getEvent(event);
	currentDrag = popupWindow;
	coordX = currentDrag.style.left;
	coordY = currentDrag.style.top;

	currentPos =
	{
		x : currentDrag.offsetLeft,
		y : currentDrag.offsetTop
	};

	lastCoords =
	{
		x : event.screenX,
		y : event.screenY
	};
}

var Drag = function(event) {
	event = _getEvent(event);
	if (currentDrag) {

		var currentCoords =
		{
			x : event.screenX,
			y : event.screenY
		} ;

		if ( !lastCoords ) {
			lastCoords = currentCoords ;
			return ;
		}

		currentPos =
		{
			x : currentPos.x + ( currentCoords.x - lastCoords.x ),
			y : currentPos.y + ( currentCoords.y - lastCoords.y )
		} ;

		lastCoords = currentCoords ;

		currentDrag.style.left	= currentPos.x + 'px' ;
		currentDrag.style.top	= currentPos.y + 'px' ;
	}
}

var CloseBox = function(event) {
	event = _getEvent(event);
	document.body.removeChild(popupWindow);
	delete(el);
	popupWindow = null;
}

var EndDrag = function() {
	currentDrag = null;
}

function addCookie(szName,szValue,dtDaysExpires) 
{
	var dtExpires = new Date();
	var dtExpiryDate = '';
	dtExpires.setTime(dtExpires.getTime() + dtDaysExpires * 24 * 60 * 60 * 1000);

	 dtExpiryDate = dtExpires.toGMTString();

	document.cookie = szName + "=" + szValue + "; expires=" + dtExpiryDate;
}

/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////

var objLastEditedComment = null;
var currentCommentID = 0;

var CancelEditAction = function CancelEditAction(comment_id) {
    try {
        if (objLastEditedComment) {
            objLastEditedComment.style.display = 'inline';
            objLastEditedComment = null;
        }

        edit_form = document.getElementById('comment_edit');
        edit_form.

        form = document.getElementById('comments_form');
        form.elements['comment_id'].value = 0;
        form.elements['_action'].value = 'save_comment';
        edit_form.childNodes[0].childNodes[0].childNodes[2].childNodes[0].removeChild(document.getElementById('edit_cancel_button'));
        document.getElementById('add_comment').value = "";
        document.getElementById('comment_title').value = "";
        document.getElementById('original_comment_place').appendChild(edit_form);
        document.getElementById('new_post_div').style.display = 'inline';
        document.getElementById('comment_submit_btn').value = 'Submit';
    } catch (e) {
        alertErr(e, 'CancelEditAction');
    }
}

function CommentsPostEditAction(comment_id) {
    try {
        if (objLastEditedComment) {
            objLastEditedComment.style.display = 'inline';
        }
        edit_form = document.getElementById('comment_edit');
        edit_form.parentNode.removeChild(edit_form);
        comment_element = document.getElementById('comment_' + comment_id);
        comment_element_unparsed = document.getElementById('hidden_comment_' + comment_id);
        comment_element_title    = document.getElementById('hidden_comment_title_' + comment_id);

        new_edit_parent = comment_element.parentNode;
        comment_element.style.display = 'none';
        comment_element_content = comment_element.childNodes[0];

        document.getElementById('new_post_div').style.display = 'none';
        new_edit_parent.appendChild(edit_form);
        if (!document.getElementById('edit_cancel_button')) {
            cancelButton         = document.createElement("INPUT");
            cancelButton.type    = 'button';
            cancelButton.value   = 'Cancel';
            cancelButton.onclick = CancelEditAction;
            cancelButton.id      = 'edit_cancel_button';

            edit_form.childNodes[0].childNodes[0].childNodes[2].childNodes[0].appendChild(cancelButton);
        }
        document.getElementById('comment_submit_btn').value = 'Update';
        document.getElementById('comment_title').value = comment_element_title.value;
        document.getElementById('add_comment').value = comment_element_unparsed.value;

        form = document.getElementById('comments_form');
        form.elements['comment_id'].value = comment_id;
        form.elements['_action'].value = 'update_comment';
        objLastEditedComment = comment_element;
    } catch (e) {
        alertErr(e, 'CommentsPostEditAction');
    }
}

function CommentsPostDeleteAction(comment_id) {
    try {
        form = document.getElementById('comments_form');
        form.elements['comment_id'].value = comment_id;
        form.elements['_action'].value = 'delete_comment';
        form.submit();
    } catch (e) {
        alertErr(e, 'CommentsPostDeleteAction');
    }
}

function checkCommentForm() {
	errStr = "";
	if (0 == document.getElementById('comment_title').value.length) {
		errStr += 'Comment Title cannot be empty<br />';
	}
	if (0 == document.getElementById('add_comment').value.length) {
		errStr += 'Comment Description cannot be empty<br />';
	}
	displayErrorMessage(errStr);

	if (errStr.length != 0) {
		return false;
	}
	return true;
}