var copay_service_url = SITEROOT  + "/webservices/soapservicecopay";
var base_stream = "";
var curr_card = "";
var beenEnrolled = false;
var isValidCard = false;

var rfTrack = function(rfCode) {    // Razorfish tracking
    var rf_scr=document.createElement('script');
    var proto = window.location.protocol;
    rf_scr.setAttribute('src',proto+'//view.atdmt.com/jaction/'+rfCode);
    document.getElementsByTagName('head')[0].appendChild(rf_scr);
}

$.fn.clearForm = function() {
    $('.error_container').removeClass('error_on');
    var inputs = this.find('input');
    return inputs.each(function() {
        var type = this.type;
        var tag = this.tagName.toLowerCase();
        if (type == 'text' || type == 'password' || tag == 'textarea') {
            this.value = '';
        } else if (type == 'checkbox' || type == 'radio') {
            this.checked = false;
            $(this).prev('.radio, .checkbox').css('background-position','0px 0px')
        } else if (tag == 'select') {
            this.selectedIndex = -1;
        }
    });
};

var resetForm = function(formid) {
    $('#' + formid).clearForm();
}

var setCardStatus = function(stat){
    isValidCard = stat;
}

var replaceView = function(vtohide,vtoshow) {
    //alert('replaceView : vtohide='+vtohide + '  vtoshow=' + vtoshow  );
    if( $('#copayMainContainer').hasClass(vtohide)) { 
         $('#copayMainContainer').removeClass(vtohide);
    }
   if(! $('#copayMainContainer').hasClass(vtoshow)) { 
         $('#copayMainContainer').addClass(vtoshow);
    }
}

var call_cardvalidate_service = function(strm) {
        //alert('call_cardvalidate_service stream : ' + strm +'  CURR_CARD=' + curr_card );
        var isValidCard = false;
        evokeModalDialog.show('busy_copay');
        evokeModalDialog.setHideOnOutsideClick(false);
        $('input#frm_c2_Q_CARD_ID').val(curr_card);
        var paramset = "cardid=" + curr_card;
        var q = "";
        if( base_stream == 'renew') {
             var v_bdmm = $('input#frm_c2_Q_DOB_MM').val();
             var v_bdd = $('input#frm_c2_Q_DOB_DD').val();
             var v_bdyyy = $('input#frm_c2_Q_DOB_YYYY').val();
             var frm_c2_Q_DOB =  v_bdmm + "/"+v_bdd +"/"+v_bdyyy;
             q = "?activity_type=validatecardrenew&dob=" + frm_c2_Q_DOB + "&base_stream=" + base_stream + "&step=1&" + paramset;
        } else {
             q = "?activity_type=validatecard&base_stream=" + base_stream + "&step=1&" + paramset;
        }
        $.getJSON(copay_service_url+ q,function(data){
            
            evokeModalDialog.hide('busy_copay');
            var status_obj = data.meta_header;
            //alert('status_obj.status_code  : ' + status_obj.status_code);
            if( status_obj.status_code == 0) {
                setCardStatus(true);
                call_userinfo_service(base_stream);
            } else {                
                $('#copayMainContainer').removeClass('enrollStep2');
                var err_qual = status_obj.status_qualification;
                //alert('err_qual=' + err_qual);
                if( err_qual.substring(0,4) == "E509") {
                    $('#copayMainContainer').removeClass(base_stream + 'Step2');
                    $('#copayMainContainer').addClass('error_accountExists');
                } else if( err_qual.substring(0,4) == "E502") {
                    $('#copayMainContainer').removeClass(base_stream + 'Step2');
                    $('#copayMainContainer').addClass('error_alreadyActivated');
                } else {
                    //--: there should be a different error message that is system related.
                    $('#copayMainContainer').removeClass(base_stream + 'Step2');
                    $('#copayMainContainer').addClass('error_invalidCard ');
                }
                setCardStatus(false);
                window.scrollTo(0,0);
            }
      });    
      
}

