/*********************************************************************************/
/**			copyright (c) PlanetCalc.com, 2007  			**/
/**		    	messages processing function				*/
/*********************************************************************************/
function formatMessage( pattern ) {
	var result = new String( pattern );
	for( var i = 1;i<arguments.length;++i ) {
		result = result.replace("%"+i.toString(), arguments[i] );
	}
	return result;
}

function getFormattedMessage( id ) {
    var elem = document.getElementById(id);
    if (null == elem)
	return "Error message " + id + " is not included by server-side code. Contact site support";
	
    var result = elem.innerHTML;
    for( var i = 1;i<arguments.length;++i ) {
        result = result.replace("%"+i.toString(), arguments[i] );
    }
    return result;
}

var lastErrorObject = null;
var lastErrorObjectBorderColor = "";
var lastErrorObjectColor = "";
var lastErrorMessageBox = null;

function showOrClearError( obj, messageText, messageboxid ) {
	if ( messageText.length ) {
		showError( obj, messageText, messageboxid );
		return false;
	} else {
		clearError( obj );
		return true;
	}
}

//obj can be null for server errors - not connected with particular input
function showError( obj, messageText, messageboxid ) {
	var msgboxid = messageboxid ? messageboxid : ( obj ? obj.id + "_errmsg" : "errmsg") ;
	var msgbox = document.getElementById(msgboxid);
	if ( msgbox == null ) {
        	if ( messageText.length>0 ) {
	            alert( messageText );
        	}
	} else {
		if ( lastErrorObject ) {
			clearError( lastErrorObject );
		}

		if ( obj ) {
			if ( obj != lastErrorObject ) {
				lastErrorObject = obj;
				lastErrorObjectBorderColor = obj.style.borderColor;
				lastErrorObjectColor = obj.style.color;
				lastErrorMessageBox = msgbox;
			}
			obj.style.borderColor="#FF0000";
			obj.style.color ="#FF0000";
		}
	       	msgbox.innerHTML = messageText;
		msgbox.style.display = "block";
		msgbox.style.zIndex = 1000000;

		if (obj && obj.offsetParent) {
			var temp = obj;
			var offL = 0;
			var offT = 0;
			var absolute = false;
			while(temp.offsetParent)
			{
				absolute |= (temp.offsetParent.style.position == "absolute");				
				offL += temp.offsetParent.offsetLeft;
				offT += temp.offsetParent.offsetTop;
				temp = temp.offsetParent;
			}	
			if (absolute) {
				msgbox.style.left = (offL + obj.offsetParent.offsetWidth + 3) + "px";
				msgbox.style.top = (offT + obj.offsetTop) + "px";
			}
		}
	}
}

function clearError( obj ) {

	if ( lastErrorObject == obj ) {
		if ( lastErrorMessageBox ) {
			lastErrorMessageBox.style.display = "none";
		}
		lastErrorObject.style.borderColor = lastErrorObjectBorderColor;
		lastErrorObject.style.color =lastErrorObjectColor;

		lastErrorObject = null;
		lastErrorMessageBox = null;
	}
}

function clearLastError( ) {
	if ( lastErrorObject ) {
		if ( lastErrorMessageBox ) {
			lastErrorMessageBox.style.display = "none";
		}
		lastErrorObject.style.borderColor = lastErrorObjectBorderColor;
		lastErrorObject.style.color =lastErrorObjectColor;
		lastErrorObject = null;
		lastErrorMessageBox = null;
	}
}

function reportScriptError( e ) {
	alert( e );
}

function htmlencode( _txt ) {
	var txt = new String( _txt );
	return txt?txt.replace("<","&lt;").replace(">","&gt;").replace("&","&amp;").replace("\"","&quot;"):"";
}

