/*** Global variables ***/
var advert_template = "";
var mode = "";
var region_id = "";
var rubric_id = "";
var paid_regions = "";
/************************/

function tag_proto( category_id , select_id )
{ 
    this.value = category_id; 
    this.id = select_id; 
}

function fillSelect( originalRequest )
    {
        var i,length;
        
        root_nodes = originalRequest.responseXML.childNodes;
        
    for ( i = 0 ; i < root_nodes.length ; i++ )
        if ( root_nodes.item(i).nodeName == "category" )
            category = root_nodes.item(i);
            category_nodes = category.childNodes;    
    
    for ( i = 0 ; i < category_nodes.length ; i++ )
    {
        if ( category_nodes.item(i).nodeName == "subcategories" )
            subcategories = category_nodes.item(i).childNodes;
            
        if ( category_nodes.item(i).nodeName == "category_name" )
            label = getXmlNodeValue( category_nodes.item(i) );        
            
        if ( category_nodes.item(i).nodeName == "all_option_value" )
            all_option_value = getXmlNodeValue( category_nodes.item(i) );
    }
    
        for( i = 0 ; i < category.attributes.length ; i++ )
        {
            if( category.attributes.item(i).nodeName == 'select_id' )
                target_select_id = category.attributes.item(i).nodeValue;
                    
            if( category.attributes.item(i).nodeName == 'selected_option_value' )
                selected_option_value = category.attributes.item(i).nodeValue;
                
            if( category.attributes.item(i).nodeName == 'category_id' )
                category_id = category.attributes.item(i).nodeValue;  
                
               
            if( category.attributes.item(i).nodeName == 'paid_regions' )
                cat_paid_regions = category.attributes.item(i).nodeValue;  

            if( category.attributes.item(i).nodeName == 'category_type' )
                category_type = category.attributes.item(i).nodeValue;    

        if( category.attributes.item(i).nodeName == 'category_redirect' )
                category_redirect = category.attributes.item(i).nodeValue;                                
        }
        
        if( mode == "add_advert" && category_type == "siteRubrics" && category_redirect )
            paid_regions = cat_paid_regions;
            
        if( mode == "add_advert" && category_redirect )    
            checkPaidRubric();

        
        var target_select = document.getElementById( target_select_id );


                            
        length = target_select.length;
        
        for( i = 0 ; i < length ; i++ )
            target_select.remove( target_select.options[i] ); 
               
        if( all_option_value )
        {
            option = document.createElement( "option" );
            optionValue = document.createAttribute( "value" );
            optionValue.value = "";
            option.setAttributeNode( optionValue );
            optionText = document.createTextNode( all_option_value );
            option.appendChild( optionText );
            target_select.appendChild( option );
        }

        for ( i = 0 ; i < subcategories.length ; i++ )
        {
            if( subcategories.item(i).nodeName == 'label' )
            {
                label = subcategories.item(i).nodeValue;    
                //if( $('subCategoriesOf_' + category_id + '_l') != undefined ) 
                    //$('subCategoriesOf_' + category_id + '_l').innerHTML = label;
            }
                            
            if ( subcategories.item(i).nodeName == "category" )
            {
                category = subcategories.item(i);

                option = document.createElement( "option" );
                optionValue = document.createAttribute( "value" );

                for( j = 0 ; j < category.attributes.length ; j++ )
                {
                    if( category.attributes.item(j).nodeName == 'id' )
                    {
                        optionValue.value = category.attributes.item(j).nodeValue;

                        if ( optionValue.value == selected_option_value )
                        {
                              selected = document.createAttribute( "selected" );
                              option.setAttributeNode( selected );
                              option.selected = true;
                        }

                        option.setAttributeNode( optionValue );
                    }

                    optionText = document.createTextNode( getXmlNodeValue( category ) );
                    //optionText = document.createTextNode( category.nodeValue );
                }

                option.appendChild( optionText );
                target_select.appendChild( option );
            }
        }
        target_select.disabled = false;
        document.body.style.cursor = "auto";
    }
    
    function setCategories( category_type , select_id , sov , all_option_value )
    {
        var url = '/ajax/categories.php' ;
        var pars = 'category_type=' + category_type + '&select_id=' + select_id + '&selected_option_value=' + sov + '&all_option_value=' + all_option_value ;
        var myAjax = new Ajax.Request
        (
            url,
            {
                method          : 'get',
                parameters      : pars,
                onComplete      : fillSelect,
                asynchronous    : 'true'
            }
        );
    }
    

    
    
    function createSubCategories( select , all_option_value , build_select , create_label , category_redirect )
    {
        var category_id = select.value;
        var select_id = select.id;
        
        var initSelect = document.getElementById( select_id );
        var container = initSelect.parentNode.parentNode;
        
        initSelect.style.border = "";

        while ( container.lastChild.id != select_id + 'p' )
            container.removeChild( container.lastChild ); 
            
        if( category_id < 1 )
            return false;                
            
        var basename = initSelect.id.split( "_" );            
            
        var child_select = initSelect.cloneNode(true);
            child_select.id = basename[0] + '_' + category_id; 
            child_select.disabled = true;
            
        p = document.createElement( "p" );
        p.id = basename[0] + '_' + category_id + 'p';
        
        if ( build_select == 1 )
            p.style.display = "none"; 
            
        if( create_label )
        {    
            for( i = 0 ; i < initSelect.options.length ; i++ )
                if( initSelect.options[i].selected == true )
                {
                    var category_name = initSelect.options[i].text;
                    break;
                }
            
            var label = document.createElement( "label" );
                if( category_name == undefined )
                    label.innerHTML = "&nbsp";
                else
                    label.innerHTML = category_name + ":";
                label.id = basename[0] + '_' + category_id + '_l';
                
            p.appendChild( label );
        }             
           
        p.appendChild( child_select );        
        
        container.appendChild( p );

        var length = child_select.length;
            for( i = 0 ; i < length ; i++ )
                child_select.remove( child_select.options[i] );        
    
        if( build_select == 0 )
            return false;
            
        var url = '/ajax/subcategories.php' ;
        var pars = 'category_id=' + category_id + '&select_id=' + child_select.id + '&all_option_value=' + all_option_value + '&selected_option_value=0' +'&category_redirect='+category_redirect;
        var myAjax = new Ajax.Request
        (
            url,
            {
                method          : 'get',
                parameters      : pars,
                onComplete      : buildSelect,
                asynchronous    : 'true'
            }
        );
    }

