/**
 * 課金が必要な企業情報へのリンクをクリックしたときに
 * 本当に課金するかどうかのアラートを出す。
 * \\bungee.mmj.ne.jp\shared\inhouse_projects\Marketing Team\社員白書\2009年12月_修正対応\20100105_ダイアログ表示ロジック.xlsを参照。
 */
var _auth_token = "";

var DepositDialog = Class.create();
Object.extend( DepositDialog.prototype, {
    isShain: function() {
        return this.getMemberType() == 'shain';
    },
    isYuryo: function() {
        return this.getMemberType() == 'yuryo';
    },
    isLump: function() {
        return this.getMemberType() == 'lump';
    },
    isUnregisteredMember: function() {
        return !this.isShain() && !this.isYuryo() && !this.isLump();
    },
    companyAlert: function(company_id, company_name, premium_rank, staff_enquetes_count, url, has_free_view) {
        if (this.isUnregisteredMember()) { /* アンケート会員か有料会員でない場合、ダイアログはでない */
            return true; /* 処理継続 */
        } else if (staff_enquetes_count == 0) { /* アンケートが一件も登録されていない場合 */
            return true; /* 処理継続 */
        } else if (this.alreadyHasVoucher(premium_rank, company_id)) { /* すでに権限を持っている場合 */
            return true; /* 処理継続 */
        } else if (this.needFreeDialog(has_free_view, company_id)) {
            this.showFreeDialog(company_id, false);
            return false;
        } else if (this.needPremiumDialog(company_id, premium_rank)) {
            this.showPremiumDialog(company_id, company_name, premium_rank, url, false);
            return false;
        }
        this.sendPayRequest(url);
        return false;
    },
    
    alreadyHasVoucher: function( premium_rank, company_id ){
        return (premium_rank > 0 && this.hasPremiumVoucher( company_id )) ||
            (premium_rank == 0 && this.hasFreeVoucher( company_id ));
    },

    sendPayRequest: function( url ){
        var form = $('view_company');
        var hidden = $('pay_or_not');
        hidden.value = "1";
        form.action = url;
        form.submit();
    },

    hasPremiumVoucher: function( company_id ){
        var ids = this.getViewablePremiumIds();
        return ids.include( company_id );
    },
    
    needPremiumDialog: function( company_id, premium_rank ){
        /* アンケート会員はプレミアムに関係なく見られる */
        if( this.isShain() || this.isLump() ){
            return false;
        }
        /* プレミアム企業でない場合は当然不要 */
        if( premium_rank == 0 ){
            return false;
        }
        /* 自分のプレミアムランクが十分あれば、ダイアログ不要 */
        if( this.isYuryo() && this.getPremiumRank() >= premium_rank ){
            return false;
        }
        /* 権限を購入済みかどうかチェック */
        return ! this.hasPremiumVoucher( company_id );
    },

    hasFreeVoucher: function( company_id ){
        var ids = this.getViewableFreeIds();
        return ids.include( company_id );
    },
    
    needFreeDialog: function( has_free_view, company_id ){
        /* 有料会員の場合、フリー企業はいくらでも見れるのでダイアログ不要 */
        if (this.isYuryo() || this.isLump()) {
            return false;
        }
        if (has_free_view) {
            return false;
        }
        /* フリー権限を使用済みかどうかチェック */
        return ! this.hasFreeVoucher( company_id );
    },
    
    getMemberType: function(){
        return this.getCookieByName("member_type");
    },

    getPremiumRank: function(){
        return this.getCookieByName("member_premium_rank");
    },
    
    getViewablePremiumIds: function(){
        return decodeURIComponent(this.getCookieByName("premium_vouchers")).split(",");
    },

    getViewableFreeIds: function(){
        return decodeURIComponent( this.getCookieByName("free_vouchers") ).split(",");
    },
    
    getCookieByName: function( name ){
        var cookies = document.cookie.split(";");
        var me = this;
        var result;
        cookies.each( function( cookie ){
            ary = cookie.split("=");
            cookie_name = ary[0].strip();
            cookie_value = ary[1];
            if( name == cookie_name ){
                result = cookie_value;
            }
        });
        
        return result;
    },
    
    addComma: function( num ){
        num = String( num ); 
        var chars = num.split("");
        var i;
        var str = "";
        for( i = 0; i < chars.length; i++ ){
            if( i > 0 && i % 3 == chars.length % 3 ){
                str = str + ","
            }
            var ch = chars[ i ];
            str = str + ch;
        }
        return str;
    },
    
    
    showPremiumDialog: function( company_id, company_name, premium_rank, url, redirect_on_cancel ){
        if (this.hasPremiumVoucher( company_id ) || this.isShain() || this.isLump()) {
            window.location = "/in/browse/company/" + company_id ;
            return;
        }
        Dialog.confirm("<div class='Subtitle'><span class='Titletext'>プレミアム閲覧費 (" + this.addComma( premium_rank ) + "円)</span></div><div class='Nakami'> <strong>" + company_name + "</strong>の社員白書をご覧になるには、<strong>"+ this.addComma(premium_rank) +"円 (税込)</strong>のプレミアム閲覧費のお支払いが必要です。閲覧する場合には「確認」ボタン、閲覧しない場合には「キャンセル」ボタンを押してください。<br/><br/>一度、確認ボタンを押されますと、取消しはできませんのでご注意ください。&#8251;プレミアム閲覧登録から30日間、何度でもご覧いただけます！<br /><br /><strong>プレミアム閲覧費："+ this.addComma(premium_rank) + "円(税込)</strong></div>",
                       {
                           windowParameters: { width: 400, height: 270},
                           okLabel: "確認",
                           showEffect: Effect.Appear,
                           cancelLabel: "キャンセル",
                           ok: function(win){ 
                               try{
                                   pageTracker._trackPageview('/premium_ok/by_company/' + company_id );
                                   pageTracker._trackPageview('/premium_ok/by_rank/' + premium_rank );
                               }catch(e){ }

                               /* google analytics にログを送信するまで 0.5秒待ってリクエスト送信 */
                               setTimeout( function(){depositDialog.sendPayRequest( url );}, 500);

                           },
                           cancel: function(win){
                               if( redirect_on_cancel ){ 
                                   try{
                                       pageTracker._trackPageview('/premium_cancel/by_company/' + company_id );
                                       pageTracker._trackPageview('/premium_cancel/by_rank/' + premium_rank );
                                   }catch(e){}
                                   
                                   /* google analytics にログを送信するまで 0.5秒待つ */
                                   setTimeout( function(){window.location = "/";}, 500);
                                   return; 
                               }
                               return false;
                           }
                       }
                      ); 
        try{
            pageTracker._trackPageview('/premium_dialog/by_company/' + company_id );
            pageTracker._trackPageview('/premium_dialog/by_rank/' + premium_rank );
        }catch(e){}
    },
    
    showFreeDialog: function( company_id, redirect_on_cancel ){
        if (this.hasFreeVoucher( company_id ) || this.isYuryo() || this.isLump()) {
            window.location = "/in/browse/company/" + company_id ;
            return;
        }
        
        Dialog.confirm("<div class='Subtitle'><span class='Titletext'>【有料会員登録のご案内】</span></div><div class='Nakami'><strong>無料閲覧特典は終了いたしました。</strong><br/><br />このページをご覧になるには、有料会員登録が必要です。月額固定費として毎月1,980円(税込)、一部、プレミアムマークのついているアンケート回答の閲覧には、プレミアム閲覧費として1社あたり100円(税込)～1,000円(税込)をお支払いいただきます。登録する場合には「登録」ボタン、登録しない場合には「キャンセル」ボタンを押してください。</div>",
                       {
                           windowParameters: { width: 400, height: 330},
                           okLabel: "登録",
                           showEffect: Effect.Appear,
                           cancelLabel: "キャンセル",
                           ok: function(win){
                               window.location = "/static/register";
                           },
                           cancel: function(win){
                               if( redirect_on_cancel ){
                                   window.location = "/";
                               }
                           }
                       }
                      );
        try{
            pageTracker._trackPageview('/switch_dialog/');
        }catch(e){}
    }
});

var depositDialog = new DepositDialog();