var replace_card = function(strm) {
        evokeModalDialog.show('busy_copay');
        evokeModalDialog.setHideOnOutsideClick(false);
        var val_card = "";
        var val_phone = "";
        var val_dob = "";
        val_card = $('input#cardIDREPLACE').val();
        val_dob = $('input#cardDOB1Replace').val() + "/" + $('input#cardDOB2Replace').val() + "/" + $('input#cardDOB3Replace').val();
        curr_card = val_card;
        if( val_card == "" || val_card == null || val_dob == "" || val_dob == null ){
            evokeModalDialog.hide('busy_copay');
            return;
        }
        var paramset ="cardid=" + curr_card;
        var q = "?activity_type=replace&dob=" + val_dob + "&base_stream=" + base_stream + "&step=1&" + paramset;
        //alert('q=' + q);
        $.getJSON(copay_service_url+ q,function(data){
            evokeModalDialog.hide('busy_copay');
            var status_obj = data.meta_header;
            if( status_obj.status_code == 0) {
                //alert('status_obj.status_qualification='+status_obj.status_qualification);
                curr_card = status_obj.status_qualification; //this is the card id
                $('span#precardid').html(curr_card);
                replaceView(base_stream + 'Step1', 'replaceStep2');
                $('#mainForm\\:card_id').val(curr_card);
                window.scrollTo(0,0);
            } else {                
               var err_qual = status_obj.status_qualification;
               //alert('err_qual: ' + err_qual);
               if( err_qual.substring(0,4) == "E201") {
                    replaceView(base_stream + 'Step1', 'error_invalidCard');
               } else {
                    replaceView(base_stream + 'Step1', 'error_invalidCard');
               }
                 window.scrollTo(0,0);
            }
        
      });    
}

var call_eligibility_service = function() {
    //alert('call_eligibility_service base_stream=' + base_stream );
    var copayfield = get_copay_fields("frm_c1");
    var paramset = "cardid=" + curr_card +"&"+copayfield;           
    var q = "?activity_type=eligibility&step=2&base_stream=" + base_stream + "&" + paramset;
    $.getJSON(copay_service_url+ q,function(data){
        evokeModalDialog.hide('busy_copay');
        var status_obj = data.meta_header;
        //alert('status_obj.status_code=' + status_obj.status_code);
        if( status_obj.status_code == 0 ) {
            dispatchStep2View();
        } else {              
            dispatchStep1ErrorView('error_notEligible');
            window.scrollTo(0,0);
        }
      });    
}

var dispatchStep2View = function() {
    //alert('dispatchStep2View base_stream=' + base_stream);
    if (base_stream == "" ) base_stream = "enroll";
    if( base_stream == "enroll"){
        $("#already_enrolled").show();
       //--:put tracking here 
    } 
    if( base_stream == "renew"){
       //--:put tracking here 
    } 
    replaceView(base_stream + 'Step1', base_stream+ 'Step2');
}

var dispatchStep1ErrorView = function(errorView) {
    if (base_stream == "" ) base_stream = "enroll";
    
    copayTrack(base_stream, errorView);
    /*
    if( base_stream == "enroll"){
       //--:put tracking here 
    } 
    if( base_stream == "renew"){
       //--:put tracking here 
    }
    */
    replaceView(base_stream + 'Step1', errorView);
}

