﻿//auth: Nate Steffy
//date: Jan 29 2008

var selectedItem, selectPid, selectPidDivs;
var selectedArray;

$(document).ready( function () {
    selectedArray = new Array();
    selectedItems = $("#selItems");
    selectPid = $("#selPid");
    selectPidDivs = $("#selPid > div");
    });
    
function nonActiveClick ( o, controlKey, shiftKey )
{
    if( shiftKey )   // shift key pressed
    {
        if( isLastClicked() )  //if one element has _last in the "id"
        {
            selectRange( o );
            clearLastClicked( );
            setLastClicked( o );
        }
        else  // no element with _last in the id
        {
            addItem( o, controlKey );
            setLastClicked( o );
        }
    }
    else   // shift key not pressed
    {
        if( !controlKey )
            clearItems();
        addItem( o, controlKey  );
        clearLastClicked( );
        setLastClicked( o );
    }
}
function activeClick( o, controlKey, shiftKey )
{
    if ( !controlKey )
        nonActiveClick( o, controlKey, shiftKey );
    else
    {
        removeItem( o );
        clearLastClicked( );
    }
}
function isLastClicked ( )
{
    return $("#selectChild_last").is("*");
}
function setLastClicked( o )
{
    var temp = $(o).attr( "id" );
    if( temp.substring( temp.length - 5 ) != "_last" )
        $(o).attr( "id", "selectChild_last" );
}
function clearLastClicked( )
{
    $("#selectChild_last").attr( "id", "selectChild" );
}
function selectRange( o )
{
    var last = $("#selectChild_last");
    var list = $(selectPidDivs);
    var lastInd = list.index( last[0] );
    var clickedInd = list.index( o );
    var large, small;
    if( lastInd > clickedInd )  //last index has already been added to lists, do not re-add
    {
        large = lastInd - 1;    //  ^---see above
        small = clickedInd;
    }
    else
    {
        large = clickedInd;
        small = lastInd + 1;    //  ^---see above
    }
    for( var i = small; i <= large; i++ )
    {
        addItem( list.get(i) );
    }
    
}
function addItem( o, controlKey )
{
    $(o).attr( "class", "selectChildClassActive" );
    selectedArray.push( parseInt( $(o).attr( "itemNum" ) ) );
    /*var temp = $(selectedItems).attr( "value" );
    if( typeof( temp ) == "undefined" )
    {
        $(selectedItems).attr( "value", $(o).attr( "name" ) );
    }
    else
    {
        if ( $(selectedItems).attr( "value" ).indexOf( $(o).attr( "name" ) ) < 0 )
            $(selectedItems).attr( "value", temp + "|" + $(o).attr( "name" ) );
    }*/
}
function removeFromArray( toRemove )
{
    var index = $(toRemove).attr( "itemNum" );
    var length = selectedArray.length;
    for( var i = 0; i < length - 1; i++ )
    {
        if( selectedArray[i] == index )
            selectedArray = selectedArray.slice( 0, i ).concat( selectedArray.slice( i + 1, length ) );
    }
    if( i == (length - 1) && selectedArray[i] == index )
        selectedArray = selectedArray.slice( 0, i );
}
function removeItem( o )
{
    $(o).attr( "class", "selectChildClass" );
    /*
    var temp = $(selectedItems).attr( "value" );    // get value of hidden input
    var temp2, temp3, tempInd;
    var toRemove = $(o).attr( "name" );             // get name of item to remove
    var ind = $(selectedItems).attr( "value" ).indexOf( toRemove );
    */
    removeFromArray( o );
    /*
    if( temp == toRemove )  //if toRemove is the only thing in temp -> clear
    {
        $(selectedItems).attr( "value", "" );
    }
    else
    {
        if( ind >= 0 )  //if toRemove is in temp
        {
            tempInd = $(selectedItems).attr( "value" ).indexOf( "|", ind );
            if( ind == 0 )  //if toRemove is at the beginning of temp
            {
                $(selectedItems).attr( "value", temp.substring( tempInd + 1 ) );
            }
            else if ( tempInd > 0 )  //if toRemove is NOT at the end of temp
            {
                temp2 = temp.substring( 0, ind - 1 );
                temp3 = temp.substring( tempInd + 1);
                temp = temp2 + "|" + temp3;
                $(selectedItems).attr( "value", temp );
            }
            else   //toRemove must be at the end
            {
                $(selectedItems).attr( "value", temp.substring( 0, ind - 1 ) )
            }
        }
    }*/
}
function clearItems( )
{
    //$(selectedItems).attr( "value", "" );
    for( var i = 0; i < selectedArray.length; i++ )
    {
        $(selectPidDivs.get( selectedArray[i] )).attr( "class", "selectChildClass" );
    }
    selectedArray = [];
}
function prepareFormToSubmit( )
{
    var temp, toAdd;
    $(selectedItems).attr( "value", "" );
    for( var i = 0; i < selectedArray.length; i++ )
    {
        toAdd = selectPidDivs.get( selectedArray[i] );
        temp = $(selectedItems).attr( "value" );
        if( typeof( temp ) == "undefined" )
        {
            $(selectedItems).attr( "value", $(toAdd).attr( "name" ) );
        }
        else
        {
            if ( $(selectedItems).attr( "value" ).indexOf( $(toAdd).attr( "name" ) ) < 0 )
                $(selectedItems).attr( "value", temp + "|" + $(toAdd).attr( "name" ) );
        }
    }
}
function evaluateForm( )
{
    prepareFormToSubmit();
    if( (typeof( $(selectedItems).attr( "value" ) ) == "undefined") && ( $("#selectChild").is("*") ) )
        alert( "Please select an item to add to the shopping cart" );
    else
    {
        $("#frmAddToBasket").submit();
    }
}
function toggleSelectClick( event, o )
{
    var controlKey, shiftKey;
    controlKey = false;
    shiftKey = false;
    if( event.ctrlKey )
    {
        controlKey = true;
    }
    if( event.shiftKey )
    {
        shiftKey = true;
    }
    if ( $(o).attr( "class" ) == "selectChildClass" )
    {
        nonActiveClick( o, controlKey, shiftKey );
    }
    else
    {
        activeClick( o, controlKey, shiftKey );
    }
}
function showTooltip( event, o )
{
    var x, y;
    if( typeof( event.pageX ) == "undefined" )
    {
        x = event.clientX;
        y = event.clientY;
    }
    else
    {
        x = event.pageX;
        y = event.pageY;
    }
    if( $(o).attr( "innerHTML" ).length > 30 )
    {
        $("#toolTipDiv").css( "top", y + "px" );
        $("#toolTipDiv").css( "left", ( x + 25 ) + "px" );
        $("#toolTipDiv").attr( "innerHTML", $(o).attr( "innerHTML" ) );
        $("#toolTipDiv").show();
    }
}
function hideTooltip( )
{
    $("#toolTipDiv").hide()
    $("#toolTipDiv").attr( "innerHTML", "" );
}