/*
*  Проверяем, что направление обмена существует
*
*  @param direction направление обмена
*/

function checkExchWay(inPmId, outPmId, exchangeWays){
    var exchWayId = false;
    var ex_id = null;
    for(ex_id in exchangeWays){
        if(exchangeWays[ex_id].inPmMethodObj.id == inPmId && exchangeWays[ex_id].outPmMethodObj.id == outPmId){
            exchWayId = ex_id;
        }
    }
    return exchWayId; 
}

function filterExchWayIn(paymentMethodsInIds, paymentMethodsOutIds, exchangeWays){
    filterExchWay('in', paymentMethodsInIds, paymentMethodsOutIds, exchangeWays);
    filterExchWay('out', paymentMethodsInIds, paymentMethodsOutIds, exchangeWays);
}

function filterExchWayOut(paymentMethodsInIds, paymentMethodsOutIds, exchangeWays){
    filterExchWay('out', paymentMethodsInIds, paymentMethodsOutIds, exchangeWays);    
    filterExchWay('in', paymentMethodsInIds, paymentMethodsOutIds, exchangeWays);    
}

/*
*  Функция делает недоступными элементы
*
*  @param direction направление обмена
*/
function filterExchWay(direction, paymentMethodsInIds, paymentMethodsOutIds, exchangeWays){    
    paymentMethodsInSelect  = $('payment_methods_in');
    paymentMethodsOutSelect = $('payment_methods_out');
    
    var oppositeDirection = {'in' : 'out', 'out' : 'in'};
    
    var currPosVal = '';
    var oppositeSelect = null
    var oppositeIds = null;
    var currPosOpposite = null;
    var isExchWay = null;
    var i = 0;
    
    switch(direction){
        case 'in':
            currPosVal = paymentMethodsInSelect.getSelected()[0].getProperty('value');            
            oppositeSelect =  paymentMethodsOutSelect;
            oppositeIds = paymentMethodsOutIds;                        
        break;
        case 'out':
            currPosVal = paymentMethodsOutSelect.getSelected()[0].getProperty('value');
            oppositeSelect =  paymentMethodsInSelect;
            oppositeIds = paymentMethodsInIds;             
        break;
        default:
            return false;       
    }       
    currPosOpposite = oppositeSelect.getSelected()[0];
    
    for(i = 0; i < oppositeIds.length; i++){        
        switch(direction){
            case 'in':
                isExchWay = checkExchWay(currPosVal, oppositeIds[i], exchangeWays);
                break;
            case 'out':
                isExchWay = checkExchWay(oppositeIds[i], currPosVal, exchangeWays);                        
                break;
        }
               
        if(!isExchWay){
            oppositeSelect.getElement('option[value=' + oppositeIds[i] + ']').inject(oppositeSelect.getLast(),'after');
            oppositeSelect.getElement('option[value=' + oppositeIds[i] + ']').addClass('disable');
        } else{
            oppositeSelect.getElement('option[value=' + oppositeIds[i] + ']').inject(oppositeSelect.getFirst(),'before');
            oppositeSelect.getElement('option[value=' + oppositeIds[i] + ']').removeClass('disable');                             
        }        
    }           
    
    // set selected element
    if(currPosOpposite.hasClass('disable')){
        currPosOpposite.removeProperty('selected');
        oppositeSelect.getFirst().setProperty('selected', true);
    }   
    
    rsRedrawSelect(oppositeSelect);
    
}