function buildSelect( originalRequest )
{
    var length,i;
    var root_nodes = originalRequest.responseXML.childNodes;

    for ( i = 0 ; i < root_nodes.length ; i++ )
        if ( root_nodes.item(i).nodeName == "category" )
            category = root_nodes.item(i);
            
    category_nodes = category.childNodes;    
    
    for ( i = 0 ; i < category_nodes.length ; i++ )
    {
        if ( category_nodes.item(i).nodeName == "subcategories" )
            subcategories = category_nodes.item(i).childNodes;
            
        if ( category_nodes.item(i).nodeName == "category_name" )
            label = getXmlNodeValue( category_nodes.item(i) );        
            
        if ( category_nodes.item(i).nodeName == "all_option_value" )
            all_option_value = getXmlNodeValue( category_nodes.item(i) );
    }


    for( i = 0 ; i < category.attributes.length ; i++ )
    {
        if( category.attributes.item(i).nodeName == 'category_id' )
                category_id = category.attributes.item(i).nodeValue;
                
        if( category.attributes.item(i).nodeName == 'select_id' )
                select_id = category.attributes.item(i).nodeValue; 
                
        if( category.attributes.item(i).nodeName == 'advert_template' )
                cat_advert_template = category.attributes.item(i).nodeValue;  

        if( category.attributes.item(i).nodeName == 'category_redirect' )
                category_redirect = category.attributes.item(i).nodeValue;                                 
    }    
    
    if( cat_advert_template != advert_template && category_redirect > 0 ) 
           document.location.href="index.php?category_id="+category_id;     
    
    var initSelect = document.getElementById( select_id );
        basename = initSelect.id.split( "_" );
    
    var child_select_id = basename[0] + '_' + category_id;  
    var child_select = $(child_select_id);
    var container = child_select.parentNode.parentNode;
        
    if( subcategories.length == 0 )
    {
        container.removeChild( $(child_select_id + 'p') ) ;
        document.body.style.cursor = "auto";
        //return false;       
    }
    
    p.style.display = "inline";
    fillSelect( originalRequest );
}

function getXmlNodeValue(xmlNode)
{
    if( xmlNode.textContent != undefined )
        return xmlNode.textContent;
        
    if( xmlNode.text != undefined )
        return xmlNode.text ;        

}

