var PresentExchange = {
    initExchangeLink: function(hook) {
        $$('.exchange_link').each(function(item) {
            item.observe('click', function(event) {
                var link = this;
                var param = this.readAttribute('param') || "";
                Event.stop(event);
                new Ajax.Request('/pe_handler.pl?mode=can_exchange&' + param, {
                    method: 'post',
                    onSuccess: function(transporter) {
                        var result = transporter.responseJSON;
                        if( result.result == 1 ) {
                            hook.onSuccess(link);
                        }
                        else {
                            var message = '';
                            if(result.result == 0) message = '报歉！您的积分不足';
                            if(result.result == 2) message = '报歉！您的累计积分不足' + result.point_limit + '，不能参加免费拿';
                            if(result.result == 3) message = '报歉！您的注册时间未满' + result.life_limit / 3600 + '小时，不能参加免费拿';
                            MixiEffect.showWarning({
                                warnings: {
                                    messages: {
                                        key: message
                                    }
                                } 
                            });
                            //alert('积分不足');
                        }
                    },
                    onFailure: function(transporter) {
                        if( transporter.status == 404 ) {
                            MixiEffect.showLoginPanel();
                        }
                    },
                    onException: function(transporter, exception) {
                        //alert(exception);
                    }
                });
            });
        });
    },
    autoLoad: function(args) {
        args = args || {};
        var interval_ids = [];
        function countDown(eles) {
            var interval_id = setInterval(function() {
                eles.each(function(ele) {
                    try { 
                        var time = $(ele).innerHTML;

                        if( !time.match(/(\d+天)?(\d+):(\d+):(\d+)/) ) {
                            throw 'not_time';
                        }
                        var day = parseInt(RegExp.$1, 10) || 0;
                        var hour = parseInt(RegExp.$2, 10);
                        var min = parseInt(RegExp.$3, 10);
                        var sec = parseInt(RegExp.$4, 10);
                        var is_end = false;
                        if( sec > 0 ) {
                            sec -= 1;
                        }
                        else {
                            sec = 59;
                            if( min > 0 ) {
                                min -= 1;
                            }
                            else {
                                min = 59;
                                if( hour > 0 ) {
                                    hour -= 1;
                                }
                                else {
                                    if( day > 0 ) {
                                        day -= 1;
                                        hour = 23;
                                    }
                                    else {
                                        is_end = true; 
                                    }
                                }
                            }
                        }
                        if( time == $(ele).innerHTML ) {
                            if( is_end ) {
                                $(ele).setStyle({color: '#FF0000'});
                                if($(ele).hasClassName('reverse')) {
                                    $(ele).innerHTML = '已开始';
                                }
                                else {
                                    $(ele).innerHTML = '00:00:00';
                                }
                                if($(ele).interval_id) {
                                    clearInterval($(ele).interval_id);
                                }
                            }
                            else {
                                if( day == 0 && hour == 0 && min == 0 && sec <= 15 ) {
                                    $(ele).setStyle({color: '#FF0000'});
                                    if( sec <= 10 ) {
                                        Effect.Pulsate($(ele), { duration: 1, pulses: 2 });
                                    }
                                }
                                else {
                                    $(ele).setStyle({color: '#819E10'});
                                }
                                $(ele).innerHTML = (day > 0 ? day + "天" : "") + (hour < 10 ? "0"+hour : hour) + ":" +
                                    (min < 10 ? "0"+min : min) + ":" + (sec < 10 ? "0"+sec : sec); 
                            }
                        }
                    } catch(e) {
                    }
                });
            }, 1000);
        }

        countDown($$('.countdown'));

        var uuids = [];
        $$('.ar').each(function(item) {
            uuids.push(item.id.split(/_/)[0]);
        });
        if( args.container ) {
            uuids = uuids ? [uuids[0]] : [];
        }
        var autoUpdateIntervalId = setInterval(function() {
            var url = '/pe_index.pl?autoreload=&mode=auction_update';
            if( args.in_list ) {
                url = url + "&in_list=1";
            }
            uuids.each(function(item) {
                url += "&uuid=" + item;
            });
            if( args.container ) {
                if( uuids[0] ) {
                    new Ajax.Request(url, {
                        onSuccess: function(transporter) {
                            var result = transporter.responseJSON;
                            result = result[0];
                            if( result.remain_datetime == '已结束' ) {
                                $(args.container).innerHTML = '<img src="' + args.calc_img_src + '">';
                            }
                            if( result.is_closed == 'y' ) {
                                if( result.is_winner == 'y' ) {
                                    $(args.container).innerHTML = '<div class="flash_download">请下载flash播放器 <a href="http://get.adobe.com/flashplayer/">http://get.adobe.com/flashplayer/</a></div>';
                                    var so = new SWFObject(args.swf_src, "auction", "490", "328", "6", "#FFF");
                                    so.addParam("quality" , "high");
                                    so.addParam("allowScriptAccess" , "always");
                                    so.addParam("wmode", "transparent");
                                    so.addVariable("uuid", uuids[0]);
                                    so.write(args.container);
                                }
                                else {
                                    if( result.winner_nickname != null ) {
                                        $(args.container).innerHTML = '<div class="flash_download">请下载flash播放器 <a href="http://get.adobe.com/flashplayer/">http://get.adobe.com/flashplayer/</a></div>';
                                        var so = new SWFObject(args.swf_src, "auction", "490", "328", "6", "#FFF");
                                        so.addParam("quality" , "high");
                                        so.addParam("allowScriptAccess" , "always");
                                        so.addParam("wmode", "transparent");
                                        so.addVariable("uuid", uuids[0]);
                                        so.addVariable("type", 2);
                                        so.addVariable("user", result.winner_nickname);
                                        so.write(args.container);
                                    }
                                    else {
                                        $(args.container).innerHTML = '<img src="' + args.no_winner_src + '">';
                                    }
                                }
                                clearInterval(autoUpdateIntervalId);
                            }
                            else {
                                var r = result;
                                var cp = $(r.uuid + "_cp");
                                var cm = $(r.uuid + "_cm");
                                var ct = $(r.uuid + "_time");
                                var need_update_records = 0;
                                if( cp && cp.innerHTML != r.current_point ) {
                                    cp.innerHTML = r.current_point;
                                    cp.highlight();
                                    need_update_records = 1;
                                }
                                var nickname_span = $$("#" + r.uuid + "_cm .nickname").first();
                                if( cm && r.winner_nickname && (!nickname_span || nickname_span.innerHTML != r.winner_nickname)) {
                                    cm.innerHTML = '<span class="nickname">' + r.winner_nickname + '</span>' + r.group_icon;
                                    cm.highlight();
                                    need_update_records = 1;
                                }
                                if( ct ) {
                                    ct.innerHTML = r.remain_datetime;
                                }

                                if( args.need_records && need_update_records ) {
                                    PresentExchange.updateExchangeRecords({uuid: r.uuid});
                                    if( $('least_point') && $('single_cp') && $('single_point_step') ) {
                                        $('single_cp').innerHTML = r.current_point;
                                        $('least_point').innerHTML = parseInt(r.current_point) + parseInt($('single_point_step').innerHTML);
                                    }
                                }
                            }
                        },
                        onException: function(transporter, exception) {
                        }
                    });
                    return;
                }
            }
            new Ajax.Request(url, {
                onSuccess: function(transporter) {
                    var result = transporter.responseJSON;
                    result.each(function(r) {
                        var cp = $(r.uuid + "_cp");
                        var cm = $(r.uuid + "_cm");
                        var ct = $(r.uuid + "_time");
                        var need_update_records = 0;
                        if( cp && cp.innerHTML != r.current_point ) {
                            cp.innerHTML = r.current_point;
                            cp.highlight();
                            need_update_records = 1;
                        }
                        var nickname_span = $$("#" + r.uuid + "_cm .nickname").first();
                        if( cm && r.winner_nickname && (!nickname_span || nickname_span.innerHTML != r.winner_nickname)) {
                            cm.innerHTML = '<span class="nickname">' + r.winner_nickname + '</span>' + r.group_icon;
                            cm.highlight();
                            need_update_records = 1;
                        }
                        if( ct ) {
                            ct.innerHTML = r.remain_datetime;
                        }

                        if( args.need_records && need_update_records ) {
                            PresentExchange.updateExchangeRecords({uuid: r.uuid});
                            if( $('least_point') && $('single_cp') && $('single_point_step') ) {
                                $('single_cp').innerHTML = r.current_point;
                                $('least_point').innerHTML = parseInt(r.current_point) + parseInt($('single_point_step').innerHTML);
                            }
                        }
                    });
                }
            });
        }, 5000);
    },
    updateExchangeRecords: function(arg) {
        var param;
        if( arg.id ) {
            param = "id=" + arg.id;
        }
        else {
            param = "uuid=" + arg.uuid;
        }
        new Ajax.Request('/pe_entry.pl?autoLoad=&mode=exchange_records&' + param, {
            onSuccess: function(transporter) {
                $('pricerecord').innerHTML = transporter.responseText; 
            },
            onException: function(transporter) {
            }
        });
    }
}

