// Site  : http://www.dw.com.cn
// Author: Hangring
HTML();

var a_list = {'sub-classis' : {}, 'order' : {}, 'sub-order' : {}, 'family' : {}, 'sub-family' : {}};

var list_image_open  = new Image();
list_image_open.src = '/templet/animal/images/sign_open.png';
var list_image_close = new Image();
list_image_close.src = '/templet/animal/images/sign_close.png';
var list_image_non   = new Image();
list_image_non.src = '/templet/animal/images/sign_nonclose.png';

var url = '/animal/get.php?rnd=';

display_list.container = null;
display_list.q = '';
display_list.id = '';
function display_list (th, type, id) {
    if (display_list.container) return;

    var container = $tag('div', th.parentNode)[0];

    display_list.container = container;
    display_list.id = id;

    if (! container) return;
    //alert($tag('img', th)[0].tagName);

    if (a_list[type][id]) {
        if (container.style.display == '') {
            $tag('img', th)[0].src = list_image_close.src;
            container.style.display = 'none';
        }
        else {
            $tag('img', th)[0].src = list_image_open.src;
            container.style.display = '';
        }
        display_list.container = null;
        return;
    }
    a_list[type][id] = true;
    container.style.display = '';
    //th.parentNode.style.backgroundImage = list_image_open.src;
    $tag('img', th)[0].src = list_image_open.src;

    var div = create_element('div');
    div.style.color = '#999';
    div.style.padding = '2px 0';
    div.style.marginLeft = '25px';
    div.appendChild(create_text('正在载入...'))
    container.appendChild(div);

    switch (type) {
        case 'sub-classis':
            sub_classis_callback.abort && sub_classis_callback.abort();
            if (! sub_classis_callback.req) Ajax(sub_classis_callback);
            sub_classis_callback.init();
            sub_classis_callback.send(url + Math.random() + '&q=list&t=' + type + '&id=' + id, '');

            break;
        case 'order':
            order_callback.abort && order_callback.abort();
            if (!order_callback.req) Ajax(order_callback);
            order_callback.init();
            order_callback.send(url + Math.random() + '&q=list&t=' + type + '&id=' + id, '');

            break;
        case 'sub-order':
            sub_order_callback.abort && sub_order_callback.abort();
            if (!sub_order_callback.req) Ajax(sub_order_callback);
            sub_order_callback.init();
            sub_order_callback.send(url + Math.random() + '&q=list&t=' + type + '&id=' + id, '');

            break;
        case 'family':
            family_callback.abort && family_callback.abort();
            if (!family_callback.req) Ajax(family_callback);
            family_callback.init();
            family_callback.send(url + Math.random() + '&q=list&t=' + type + '&id=' + id, '');

            break;
        case 'sub-family':
            sub_family_callback.abort && sub_family_callback.abort();
            if (!sub_family_callback.req) Ajax(sub_family_callback);
            sub_family_callback.init();
            sub_family_callback.send(url + Math.random() + '&q=list&t=' + type + '&id=' + id, '');

            break;
    }
}

function clear_loading (len) {
    if (len == 0) {
        $tag('div', display_list.container)[0].innerHTML
            = $a({href:'?q=' + display_list.q + '&id=' + display_list.id, target:'_blank', style: 'color: #999;'}, '查看详细信息');
    }
    else {
        display_list.container.removeChild($tag('div', display_list.container)[0]);
    }

    display_list.container = null;
}

// 显示目
function sub_classis_callback (content) {
    content = eval(content);

    var len = content.length;
    for (var i = 0; i < len; i++) {
        var container = display_order(content[i][1]);
        $tag('span', container)[0]._id = content[i][0];
        $tag('span', container)[0].onclick = function () {display_list(this, 'order', this._id)};

        $tag('a', container)[0].href = '/animal/?q=order&id=' + content[i][0];
        $tag('a', container)[0].target = '_blank';

        display_list.container.appendChild(container);
    }

    display_list.q = 'classis';

    clear_loading(len);
}
sub_classis_callback.halt = function () {
    clear_loading(0);
}