function toNotes( advert_id )
{
    var mode = $( 'note' + advert_id ).className;
    var url = "/ajax/note.php";
    var pars = "mode=" + mode + "&advert_id=" + advert_id ;
    var myAjax = new Ajax.Request ( url, { method : 'get', parameters : pars, onComplete : inNotes, asynchronous : 'true' } );    
    setCursor( $( 'note' + advert_id ) , "wait" );
    $( 'note' + advert_id ).style.cursor = "wait";
}

function setCursor( element , value )
{
    element.style.cursor = value;
    while( element.parentElement != undefined )
    {
        element.parentElement.style.cursor = value;
        element = element.parentElement;
    }
}

function inNotes( originalRequest )
{
    advert = originalRequest.responseXML.getElementsByTagName("advert").item(0);
    advert_id = advert.attributes.item(0).nodeValue;
    mode = getXmlNodeValue( advert );
    $( 'note' + advert_id ).src = "/resources/images/" + mode + ".gif";
    $( 'note' + advert_id ).className = mode;
    total = originalRequest.responseXML.getElementsByTagName("total").item(0);
    $( 'noteItemsQnt' ).innerHTML = getXmlNodeValue( total );
    setCursor( $( 'note' + advert_id ) , "auto" );
    $( 'note' + advert_id ).style.cursor = "pointer";
}

    function simpleFillSelect( originalRequest )
    {
        var i,length,target_select,nextOption;
        var root_nodes = originalRequest.responseXML.childNodes;
        
        for ( i = 0 ; i < root_nodes.length ; i++ )
            if ( root_nodes.item(i).nodeName == "category" )
                category = root_nodes.item(i);
              
        category_nodes = category.childNodes;    
    
        for ( i = 0 ; i < category_nodes.length ; i++ )
        {
            if ( category_nodes.item(i).nodeName == "subcategories" )
                subcategories = category_nodes.item(i).childNodes;
            if ( category_nodes.item(i).nodeName == "all_option_value" )
                all_option_value = getXmlNodeValue( category_nodes.item(i) );
        }
    
        for( i = 0 ; i < category.attributes.length ; i++ )
        {
            if( category.attributes.item(i).nodeName == 'select_id' )
                target_select_id = category.attributes.item(i).nodeValue;
            if( category.attributes.item(i).nodeName == 'selected_option_value' )
                selected_option_value = category.attributes.item(i).nodeValue;
            if( category.attributes.item(i).nodeName == 'complete_function' )
                complete_function = category.attributes.item(i).nodeValue;                
        }
        
        target_select = document.getElementById( target_select_id );
        
        all_option_value = target_select.options[1].text;
        
        clearSelect( target_select );
        
        nextOption = target_select.options.length;
        
        if( all_option_value )
            target_select.options[nextOption] = new Option( all_option_value , "" );
    
        for ( i = 0 ; i < subcategories.length ; i++ )
            if ( subcategories.item(i).nodeName == "category" )
            {
                category = subcategories.item(i);
                for( j = 0 ; j < category.attributes.length ; j++ )
                    if( category.attributes.item(j).nodeName == 'id' )
                    {
                        nextOption = target_select.options.length;
                        target_select.options[nextOption] = new Option( getXmlNodeValue( category ) , category.attributes.item(j).nodeValue );
                        if ( category.attributes.item(j).nodeValue == selected_option_value )
                            target_select.options[nextOption].selected = "true";
                    }
            }
            
        if( target_select.options.length > 1 )
        {
            target_select.disabled = false;
        }
        else
            target_select.disabled = true;

        document.body.style.cursor = "auto";   
        
        if( complete_function != undefined && complete_function )
            complete_function();
    }
    
    function setSubcategories( category_id , select_id , sov , all_option_value , loading , complete_function )
    {
        clearSelect( select_id );
        $(select_id).disabled = true;
        $(select_id).options[0] = new Option( loading , "" );
        $(select_id).options[1] = new Option( all_option_value , "" );
        
        document.body.style.cursor = "wait";
        var url = '/ajax/subcategories.php' ;
        var pars = 'category_id=' + category_id + '&select_id=' + select_id + '&selected_option_value=' + sov + '&all_option_value=' + all_option_value + '&complete_function=' + complete_function ;
        //window.prompt( "copy" , pars);
        var myAjax = new Ajax.Request
        (
            url,
            {
                method          : 'get',
                parameters      : pars,
                onComplete      : simpleFillSelect,
                asynchronous    : 'true'
            }
        );
    }
