
function _viewObj(pValue,pName,pType,pLevels) {
pType = new String(pType).toLowerCase();
if (new String(pName) == "undefined")
pName = "input";
if (new String(pType).search(/html|text/i) == -1)
pType = "text";
if (pLevels == "undefined")
pLevels = -1; 
var str="";
if (typeof pValue != "function") { var br=(pType == "text"? "\n" : (pType == "html" ? "<br>" : ""));
if ((typeof pValue == "object" && !!pValue) && (pValue.length) && (!pValue.substring)) { try {
for (var i=0;i<pValue.length;i++) {
if (pLevels==0) {
str+=br+pName+"["+i+"]: "+pValue;
}else{
str+=""+_viewObj(pValue[i],pName+"["+i+"]",pType,pLevels-1);
}
}
} catch (e) {
str+=br+pName+": "+pValue+" (Not an array)";
}
} else if (typeof pValue == "object" && !!pValue && (!pValue.substring)){ try {
for (var prop in pValue) {
if (pLevels==0) {
str+=br+pName+"."+prop+": "+pValue;
}else{
str+=""+_viewObj(pValue[prop],pName+"."+prop,pType,pLevels-1);
}
}
} catch (e) {
str+=br+pName+": "+pValue+" (Not an object)";
}
} else{ str+=br+pName+": "+pValue;
}
}
return str;
}
function _arrToStr(pValue,pName,pType,pLevels) {
return _viewObj(pValue,pName,pType,pLevels);
}
function _objToStr(pObj)
{
var str="";
for(var prop in pObj)
if(typeof pObj[prop]!="function")
str+="obj["+prop+"]: "+pObj[prop]+" \n";
return str;
}
function debug(pMsg, pFunction)
{
alert(":::DEBUGGER:::\nFunction: " +pFunction+"\nMessage\n"+pMsg);
}
function error(pMsg, pFunction)
{
alert(":::ERROR:::\nFunction: " +pFunction+"\nMessage\n"+pMsg);
}

