var langs = ["Bengali","Gujarati","Hindi","Kannada","Malayalam","Marathi","Tamil","Telugu","Punjabi","Nepali"];

function update_pricing(lang_cnt, months) {
    
    if( months==-1 ) {
        var month = $('#months_value').val()
        if( lang_cnt==1 ) { /* 1 language is selected */
            document.getElementById('price_value').value = (month/3)*5000;
            document.getElementById('lang_cnt_input3').value = '3'
            document.getElementById('lang_cnt_input1').value = '1'
            activate(1)
        }
        else { /* 3 languages are selected */
            document.getElementById('price_value').value = (month/3)*10000;
            document.getElementById('lang_cnt_input1').value = '1'
            document.getElementById('lang_cnt_input3').value = '3'
            activate(3)
        }
    }
    else if( lang_cnt==-1 ) {
        var month = $('#months_value').val();
        if( $("input[name='no_of_lang']:checked").val()=='1' ) {
            document.getElementById('price_value').value = ( month/3 )*5000;
        }
        else {
            document.getElementById('price_value').value = ( month/3 )*10000;
        }
    }
}

function capitalize(name) {
    var n1 = name.replace(/"/ig,"");
    var cap_name = n1.substring(0,1).toUpperCase() + 
                   n1.substring(1,n1.length).toLowerCase();
    return cap_name;
}

function isValidURL(text) {
    if(text.match(/^http:\/\/.+$/)) {
        return true;
    }
    return false;
}

function ctoggle_state(state,name,key,lang,email,sdate,edate){
    if(state == 'unsigned'){
        $('#genkey_form').hide(); 
        $('#api_thankyou_page').hide();
        $('#change_lang_form').hide();
        $('#id_in_use').hide();
        $('#widget_home').show();
    }else if(state == 'signed'){
        $('#api_thankyou_page').hide();
        $('#change_lang_form').hide();
        $('#widget_home').hide();
        $('#id_in_use').hide();
        if(email)
            $('#widget_reg_user_id').html(email);
        init_keyget_form();
        $('#genkey_form').show();
    }
    else if(state == 'have_key'){
        $('#genkey_form').hide();
        $('#api_thankyou_page').hide();
        $('#widget_home').hide();
        $('#id_in_use').hide();
        $('#change_lang_form').show();
        if(sdate){
            $('#speriod').show();
            $('#start_date').html(sdate);
            $('#end_date').html(edate);
        }else{
            $('#speriod').hide();
        
        }

        init_chaneg_lang_form(lang);

    }
    else if(state == 'get_new_key'){
        $('#genkey_form').hide();
        $('#api_thankyou_page').hide();
        $('#widget_home').hide();
        $('#change_lang_form').hide();
        $('#id_in_use').show();
    }
}
function neat(a){ 
    s = "";
    b = a.split(',');
    if(b.length>=2){
        s = b[b.length-2]+" and "+b[b.length-1];
    }
    else{
        s = b[0];
    }
    for(var i=0;i<b.length-2;i++){
        s = b[i]+", "+s;
    }
    return s;
}


function init_chaneg_lang_form(lang) {
    $('#langset').html(neat(lang));
    act_langs = lang.split(',');
    for(var i=0;i<act_langs.length;i++){
       $('#plang'+String(i+1)).html('Change '+act_langs[i]+' to :'); 
       $('#tr_clang'+String(i+1)).show();
       $('#clanguage'+ String(i+1)).find('option').remove();
           $('#clanguage'+ String(i+1)).append("<option selected='selected' value='Choose Language'>Choose Language</option>");
           for(var j=0; j<langs.length;j++)
               $('#clanguage'+ String(i+1)).append("<option value="+langs[j]+">"+langs[j]+"</option>");
    }
}

function init_keyget_form(){
    $('#url').val('http://');
    $('input[name="no_of_lang"][value="3"]').attr('checked', true); 
    $("#language1 option[value='Choose Language']").attr("selected", true);
    $("#language2 option[value='Choose Language']").attr("selected", true);
    $("#language3 option[value='Choose Language']").attr("selected", true);
    $("#payment_mode option[value='Select']").attr("selected", true);
    $("#months_value option[value='3']").attr("selected", true);
    $('#price_value').val('10000');
}

function Change_lang_set(){
   $('#cstatus_msg').hide();
   $('#clang1_error').hide();
   $('#clang2_error').hide();
   $('#clang3_error').hide();

   var changeset = {}
   var err_count=0;
   var total_changes=0;
   if(act_langs.length >=1 && $('#clanguage1').val() !== 'Choose Language'){
        if($('#clanguage1').val() == act_langs[0]){
            $('#clang1_error').show();
            err_count++;}
        else{
            changeset[act_langs[0]] = $('#clanguage1').val();
            total_changes++;
        }
  } 
  if(act_langs.length >=2 && $('#clanguage2').val() !== 'Choose Language'){
        if($('#clanguage2').val() == act_langs[1]){
            $('#clang2_error').show();
            err_count++;}
        else{
            changeset[act_langs[1]] = $('#clanguage2').val();
            total_changes++;
        }
  }
  if(act_langs.length >=3 && $('#clanguage3').val() !== 'Choose Language'){
        if($('#clanguage3').val() == act_langs[2]){
            $('#clang3_error').show();
            err_count++;}
        else{
            changeset[act_langs[2]] = $('#clanguage3').val();
            total_changes++;
        }
  }
  if(err_count>0)
      return;
  if(total_changes == 0){
      $('#cstatus_msg').html('Please select a language to change')
      $('#cstatus_msg').css({'color':'red'});
      $('#cstatus_msg').show();
       return;
  }

    $("#cstatus_msg").html("Processing your request...");
    $('#cstatus_msg').css({'color':'blue'});
    $('#cstatus_msg').show();
  $.post("/quillAPI_backend/changeLangSet",            
             { languages_map: JSON.stringify(changeset, function (key, value) {return value})
               },
      function(data){
        var info = JSON.parse(data, function (key, value) { return value}); 
        //todo: show status messg
        if(info['status'].indexOf('Error') >= 0 )
        {
            $("#cstatus_msg").html(info['messg']);
            $('#cstatus_msg').css({'color':'red'});
            $('#cstatus_msg').show();
        }else{ 
            $("#cstatus_msg").html("Language set updated");
            $('#cstatus_msg').css({'color':'green'});
            $('#cstatus_msg').show();
            ctoggle_state('have_key',info['name'],info['key'],info['lang'],info['email'],info['Subscribed_on'],info['valid_till']);
            //self.parent.tb_remove();
        }
   }); 
  
}

function on_signin(info){
    if(!info){
        get_key();
    }else {
        if(info['lang'] && info['commerical_widget'])
            ctoggle_state('have_key',info['name'],info['key'],info['lang'],info['email'],info['Subscribed_on'],info['valid_till']);
        else if(!info['lang'])                    
            ctoggle_state('signed',info['name'],info['key'],info['lang'],info['email']);
        else                    
            ctoggle_state('get_new_key');
    }
}

function on_signout(info){
        ctoggle_state('unsigned');
}

if(typeof(auth_signout_callbacks) == 'undefined')
    auth_signout_callbacks = [];
if(typeof(auth_signin_callbacks) == 'undefined')
    auth_signin_callbacks = [];
auth_signin_callbacks.push(on_signin);
auth_signout_callbacks.push(on_signout);

function get_key(){
    if (CookieManager.get('QuillAPI_userinfo')) {
        $.post("/quillAPI_backend/getKey", {},
          function(data){
          var info = JSON.parse(data, function (key, value) { return value}); 
            if(info['status'].indexOf('Error') >= 0 )
            {
                ctoggle_state('unsigned');
            }else {
                on_signin(info);
            }
        });

    } else {
        ctoggle_state('unsigned');
    }
}

function activate(num){
    if(num>0)
        $('#lang_select_label').show();
    else
        $('#lang_select_label').hide();

    for(var i=1; i<=3 ;i++){
        if(i<=num){
            $('#language'+ String(i)).find('option').remove();
            $('#language'+ String(i)).append("<option selected='selected'>Choose Language</option>");
            for(var j=0; j<langs.length;j++)
                $('#language'+ String(i)).append("<option value="+langs[j]+">"+langs[j]+"</option>");
            $('#tr_lang'+ String(i)).show();
        } else
            $('#tr_lang'+ String(i)).hide();
    }
}

function validate(){
    var err_count=0;
    var url_str = $('#url').val();
    if(!url_str || !isValidURL(url_str) ){
        $("#url_error").show();
        err_count++;
    }
    var num_langs = parseInt($("input[name='no_of_lang']:checked").val());
    if($("input[name='no_of_lang']:checked").val() == 'Select' ){
        $("#lang_pack_error").show();
        err_count++;
    }
    if(num_langs>=1 && $('#language1').val() == 'Choose Language' ){
        $("#lang1_error").show();
        err_count++;
    }
    if(num_langs==3 && $('#language2').val() == 'Choose Language' ){
        $("#lang2_error").show();
        err_count++;
    }
    if(num_langs==3 && $('#language3').val() == 'Choose Language' ){
        $("#lang3_error").show();
        err_count++;
    }
    if($('#payment_mode').val() == 'Select' ){
        $("#payment_mode_error").show();
        err_count++;
    }
    if(!$('#tcagree').is(':checked')){
        $("#dTermsMsg").show();
        err_count++;
    }
    if(err_count>0)
        return false;
    return true;
}
function clear_error_msgs(){
    $("#url_error").hide();
    $("#lang_pack_error").hide();
    $("#lang1_error").hide();
    $("#lang2_error").hide();
    $("#lang3_error").hide();
    $("#payment_mode_error").hide();
    $("#dTermsMsg").hide();
}

function genrateKey(){
    clear_error_msgs();
    if(!validate())
        return;
    $('#status_msg').css({'color':'blue'});
    $('#status_msg').html('genrating key');
    var url_str = $('#url').val();
    var lang_count = parseInt($("input[name='no_of_lang']:checked").val());
    var months = $('#months_value').val();
    var mode = $('#payment_mode').val();
    var selected_langs = [];
    for(var i=1;i<=parseInt($("input[name='no_of_lang']:checked").val());i++)
        selected_langs[i-1] = $('#language'+String(i)).val();

    $.post("/quillAPI_backend/genrateMultiLangKey",            
             { languages: JSON.stringify(selected_langs, function (key, value) {return value}),
               num_langs: lang_count,
               num_months: months,
               payment_mode: mode,
               url: url_str },
      function(data){
        var info = JSON.parse(data, function (key, value) { return value}); 
        //todo: show status messg
        if(info['status'].indexOf('Error') >= 0 )
        {
            $("#status_msg").html(info['messg']);
        }else{ 
            $("#status_msg").html(info['messg']);
            show_thankyou_page(info['name'], info['key'], info['lang'], info['email'],info['Subscribed_on'],info['valid_till']);
            //self.parent.tb_remove();
        }
    });
}

function show_thankyou_page(name, key, lang, email,sdate,edate) {
    $('#genkey_form').hide();
    $('#api_thankyou_page').show();
    if(!$('#api_thankyou_page')[0])
        ctoggle_state('have_key',name,key,lang,email,sdate,edate);
}

function eliminate_lang(myid, lang){
    
    var l1 = $('#language1').val();
    var l2 = $('#language2').val();
    var l3 = $('#language3').val();
    for(var i=1; i<=3 ;i++){
      if(i!=myid){
        $('#language'+ String(i)).find('option').remove();
        $('#language'+ String(i)).append("<option selected='selected' >Choose Language</option>");
        for(var j=0; j<langs.length;j++)
            if(langs[j]!=l1 && langs[j]!=l2 && langs[j]!=l3)
                $('#language'+ String(i)).append("<option value="+langs[j]+">"+langs[j]+"</option>");
        if(i==1)
            $('#language'+ String(i)).append("<option value='"+l1+"'>"+l1+"</option>");
        if(i==2)
            $('#language'+ String(i)).append("<option value='"+l2+"'>"+l2+"</option>");
        if(i==3)
            $('#language'+ String(i)).append("<option value='"+l3+"'>"+l3+"</option>");

      }  
    } 
    if(l1 != 'Choose Language') $("#language1 option[value="+l1+"]").attr("selected", true);
    if(l2 != 'Choose Language') $("#language2 option[value="+l2+"]").attr("selected", true);
    if(l3 != 'Choose Language') $("#language3 option[value="+l3+"]").attr("selected", true);
}

$(document).ready(function(){
        update_pricing(3,-1);
        $('#language1').change(function(){
            eliminate_lang(1, $(this).val());
        });
        $('#language2').change(function(){
            eliminate_lang(2, $(this).val());
        });
        $('#language3').change(function(){
            eliminate_lang(3, $(this).val());
        });
        $('input[name="no_of_lang"][value="3"]').attr('checked', true); 
        
        //get_key();
});