var call_userinfo_service = function(strm) {
    //alert('call_userinfo_service CURR_CARD=' + curr_card);
    evokeModalDialog.show('busy_copay');
    evokeModalDialog.setHideOnOutsideClick(false);
    $('#mainForm\\:card_id').val(curr_card);
    var copayfield_eligibility = get_copay_fields("frm_c1");
    var copayfield_enroll = get_copay_fields("frm_c2");
    var paramset = "";
    //alert('base_stram=' + base_stream);
    var q ="";
        if (base_stream == "renew") {
            //track here
            //alert('RENEW -> UPDATE with frm_c2_Q_CARD_ID=' + curr_card  );
            paramset = "frm_c2_Q_CARD_ID=" + curr_card + "&cardid=" + curr_card + "&base_stream=" + base_stream + "&" + copayfield_enroll + "&" + copayfield_eligibility;           
            q = "?activity_type=updateaccount&step=3&" + paramset;
        } else if (base_stream == "enroll") {
            //track here
            paramset = "frm_c2_Q_CARD_ID=" + curr_card + "&cardid=" + curr_card + "&base_stream=" + base_stream + "&" + copayfield_enroll + "&" + copayfield_eligibility;           
            q = "?activity_type=enrollment&step=3&" + paramset;
        }  
        q = q + "&iv_ChallengeResponsefield=" + $('input#iv_ChallengeResponsefield').val(); 
        var v_areacode = $('input#frm_c2_Q_PHONE_AREACODE').val();
        var v_phonepart1 = $('input#frm_c2_Q_PHONE_PART1').val();
        var v_phonepart2 = $('input#frm_c2_Q_PHONE_PART2').val();
        var frm_c2_Q_PHONE =  v_areacode + v_phonepart1 +v_phonepart2;
        q += "&frm_c2_Q_PHONE=" +  frm_c2_Q_PHONE;
        var v_bdmm = $('input#frm_c2_Q_DOB_MM').val();
        var v_bdd = $('input#frm_c2_Q_DOB_DD').val();
        var v_bdyyy = $('input#frm_c2_Q_DOB_YYYY').val();
        var frm_c2_Q_DOB =  v_bdmm + "/"+v_bdd +"/"+v_bdyyy;
        q += "&frm_c2_Q_DOB=" +  frm_c2_Q_DOB;
        
        var v_smm = $('input#frm_c2_Q_STARTDATE_MM').val();
        var v_sdd = $('input#frm_c2_Q_STARTDATE_DD').val();
        var v_syyy = $('input#frm_c2_Q_STARTDATE_YYYY').val();
        var frm_c2_Q_ENBREL_START_DATE =  v_smm + "/"+v_sdd +"/"+v_syyy;
        q += "&frm_c2_Q_ENBREL_START_DATE=" +  frm_c2_Q_ENBREL_START_DATE;
        var errstat = false;
        //alert(copay_service_url+ q);
        $.getJSON(copay_service_url+ q,function(data) {
            evokeModalDialog.hide('busy_copay');
            var status_obj = data.meta_header;
            if( status_obj.status_code == 0) {
                    if( base_stream == 'renew') {
                        status_obj.status_qualification = curr_card;                                               
                    }
                    //alert("checking if the service actually returned a cardid=" + status_obj.status_qualification);
                    if(status_obj.status_qualification == "" || status_obj.status_qualification == null) {
                        errstat = true;                                                
                    } else {
                        if((curr_card == "") || (curr_card == "empty") || (curr_card == null)) {
                            curr_card = status_obj.status_qualification;
                        }
                        //alert('NEW pacrdid generated=' + curr_card);
                        $('span#precardid').html(curr_card);
                        $('#copayMainContainer').removeClass('error_alreadyActivated');

                        copayTrack(base_stream, 'step3_complete');                        
                        if( base_stream == 'enrol') {
                            rfTrack('ifrenb_ENB20100101ConsumerSpprtCardEnrollStep3_2');
                        } else if( base_stream == 'renew') {
                            rfTrack('ifrenb_ENB20100101RenewSavingsCardStep3_3');
                        }
                        
                        //alert('will call replaceView=' + base_stream);
                        replaceView(base_stream + 'Step2', base_stream + 'Step3');
                        $('#mainForm\\:card_id').val(curr_card);
                       window.scrollTo(0,0);

                    }
            } else if (status_obj.status_code == -5 ) { 
                $('#reload_btn').click();
                evokeModalDialog.hide('busy_copay');
                evokeModalDialog.setHideOnOutsideClick(false);
                $('table.captchaTable .error_container').addClass('error_on');
                var os = $('.captchaTable').offset();
                if (os.top > 0) $('html, body').animate({scrollTop:os.top - 50}, 0);
            } else {
                 errstat = true;                                                
            }
            if (errstat)  {                
               var err_qual = status_obj.status_qualification;
               var err_type = "";
                //alert('err_qual : ' + err_qual);
               if( err_qual.substring(0,4) == "E541") {
                    err_type = "error_accountExists";
               } else if( err_qual.substring(0,4) == "E542") {
                    err_type = "alreadyActivated";
               } else if( err_qual.substring(0,4) == "E201") {
                    err_type = "error_invalidCard";
               } else if( err_qual.substring(0,4) == "E101" ) {
                    //includes invalid States that are not supportable
                    err_type = "error_accountProblem";
               } else if( err_qual.substring(0,4) == "E502" ) {
                    //Patient is still active. Cannot enroll or re-enroll at this time.
                    err_type = "error_renewStillValid";
               } else {
                    err_type = "error_invalidCard";
               }
               
               copayTrack(base_stream, err_type);
               replaceView(base_stream + 'Step2', err_type);
               window.scrollTo(0,0);
            }
  });    
 }

