var cbMouseX = 0;
var cbMouseY = 0;
var cbMouseMove;



$(document).ready(function(){

    
    cbInit();
    try
    {		
        cbOnLoad();
    }
    catch (e)
    {
        consoleLog(e.message);
    }
});
  
function cbOnLoad()
{
	
    
    var callElement = $('meta[name="onloadCalls"]');
    if (callElement.length==0)
        return;
	
    var calls = callElement.attr('value');
	
    if (calls.length==0)
        return;

    var callItems = calls.split(',');
     
    for (var i = 0; i < callItems.length; i++)
    {
       
        consoleLog('Looking for onloadcall ' + callItems[i]);
        if (window[callItems[i]]!=undefined)
        {
            consoleLog('Found: ' + callItems[i]);
            window[callItems[i]]();                 
        }
    }
    
    
	
}

 
function cbInit()
{	
	
    $('#cbConsole').hide();
    $('#cbTimeTrace').hide();
    $('#cbConsoleLink').click(cbSwitchConsole);
    $('#cbTimeTraceLink').click(cbSwitchTimeTrace);
	
    $('.cbVarBox ul').hide();
    $('.cbVarBox').hide();
    $('#cbSwitchVarBoxes').click(cbSwitchVarBoxes);
    $('.cbVarLink').click(cbOpenVar);
    $('<span class="cbFold">*&nbsp;&nbsp;</span>').prependTo('.cbVarBox li:has(UL)');
    $('.cbVarBox span.cbFold').click(cbOpenChildVar);
    $('<span class="cbFold">*&nbsp;&nbsp;</span>').prependTo('.cbStackTraceItem li:has(UL)');
	
	
		

    cbMouseMove = new Array();

    $().mousemove( function(e) {
        cbMouseX = e.pageX;
        cbMouseY = e.pageY;
        for (var i = 0; i < cbMouseMove.length; i++)
        {
            window[cbMouseMove[i]]();
        }
		
    });
    cbSetForms();
   
    cbSetTargets();
}


function cbSetTargets()
{
    $("a[cbTarget]").live('click',function()
    {
      
        
        var href= $(this).attr('href');
        var onsuccess = $(this).attr('onsuccess');
        $(this).attr('href','javascript: void(0)');
        var e = $(this);
        var anchor = this;
        var target = $(this).attr('cbTarget');
      

//        $.ajax({
//            cache: false,
//            url: href,
//            type: 'GET',
//            success: function (r,s,x){            
//                $("#"+target).html(r);
//                if (onsuccess != undefined && window[onsuccess] != undefined)
//                    window[onsuccess](r,s,x,anchor);
//            },
//            error: function(j,t,e)
//            {
//                alert(href);
//                alert(e);
//            }
//            
//        });
        
        $("#"+target).load(href, function (r,s,x){               
            e.attr('href',href);
            if (onsuccess != undefined && window[onsuccess] != undefined)                
                window[onsuccess](r,s,x,anchor);
        });
 
    });
}


function cbGetArgument(pos)
{
    var path = document.location.pathname;
    var arguments = path.split('/');
    return arguments[pos+3];
}

function cbGetModule()
{
    var path = document.location.pathname;
    var arguments = path.split('/');
    return arguments[1];
    
}

function cbGetAction()
{
    var path = document.location.pathname;
    var arguments = path.split('/');
    return arguments[2];
}

function cbSetForms()
{
    

    $('form[id][cbViewState] input[type=submit][cbAction]').live('click', function(){
        return cbSetInputSubmit(this);
    });

    $('form[id][cbViewState] a[cbAction]').live('click', function(){
        return cbSetInputSubmit(this,true);
    }).attr('href','javascript: void(0)');

    $('form[id][cbViewState] span[cbAction]').live('click', function(){
        return cbSetInputSubmit(this,true);
    }).attr('href','javascript: void(0)');

    cbForm.setLanguage();
//            $node->setAttribute('onclick', 'cbSetInputSubmit(this)');


//$('form[id!=\'\'] input[type=submit]').click(cbSetInputSubmit);	
//$('form').submit(function (){return cbForm.submitForm(this)} );
}

function cbOpenTraceVar(param)
{
    $(this).parent().find('ul').toggle();
}

function cbOpenVar(param)
{
    $(this).parent().find('div > ul').toggle();
}

function cbOpenChildVar(param)
{		
    $(this).parent().children('ul').toggle();
}

function cbSwitchVarBoxes(param)
{
    if ($('.cbVarBox').is(':hidden'))
        $('.cbVarBox').slideDown('slow');
    else
        $('.cbVarBox').slideUp('slow');
}

function cbSwitchConsole(param)
{
    if ($('#cbConsole').is(':hidden'))
        $('#cbConsole').slideDown('slow');
    else
        $('#cbConsole').slideUp('slow');
}
function cbSwitchTimeTrace(param)
{
    if ($('#cbTimeTrace').is(':hidden'))
        $('#cbTimeTrace').slideDown('slow');
    else
        $('#cbTimeTrace').slideUp('slow');
}

function consoleLog(value)
{
    if (window.console != undefined && window.console.log != undefined)
    {
        console.log(new Date().toString() + " " + value);
    }

}

String.prototype.startsWith = function(str)
{
    return (this.match("^"+str)==str);
}

String.prototype.endsWith = function(str)
{
    return (this.match(str+"$")==str);
}

String.prototype.trim = function(){
    return    (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""));
}


String.prototype.reverse = function(){
    splitext = this.split("");
    revertext = splitext.reverse();
    reversed = revertext.join("");
    return reversed;
}

var cbConfirmEvents =
{
    content: 'Confirmzx',
    id:     'cbConfirm',
    events:
    {
        render: function(events,api) {

            $(this).click(function(){
                alert($(api.elements.target).attr('id'));
            });
            $(this).hover(
                function(){
                    $(this).attr('ishover','true')
                },
                function(){
                    $(this).attr('ishover','false');
                    api.render().show().hide();
                });
                
        },
        hide: function(events,api)
        {
            consoleLog($(this).attr('ishover'));
            if ($(this).attr('ishover')=='true')
                return false;
            api.disable();
            return true;
        }
    },
            

    position: {
        adjust:{x: 5},
        my: 'left center',
        at: 'right center'

    },
    style: {
        classes: 'ui-tooltip-cbDefaultConfirm',
        tip: {
        
            corner: false
        }
    },
    show:
    {
     
    },
    
    hide: 
    {
       
        delay: 1000
    }

}