// 显示亚目，科
function order_callback (content) {
    content = eval(content);

    var len = content.length;
    for (var i = 0; i < len; i++) {
        var container
            = content[i][2] == 'sub-order'
            ? display_sub_order(content[i][1])
            : display_family(content[i][1]);

        $tag('span', container)[0]._id = content[i][0];

        if (content[i][2] == 'sub-order') {
            $tag('span', container)[0].onclick = function () {display_list(this, 'sub-order', this._id)};
            $tag('a', container)[0].href = '/animal/?q=order&id=' + content[i][0];
        }
        else {
            $tag('span', container)[0].onclick = function () {display_list(this, 'family', this._id)};
            $tag('a', container)[0].href = '/animal/?q=family&id=' + content[i][0];
        }
        $tag('a', container)[0].target = '_blank';

        display_list.container.appendChild(container);
    }

    display_list.q = 'order';

    clear_loading(len);
}
order_callback.halt = function () {
    clear_loading(0);
}

// 显示科，亚科
function sub_order_callback (content) {
    content = eval(content);

    var len = content.length;
    for (var i = 0; i < len; i++) {
        var container
            = content[i][2] == 'family'
            ? display_family(content[i][1])
            : display_sub_family(content[i][1]);

        $tag('span', container)[0]._id = content[i][0];
        if (content[i][2] == 'family') {
            $tag('span', container)[0].onclick = function () {display_list(this, 'family', this._id)};
            $tag('a', container)[0].href = '/animal/?q=family&id=' + content[i][0];
        }
        else {
            $tag('span', container)[0].onclick = function () {display_list(this, 'sub-family', this._id)};
            $tag('a', container)[0].href = '/animal/?q=sub-family&id=' + content[i][0];
        }
        $tag('a', container)[0].target = '_blank';


        display_list.container.appendChild(container);
    }

    display_list.q = 'order';

    clear_loading(len);
}
sub_order_callback.halt = function () {
    clear_loading(0);
}

function family_callback (content) {
    content = eval(content);

    var len = content.length;
    for (var i = 0; i < len; i++) {
        var container = display_sub_family(content[i][1]);

        $tag('span', container)[0]._id = content[i][0];
        $tag('span', container)[0].onclick = function () {display_list(this, 'sub-family', this._id)};

        $tag('a', container)[0].href = '/animal/?q=family&id=' + content[i][0];
        $tag('a', container)[0].target = '_blank';

        display_list.container.appendChild(container);
    }

    display_list.q = 'family';

    clear_loading(len);
}
family_callback.halt = function () {
    clear_loading(0);
}

function sub_family_callback (content) {
    content = [];
    len = 0;

    display_list.q = 'family';

    clear_loading(len);
}
sub_family_callback.halt = function () {
    clear_loading(0);
}

/**
 */
function display_order (text) {
    var sign  = create_sign(list_image_close);
    var order = create_element('div');
    var a     = create_element('a');
    var sub_order_container = create_element('div');

    order.className = 'order';
    sub_order_container.style.display = 'none';

    a.appendChild(create_text(text));

    order.appendChild(sign);
    order.appendChild(a);
    order.appendChild(sub_order_container);

    return order;
}

function display_sub_order (text) {
    var sign      = create_sign(list_image_close);
    var sub_order = create_element('div');
    var a         = create_element('a');
    var family_container = create_element('div');

    sub_order.className = 'sub-order';
    family_container.style.display = 'none';

    a.appendChild(create_text(text));

    sub_order.appendChild(sign);
    sub_order.appendChild(a);
    sub_order.appendChild(family_container);

    return sub_order;
}

function display_family (text) {
    var sign   = create_sign(list_image_close);
    var family = create_element('div');
    var a   = create_element('a');
    var sub_family_container = create_element('div');

    family.className = 'family';
    sub_family_container.style.display = 'none';

    a.appendChild(create_text(text));

    family.appendChild(sign);
    family.appendChild(a);
    family.appendChild(sub_family_container);

    return family;
}

function display_sub_family (text) {
    var sign       = create_sign(list_image_close);
    var sub_family = create_element('div');
    var a          = create_element('a');
    var genus_container = create_element('div');

    sub_family.className = 'sub-family';
    genus_container.style.display = 'none';

    a.appendChild(create_text(text));

    sub_family.appendChild(sign);
    sub_family.appendChild(a);
    sub_family.appendChild(genus_container);

    return sub_family;
}

function create_sign (image) {
    var span = create_element('span');
    var img  = create_element('img');

    img.src = image.src;
    img.border = '0';

    span.appendChild(img);

    return span;
}

function create_element (tag) {
    return document.createElement(tag);
}
function create_text (text) {
    return document.createTextNode(text);
}