var get_copay_fields = function(prefix){
        var serialized_frm = "";
        var delimiter = "&";
        inputs = document.getElementsByTagName("input");
        for (var b = 0; b < inputs.length; b++) {
           if( inputs[b].name.substr(0,6) == prefix) { 
                if (inputs[b].type == "hidden" ){
                    serialized_frm += delimiter+ inputs[b].name + "=" + inputs[b].value;
               } else  if (inputs[b].type == "text" && inputs[b].value.length > 0){
                    serialized_frm += delimiter + inputs[b].name + "=" + inputs[b].value;
                } else if (inputs[b].type == "checkbox" && inputs[b].checked == true ) {
                    serialized_frm +=  delimiter + inputs[b].name + "=" + inputs[b].value;
                } else if (inputs[b].type == "radio" && inputs[b].checked == true ) {
                    var name = inputs[b].name;
                    serialized_frm +=  delimiter + name + "=" + inputs[b].value;
                }
            }
        }
        selects = document.getElementsByTagName("select");
        for (var b1 = 0; b1 < selects.length; b1++) {
            if( selects[b1].name.substr(0,6) == prefix && selects[b1].selectedIndex > 0) { 
                    var selectitem = selects[b1].options[selects[b1].options.selectedIndex].value
                    serialized_frm +=  delimiter +  selects[b1].name + "=" +selectitem;
            }
        }
        return (serialized_frm.substr(1));
}

var supportCard = {
        
        submitEligibility: function() {
            //alert('submitEligibility');
            var whichCopayStep = getQueryValue('form');
            base_stream = whichCopayStep;
            if (validate_form()) {
                copayTrack(whichCopayStep, 'step1_complete');
                if (base_stream == "enroll") {
                    rfTrack('ifrenb_ENB20100101ConsumerSupportCardEnrollste_2');
                } else if (base_stream == "renew") {
                    rfTrack('ifrenb_ENB20100101RenewSavingsCardStep1_2');
                } else if( base_stream == "replace" ) {
                    rfTrack('ifrenb_ENB20100101ReplaceCard_2');
                }
                evokeModalDialog.show('busy_copay');
                evokeModalDialog.setHideOnOutsideClick(false);
                //alert('will call call_eligibility_service base_stream=' + base_stream);
                call_eligibility_service();
            }
	},

	submitYourInfo: function() {
          //alert('submitYourInfo base_stream=' + base_stream);

          /* temporarily disabled - we now have a modal dialog
          if (this.beenEnrolled)   {
                alert('been enrolled');
                return false;
          } 
          */

          //alert('will validate');
          if (validate_form()) {
         // alert('valid');

                this.beenEnrolled = true;
                //stream = base_stream;
                    //alert('base_stream=' + base_stream);
                    if( base_stream == "enroll") {
                        rfTrack('ifrenb_ENB20100101ConsumerSpprtCardEnrollestep_2');
                        curr_card = $('input#cardIDENROLL').val();
                    } else if( base_stream == "renew" )  {
                        rfTrack('ifrenb_ENB20100101RenewSavingsCardStep2_2');
                        curr_card = $('input#cardIDREENROLL').val();
                    } else  if( base_stream == "replace" ) {
                        curr_card = $('input#cardIDREPLACE').val();
                    }
                    copayTrack(base_stream, 'step2_complete');
                    
                    //alert('curr_card=' + curr_card);
                    
                    if( base_stream == "enroll") {
                        if (curr_card == "" || curr_card == undefined || curr_card == null) {
                            call_userinfo_service(base_stream);
                        } else {
                            call_cardvalidate_service(base_stream);
                        }
                    } else if( base_stream == "renew" ) {
                        if (curr_card == "" || curr_card == undefined || curr_card == null) {
                            isValidCard = false;
                        } else {
                            call_cardvalidate_service(base_stream);
                        }
                    }    
            } else {
                //alert('not valid');
                this.beenEnrolled = false;
            }
	},

	submitReplace: function() {
            if(validate_form()) {
                // alert('submitReplace');
                base_stream = "replace";
                copayTrack(base_stream, 'step1_complete');
                replace_card(base_stream);
            }
	}
};


var printCard = function() {
    if (!(printCardWin)) {
        var printCardWin = window.open("content/support-card-print.jspx?cardid=" + curr_card,"print_card_window","toolbar=no,location=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,copyhistory=no,width=800,height=600");
    }
    window.scrollTo(0,0);
}


