//
// ZoneMinder logger javascript file, $Date: 2011-05-27 22:24:17 +0100 (Fri, 27 May 2011) $, $Revision: 3374 $
// Copyright (C) 2001-2008 Philip Coombes
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//

if ( !window.console )
{
    window.console =
    {
        init:function() {},
        log:function() {},
        debug:function() {},
        info:function() {},
        warn:function() {},
        error:function() {}
    };
}
if ( !console.debug )//IE8 has console but doesn't have console.debug so lets alias it.
    console.debug = console.log;

var reportLogs = true;

var debugParms;
var debugReq;

function logReport( level, message, file, line )
{
    if ( !reportLogs )
        return;

    if ( typeof(MooTools) == "undefined" )
        return;

    if ( arguments && arguments.callee && arguments.callee.caller && arguments.callee.caller.name )
        message += ' - '+arguments.callee.caller.caller.name+'()'; 

    if ( !debugReq )
    {
        debugParms = "view=request&request=log&task=create&browser[name]="+Browser.name+"&browser[version]="+Browser.version+"&browser[platform]="+Browser.Platform.name;
        debugReq = new Request.JSON( { url: thisUrl, method: 'post', timeout: AJAX_TIMEOUT, link: 'chain' } );
    }
    var requestParms = debugParms;
    requestParms += "&level="+level+"&message="+encodeURIComponent(message);
    if ( file )
        requestParms += "&file="+file;
    else if ( location.search ) {
		//location.search is the querystring part, so ?blah=blah but there is almost never any value to this
        requestParms += "&file="+location.search;
	}
    if ( line )
        requestParms += "&line="+line;
    debugReq.send( requestParms );
}

function Panic( message )
{
    console.error( message );
    logReport( "PNC", message );
    alert( "PANIC: "+message );
}

function Fatal( message )
{
    console.error( message );
    logReport( "FAT", message );
    alert( "FATAL: "+message );
}

function Error( message )
{
    console.error( message );
    logReport( "ERR", message );
}

function Warning( message )
{
    console.warn( message );
    logReport( "WAR", message );
}

function Info( message )
{
    console.info( message );
    logReport( "INF", message );
}

function Debug( message )
{
    console.debug( message );
    //logReport( "DBG", message );
}

function Dump( value, label )
{
    if ( label )
        console.debug( label+" => " );
    console.debug( value );
}

window.onerror =
    function( message, url, line )
    {
        logReport( "ERR", message, url, line );
    }
