
fl_bCanAccessExternal=false;
try
{
var bIsDebug=window.external.isDebug();
fl_bCanAccessExternal=true;
}
catch(e){}
function fl_isDebug()
{
if(typeof(window.fl_bIsDebug)!='undefined')
{
return window.fl_bIsDebug;
}
else
{
var bIsDebug=false;
if(typeof(DEBUG)=='boolean')
{
bIsDebug=DEBUG;
}
else
{
try{
bIsDebug=window.external.isDebug();
}catch(e){}
}
if(typeof(window)!='undefined')
window.fl_bIsDebug=bIsDebug;
return bIsDebug;
}
}
function FL_ASSERT(boolExpressionResult,msg)
{
if(!boolExpressionResult)
{
if(typeof(msg)=='undefined')
msg='[no message specified]';
msg=fl_autoTruncateText(msg,500,15);
popupMsg='JavaScript Assertion Warning\n\n'+msg+'\n\nChoose OK to generate an error for debugging.\nChoose Cancel to ignore the assertion and continue.\n\nWhen entering the debugger, go one level back in the call stack to see the real warning.';
if(fl_isDebug())
{
if(window.confirm(popupMsg))
debugger;
}
else
{
try
{
globalLogger.Warn(LOGCOMPONENT_OTHER,'#####  JavaScript Assertion Warning  #####\n'+msg);
}catch(e){}
}
}
return boolExpressionResult;
}
function FL_ASSERT_PARAM_TYPE(paramRef,dataTypeAsString)
{
if(typeof(paramRef)=='undefined')
FL_ASSERT(false,'Function parameter missing');
else if(typeof(paramRef)!=dataTypeAsString)
FL_ASSERT(false,'Invalid data type for function parameter ['+String(arguments[0])+']; expected ['+dataTypeAsString+']');
}
function SafeAlert(myString)
{
alert(myString);
}
function SafeDebugger()
{
debugger;
}
function safe_setTimeout(strCode,msTime,strDebugKeyword)
{
return __safe_setTimeoutOrInterval('timeout',strCode,msTime,strDebugKeyword);
}
function safe_setInterval(strCode,msTime,strDebugKeyword)
{
return __safe_setTimeoutOrInterval('interval',strCode,msTime,strDebugKeyword);
}
function __safe_setTimeoutOrInterval(type,strCode,msTime,strDebugKeyword)
{
if(typeof(strDebugKeyword)=='undefined')
{
FL_ASSERT(false,'__safe_setTimeoutOrInterval() - missing param "strDebugKeyword"; code will not be queued:\n'+strCode);
return null;
}
try{eval('var testDebugTest = \''+strDebugKeyword+'\';');}catch(e){}
if(typeof(testDebugTest)=='undefined')
{
FL_ASSERT(false,'__safe_setTimeoutOrInterval() - bad syntax in param "strDebugKeyword"; code will not be queued:\n'+strCode);
return null;
}
strCode=strCode.replace(/\'/g,'\\\'');
strCode=strCode.replace(/\n/g,'\\n');
var newCodeStr='';
if(!fl_bCanAccessExternal||window.external.isDebug())
{
newCodeStr='__safe_setTimeoutOrIntervalExec(\''+strDebugKeyword+'\', \''+strCode+'\');';
}
else
{
var outerExecErrorLogStr='[script]  %%%%%%%%%%%%%%%%  safe_setTimeout (OUTER EXECUTION) failed:  Debug keyword = ['+strDebugKeyword+']  Error = [\'+e.description+\']\\n          %%%%%%%%%%%%%%%%  ['+strCode+']';
var outerExecErrorAlertStr='JS Debug Alert:\\nsafe_setTimeout (OUTER EXECUTION) failed:\\nDebug keyword = ['+strDebugKeyword+']\\nError = [\'+e.description+\']\\nCode = ['+strCode+']';
newCodeStr='try{ __safe_setTimeoutOrIntervalExec(\''+strDebugKeyword+'\', \''+strCode+'\') } catch(e) { try{window.external.log(2, \''+strDebugKeyword+'\', \''+outerExecErrorLogStr+'\'); if (window.external.isDebug()) alert(\''+outerExecErrorAlertStr+'\');}catch(e2){} };';
}
if('timeout'==type)
return(setTimeout(newCodeStr,msTime));
else if('interval'==type)
return(setInterval(newCodeStr,msTime));
}
function __safe_setTimeoutOrIntervalExec(strDebugKeyword,str)
{
var fl_bCanAccessExternal=false;
try
{
var bIsDebug=window.external.isDebug();
fl_bCanAccessExternal=true;
}
catch(e){}
if(!fl_bCanAccessExternal||window.external.isDebug())
{
eval(str);
}
else
{
try
{
eval(str);
}
catch(e)
{
globalLogger.Error(strDebugKeyword,'%%%%%%%%%%%%%%%%  setTimeout failed:  Error=['+e.description+'] Code=['+str+']');
}
}
}
function fl_objectToString(obj,dimLevel)
{
if(typeof(obj)=='undefined')
{
return'[undefined]';
}
else if(null===obj)
{
return'[null]';
}
else if(typeof(obj)!='object')
{
return String(obj);
}
if(typeof(dimLevel)=='undefined')dimLevel=0;
var tmpString,z,i;
tmpString='';
for(var i in obj)
{
var strIndent='';
for(z=0;z<dimLevel;z++)
{
strIndent+='  ';
}
tmpString+=strIndent+'['+i+'] = ';
if(null===obj[i])
{
tmpString+='[null]\n';
}
else if(typeof(obj[i])=='boolean')
{
tmpString+='[boolean] '+obj[i].toString()+'\n';
}
else if(typeof(obj[i])=='string')
{
tmpString+='"'+obj[i]+'"\n';
}
else if(typeof(obj[i])=='function')
{
var functionText=obj[i].toString();
var ifunctionTextEol=functionText.indexOf(')');
if(ifunctionTextEol>=0)
{
functionText=functionText.substr(0,ifunctionTextEol+1);
}
tmpString+=functionText+'\n';
}
else if(typeof(obj[i])!='object')
{
tmpString+='['+typeof(obj[i])+'] '+String(obj[i])+'\n';
}
else if(dimLevel>=3)
{
tmpString+='[ >3 recursions]\n';
}
else
{
if(typeof(obj[i].nodeType)!='undefined')
{
tmpString+='[HTML or DOM element]\n';
}
else if(typeof(obj[i].self)!='undefined'&&typeof(obj[i].top)!='undefined'&&typeof(obj[i].frames)!='undefined')
{
tmpString+='[Window]\n';
}
else
{
tmpString+='[object]...\n'+fl_objectToString(obj[i],dimLevel+1);
}
}
}
return(tmpString);
}
function fl_alertObject(myObject,title)
{
if(typeof(myObject)!='undefined')
{
alert((title?title+'\n\n':'')+fl_objectToString(myObject));
}else{
alert('fl_alertObject > object was undefined');
}
}
function fl_argumentsToString(argumentsObj)
{
var args=[];
for(var i=0;i<argumentsObj.length;i++)
{
if(i>0)args.push(', ');
if(typeof(argumentsObj[i])=='string')
args.push('\'',escapeSingleQuotes(argumentsObj[i]),'\'');
else if(typeof(argumentsObj[i])=='number')
args.push(argumentsObj[i]);
else
args.push(String(argumentsObj[i]));
}
return args.join('');
}
function fl_formElementInfo(elementObj)
{
var tmp='';
tmp+='=== Form Element Properties ===\n';
tmp+='element type = ['+elementObj.tagName+']\n';
tmp+='name = ['+elementObj.name+']\n';
tmp+='id = ['+elementObj.id+']\n';
tmp+='type attribute = ['+elementObj.type+']\n';
tmp+='value = ['+elementObj.value+']\n';
tmp+='=== Event handlers ===\n';
tmp+='onchange = ['+elementObj.onchange+']\n';
tmp+='onclick = ['+elementObj.onclick+']\n';
tmp+='onkeypress = ['+elementObj.onkeypress+']\n';
tmp+='onkeydown = ['+elementObj.onkeydown+']\n';
tmp+='onkeyup = ['+elementObj.onkeyup+']\n';
if(
(elementObj.tagName=='INPUT'&&elementObj.type.toLowerCase()=='text')
||(elementObj.tagName=='TEXTAREA')
)
{
tmp+='size = ['+elementObj.size+']\n';
tmp+='maxlength = ['+elementObj.maxlength+']\n';
}
if(elementObj.tagName=='INPUT'&&elementObj.type.toLowerCase()=='checkbox')
{
tmp+='checked = ['+elementObj.checked+']\n';
}
if(elementObj.tagName=='SELECT')
{
var value='';
if(elementObj.selectedIndex>=0)
value=elementObj.options[elementObj.selectedIndex].value;
tmp+='value=['+value+']\n';
tmp+='length=['+elementObj.length+']\n';
tmp+='selectedIndex=['+elementObj.selectedIndex+']\n';
tmp+='\n=== Child Options ===\n';
for(var i=0;i<elementObj.options.length;i++)
{
var zz=elementObj.options[i];
tmp+='['+i+']  text=['+zz.text+']   value=['+zz.value+']   selected=['+zz.selected+']   defaultSelected=['+zz.defaultSelected+']\n';
}
}
return(tmp);
}
function fl_safeMethodQuery(objRef,methodName)
{
var retVal='not implemented';
try{
eval("retVal = objRef."+methodName+"()");
}catch(e){}
return retVal;
}
function fl_styleSheetReport()
{
var loadedList=[];
var bAnyNotFound=false;
var report=window.document.styleSheets.length+' stylesheets loaded in\n\n'+window.location.href
+'\n\nProperty=The requested relative path    Value=The calculated absolute path\n';
for(var i=0;i<window.document.styleSheets.length;i++)
{
var relPath='['+i+'] ';
var href=window.document.styleSheets[i].href;
var bFoundInFramework=false;
for(var key in window.fl_styleSheetList)
{
if(window.fl_styleSheetList[key]==href)
{
bFoundInFramework=true;
relPath+=key;
break;
}
}
if(!bFoundInFramework)
{
bAnyNotFound=true;
relPath+='***';
}
loadedList[relPath]=href;
}
report+=fl_objectToString(loadedList);
if(bAnyNotFound)
{
report+='\n\n***These stylesheets were loaded without using the linkStyleSheet() framework.';
}
alert(report);
}
function fl_isWindowValid(windowRef)
{
try
{
return(
typeof(windowRef)!='undefined'
&&null!==windowRef
&&typeof(windowRef.name)!='unknown'
);
}catch(e){
return false;
}
}