var dispatchForm = function(f) {
    //alert('dispatchForm [' + f + ']');

    $("#already_enrolled").hide();

    if (f == 'enroll' ) {
        copayTrack(f, 'form_begin');        
    } else if (f == 'renew') {
        copayTrack(f, 'form_begin');        
        replaceView('enrollStep1','renewStep1');
    } else  if (f == 'replace') {
        copayTrack(f, 'form_begin');        
        replaceView('enrollStep1','replaceStep1');
    } else { //bounce to landing page       
    
        //--: Note: disabled temporarilty for reviewers to see the error states.
        /*
        if(  (""+window.location).indexOf('program') < 1) {
          back_to_landing();
        }
        */
    }
}

var copay_form_init = function() {
    //alert('copay_form_init');
    //tEmporarily disabled    dispatchForm(getQueryValue('form'));

    $("#already_enrolled").hide();

/* REMOVE THIS BLOCK AFTER REVIEWS - start */

    var whichView = getQueryValue('view');
    //alert('whichView=' + whichView);
    if(whichView != '') {
        if( $('#copayMainContainer').hasClass(whichView)) { 
             $('#copayMainContainer').removeClass(whichView);
        }
        $('#copayMainContainer').removeClass('enrollStep1');
        $('#copayMainContainer').addClass(whichView);
    } else {
            dispatchForm(getQueryValue('form'));
    }

/* REMOVE THIS BLOCK AFTER REVIEWS - end */


    $('#resetStep1').click(function() {
        resetForm('continuumStep1');
        window.scrollTo(0,0);
    });
    $('#resetStep2').click(function() {
        resetForm('continuumStep2');
        window.scrollTo(0,0);
    });
    $('input[name=dob_mon], input[name=start_mon]')
        .css('color','#999999')
        .val('mm');
    $('input[name=dob_day], input[name=start_day]')
        .css('color','#009999')
        .val('dd');
    $('input[name=dob_year], input[name=start_year]')
        .css('color','#009999')
        .val('yyyy');        
        
    $('input#frm_c2_Q_DOB_MM, input#frm_c2_Q_STARTDATE_MM, input#cardDOB1Replace').focus(function() {
         if ($(this).val() == "mm") {
            $(this)
                .css('color','#009999')
                .val('');
         }
    });
    $('input#frm_c2_Q_DOB_MM, input#frm_c2_Q_STARTDATE_MM, input#cardDOB1Replace').blur(function() {
        if ($(this).val() == "") {
            $(this)
                .css('color','#009999')
                .val('mm');
        }
    });
    $('input#frm_c2_Q_DOB_DD, input#frm_c2_Q_STARTDATE_DD, input#cardDOB2Replace').focus(function() {
         if ($(this).val() == "dd") {
            $(this)
                .css('color','#009999')
                .val('');
         }
    });
    $('input#frm_c2_Q_DOB_DD, input#frm_c2_Q_STARTDATE_DD, input#cardDOB2Replace').blur(function() {
        if ($(this).val() == "") {
            $(this)
                .css('color','#009999')
                .val('dd');
        }
    });
    $('input#frm_c2_Q_DOB_YYYY, input#frm_c2_Q_STARTDATE_YYYY, input#cardDOB3Replace').focus(function() {
         if ($(this).val() == "yyyy") {
            $(this)
                .css('color','#009999')
                .val('');
         }
    });
    $('input#frm_c2_Q_DOB_YYYY, input#frm_c2_Q_STARTDATE_YYYY, input#cardDOB3Replace').blur(function() {
        if ($(this).val() == "") {
            $(this)
                .css('color','#009999')
                .val('yyyy');
        }
    }); 
    $('input#frm_c2_Q_DOB_MM, input#frm_c2_Q_STARTDATE_MM, input#cardDOB1Replace')
            .css('color','#009999')
            .val('mm');
    $('input#frm_c2_Q_DOB_DD, input#frm_c2_Q_STARTDATE_DD, input#cardDOB2Replace')
            .css('color','#009999')
            .val('dd');  
    $('input#frm_c2_Q_DOB_YYYY, input#frm_c2_Q_STARTDATE_YYYY, input#cardDOB3Replace')
            .css('color','#009999')
            .val('yyyy');
            
}

var back_to_landing = function() {
    window.location = SITEROOT  + "/ENBREL-support-card-program.jspx";
}
