/*--- General form support functions ---*/

function showControl( controlID, hiddenID)
{
   var control = document.getElementById(controlID);
   var hidden  = document.getElementById(hiddenID);

   control.style.display='none'; 
   hidden.style.display='';
   hidden.focus();
}
 
function hideControl( controlID, hiddenID)
{
   var control = document.getElementById(controlID);
   var hidden  = document.getElementById(hiddenID);

   hidden.style.display='none'; 
   control.style.display='';
   control.focus();
}
 
function focusControl(ctrl) 
{
    if (ctrl.createTextRange)
    {
       var FieldRange = ctrl.createTextRange();
       FieldRange.moveStart('character', ctrl.value.length);
       FieldRange.collapse();
       FieldRange.select();
     }
}

function toggleControl( controlID)
{
   var control = document.getElementById(controlID);
   
   if( control.style.display == "" )
      control.style.display='none'; 
    else
      control.style.display=''; 
}

function onReturn( Handler )
{
    if (event.keyCode == 13)
    {
        eval( Handler + ";" );
    }
}

/*--- Rad Editor ---*/

function configureRadEditor(editor, args)
{
      var style = editor.get_contentArea().style;
      style.backgroundColor = "white";
      style.color= "black";
      style.fontFamily= "Arial";
      style.fontSize= "12px";
      style.padding = "5px";
}

/*--- Document printing ---*/

function printDoc()
{
   if (window.print)
   {
        if ( top.window != window )
        {
            top.frames[1].window.focus();
        }

        window.print();
   }
   else
   {
       alert('Your browser doesn\'t support printing from this link. Use ctrl-p instead.')
   }
}

function getRadWindow()
{
	var oWindow = null;
	if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
	else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;//IE (and Moz az well)
						
	return oWindow;
}

/*--- Criteria tree view control ---*/

function onNodeClick(sender, args)
{
	var node = args.get_node();

    if( node.get_checkable() )
    {
        if(!node.get_checked())
        {
            node.set_checked(true);
        }
        else
        {
            node.set_checked(false);
        }
    }

    onNodeCheck( sender,args );
}

function onNodeCheck(sender, args)
{
	var node = args.get_node();
    var element = node.get_element();

    if( node.get_checkable() )
    {
        if(node.get_checked())
        {
            element.className = "rtLI criteria-node-checked";
        }
        else
        {
            element.className = "rtLI";
        }
    }

    node.toggle();
    node.unselect();
    searchChanged( sender,args );
}

function onNodeToggle(contentID, iconID, stateID)
{
    var content = document.getElementById(contentID);
    var icon    = document.getElementById(iconID);
    var state   = document.getElementById(stateID);

    if( content.style.display == "" )
    {
        icon.className = "criteria-collapsed";
        content.style.display='none'; 
        state.Value = "collapsed";
    }
    else
    {
        icon.className = "criteria-expanded";
        content.style.display=''; 
        state.Value = "expanded";
    }
}

function searchChanged(sender, args)
{
    setSearchButton('block');
}

function resetSearch()
{
    setSearchButton('none');
}

function setSearchButton( blockStyle )
{
    var button = document.getElementById( 'search-button' );

    if( button != null )
    {
        button.style.display = blockStyle;
    } 
}

// Used by .net BannerLocation control
// Update banner on client side with interval timeout
function updateBanner(table, banners, timeout, isHorizontal)
{ 
    var index = 0;
    var rows = table.rows;

    for (row = 0; row < rows.length; row++)
    {
        var columns = rows[row].children;
        for (column = 0; column < columns.length; column++)
        {
            columns[column].innerHTML = banners[index++];
        }
    }

    if (isHorizontal === 'True')
    {
        for (row = 0; row < rows.length; row++)
        {
            var columnLength = columns.length;
            var firstItemIndex = row * columnLength;
            var lastItemIndex = firstItemIndex + columnLength;
            
            // Replace the first item in the row by the first item not in used.
            banners.splice(firstItemIndex, 0, banners.splice(rows.length*columns.length, 1));
            
            // Push last item in the row to be the last item of the array.
            banners.push(banners.splice(lastItemIndex, 1));
        }
    }
    else
    {
        for (column = 0; column < columns.length; column ++)
        {
            var rowLength = rows.length;
            var firstItemIndex = column;
            var lastItemIndex = (rowLength - 1) * columns.length + column + 1;
            
            // Replace the first item in the column by the first item not in used.
            banners.splice(firstItemIndex, 0, banners.splice(rows.length*columns.length, 1));
            
            // Push last item in the column to be the alst item of the array.
            banners.push(banners.splice(lastItemIndex, 1));
        }
    }
    
    // Recursive call to itself to make an infinite loop
    setTimeout(function(){updateBanner(table, banners, timeout, isHorizontal)}, timeout);
}