function Description(){
    var opens = $A(document.getElementsByTagName('a')).findAll(function(v){
        if (Element.hasClassName(v, 'descriptionButton')) return true;
    });
    for (var i=0; i<opens.length; i++){
        Event.observe(opens[i], 'click', this.click.bind(this));
    }

    var closes = $A(document.getElementsByTagName('a')).findAll(function(v){
        if (Element.hasClassName(v, 'descriptionClose')) return true;
    });
    for (var i=0; i<closes.length; i++){
        Event.observe(closes[i], 'click', this.click.bind(this));
    }
}

Description.prototype.cache = new Array();
Description.prototype.click = function(e){
    Event.stop(e);

    var id;
    if (Element.hasClassName(Event.element(e), 'descriptionClose')){
        id = Event.element(e).id.split('-')[1];
    }else{
        id = Event.element(e).parentNode.parentNode.id.substr(2);
    }

    if ($('description-'+id).style.display){
        Element.update('descriptionButton-'+id, '&nbsp;-');
        if (this.cache[id]){
            Element.show('description-'+id);
            return;
        }

        Element.update('descriptionBody-'+id, '<img src="/img/ajaxLoader.gif" class="img3">');
        Element.show('description-'+id);

        var time = new Date().getTime();
        var obj = this;
        var req = new Ajax.Updater(
            'descriptionBody-'+id,
            '/Aja_GetDescription/'+id +'/' + time,
            {
                method: 'get',
                onComplete: obj.viewDescription.bind(obj, id),
                onFailure: obj.error.bind(obj)
            });

        //this.open(e);
    }else{
        Element.hide('description-'+id);
        Element.update('descriptionButton-'+id, '&nbsp;+');
        //this.close(e);
    }
}

Description.prototype.viewDescription = function(id, req){
    this.cache[id] = req.responseText;
}

Description.prototype.error = function(req){
    // debug
}

Description.prototype.open = function(e){
    var id = Event.element(e).parentNode.parentNode.id.substr(2);
    Element.show('description-'+id);
    Event.stop(e);
}

Description.prototype.close = function(e){
    var id = Event.element(e).parentNode.parentNode.id.substr(2);
    if (!id){
        id = Event.element(e).parentNode.parentNode.parentNode.parentNode.parentNode.id.substr(2);
    }
    Element.hide('description-'+id);
    Event.stop(e);
}

Description.prototype.imgPreview = function(obj, goodsId){
    var path = obj.href;
    var preview = $('previewArea_'+goodsId);

    if (!preview.firstChild || !preview.firstChild.src ||
        preview.firstChild.src != path){
        Element.update(preview, '<img src="'+path+'" class="img2" >' );
    }else{
        Element.update(preview, '');
    }
}

var description;
Event.observe(window, 'load', function(){ description = new Description(); });


