/**
 * @author Greek Software
 * @copyright (C) 2010 Greek Software. All rights reserved.
 * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 **/
var  grsfVMFRemoteURL ="index.php?option=com_vmcategoryfilter&format=ajax";
var trElm;
window.addEvent('domready', function(evt){
    trElm = $$(".mod_grsf_vmfilter .mod_grsfvmf_dds");

        loadAllGRSFCategoryData();
    
});

function refreshVMFFilters(trElm){
    var modifier = 1;
    var curLevel = trElm.id.replace("grsfvmfilter_cat_","");
    if (isNaN(trElm.value)) {
        alert("An error occured.\nContact your system administrator");
    }
    var curElm;
    try{
        if (trElm.value != 0){
          loadGRSFCategoryData(trElm.value,curLevel);
          modifier ++;
        }
        var catLevel = parseFloat(curLevel) + modifier;
        while(true){
                try{
                    curElm = $("grsfvmfilter_cat_" + catLevel);
                    curElm.value=0;
                    clearHTMLSelect(curElm,true);
                    curElm.removeEvent("change","refreshVMFFilters");
                    catLevel ++;
                }catch(err){break;}
            }
       }catch(err){
        alert("configuration error : Categories Levels");
    }
}

function loadGRSFCategoryData(parentCat,curLevel){
    var elmsLength = $$('.grsfvmfilter_row .grsfvmfilter_cont select[name!=grsfvmfilter_type]').length - 1;
    var elms = $$('.grsfvmfilter_row .grsfvmfilter_cont');
    if (curLevel < elmsLength){
        var nextLevel = parseFloat(curLevel) + 1;
        var elm = elms[parseFloat(curLevel) + 1];
        if (elm.getChildren('select').getProperty('name') != 'grsfvmfilter_type' && (curLevel == 0 || elms[curLevel].getChildren('select').getProperty('value') > 0  )){
            elm.empty().addClass('ajax-loading');
            new Ajax(grsfVMFRemoteURL + "&view=cch&pct=" + parentCat +"&nwl=" + (parseFloat(curLevel) + 1), {
                method: 'get',
                onComplete: function(response){
                    elm.removeClass('ajax-loading');
                    elm.setHTML(response);
                    elm.getChildren("select")[0].addEvent("change",function(evt){ refreshVMFFilters(this);});
                }
            }).request();
        }
    }
}

function loadAllGRSFCategoryData(){
    var remoteURL = grsfVMFRemoteURL+"&view=all";
    var elm = $$(".mod_grsf_vmfilter");
    elm.empty().addClass('ajax-loading-big');

    
    var pdata = grsf_cats_val.associate(grsf_cats);
    new Ajax( remoteURL, {
        method: 'post',
        data :pdata,
        onComplete: function(response){
            elm.removeClass('ajax-loading-big').setHTML( response );
            var selElms = $$("#mod_grsfvmf_frm .grsfvmfilter_row .grsfvmfilter_cont select[name!=grsfvmfilter_type]");
            for(var row=0 ; row < selElms.length; row ++){
                selElms[row].addEvent("change",function(evt){refreshVMFFilters(this)});
            }
        }
    }).request();
}

function clearHTMLSelect(elm,hasDefault){
    var options = elm.options.length;
    var firstOption = 0;
    if (hasDefault) firstOption = 1
    for(var i = options - 1 ; i >= firstOption; i --){
       elm.options[i] = null;
    }
}

function grsfVMartFilterSearch(){
    var categ=0,type=0;
    var filts = $$('.mod_grsfvmf_dds select');
    var filtNo = filts.length;
    var act = 'index.php?option=com_virtuemart&page=shop.browse';
    for(var row = filtNo ; row > 0; row --){
        if(filts[row-1].id == 'grsfvmfilter_type'){
            type = filts[row-1].value;
        }else{
            if (filts[row-1].value > 0){
                categ = filts[row-1].value;
                break;
            }
        }
    }
    if(categ > 0 || type > 0 ){
        act += "&category_id=" + categ;
        if(type > 0){
            act += "&product_type_id=" + type;
        }
        var frm = $('mod_grsfvmf_frm');
        frm.action = act;
        frm.submit();
    }
}
