var is_logged_in = false;
if(typeof(thickbox_connect) == 'undefined'){
    // Connect object contains the callbacks that will be called 
    // on sucessfull login or register.
    // Connects thickbox page with main page.
    thickbox_connect = {};
    thickbox_connect.login = [];
}

thickbox_connect.register = function(info) {
};

thickbox_connect.login.push( function(info) {
    if(info['lang'])
        toggle_state('have_key',info['name'],info['key'],info['lang'],info['email']);
    else                
        toggle_state('signed',info['name']);
});

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

function sign_out(){
  $.post("/quillAPI_backend/signOut", {},
          function(data){
                toggle_state('unsigned');
        });
}

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

function on_signout(info){
        toggle_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 )
            {
                toggle_state('unsigned');
            }else{
                if(info['lang'] && !info['commerical_widget'])
                    toggle_state('have_key',info['name'],info['key'],info['lang'],info['email']);
                else if(!info['lang'])                    
                    toggle_state('signed',info['name'],info['email']);
                else                    
                    toggle_state('get_new_key');;
            }
        });

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

function toggle_state(state,name,key,lang,email){
    if(state == 'unsigned'){
        is_logged_in = false;
        $('#id_in_use').hide();
        $('#change_lang_link').css('display', 'none');
        $('#registration_view').css('display', 'block');
        $('#api_register_link').css('display', 'block');
        $('#loggedin_view').css('display', 'none');
        $('#apikey_present_view').css('display', 'none');
        $("#status_signin").css('display','inline');
        $("#status_signout").css('display','none');
        $('#key_div').css('display','none');
        $('#lang_selection_div').css('display','none');
        $('#sign_in_div').css('display','block');
        $('#key_in_desc').html('API_KEY');
        $('#key_in_code').html('API_KEY');
        $('.selected_lang').html('Hindi');
        $('#mykey').html('');
        $('#mylangs').html('');
    }
    else if(state == 'signed'){
        is_logged_in = true;
        $('#id_in_use').hide();
        $('#change_lang_link').css('display', 'none');
        $('#registration_view').css('display', 'none');
        $('#api_register_link').css('display', 'none');
        $('#loggedin_view').css('display', 'block');
        $('#apikey_present_view').css('display', 'none');
        $("#status_signin").css('display','none');
        $("#status_signout").css('display','inline');
        $('#key_div').css('display','none');
        $('#lang_selection_div').css('display','block');
        $('#sign_in_div').css('display','none');
        $('.selected_lang').html('Hindi');
        $('#tcagree').attr('checked', true);
        $('#mykey').html('');
        $('#mylangs').html('');
    }
    else if(state == 'have_key' || state == 'thanku'){
        is_logged_in = true;
        $('#id_in_use').hide();
        $('#url').attr({ value: '' });
        $("#language option[value='Choose Language']").attr('selected', 'selected');
        var langs = ["Bengali","Gujarati","Hindi","Kannada","Malayalam","Marathi","Tamil","Telugu","Punjabi","Nepali"];
        $('#lang_list').find('option').remove();
        $('#lang_list').append("<option selected='selected'>Choose Language</option>");
        for(var i=0; i<langs.length;i++)
            if(langs[i]!=lang)
                 $('#lang_list').append("<option value="+langs[i]+">"+langs[i]+"</option>");
        $('#change_lang_link').css('display', 'inline');
        $('#registration_view').css('display', 'none');
        $('#loggedin_view').css('display', 'none');
        $('#apikey_present_view').css('display', 'block');
        $('#api_register_link').css('display', 'none');
        $("#status_signin").css('display','none');
        $("#status_signout").css('display','inline');
        $('#mykey').html(key);
        $('#mylangs').html(lang);
        $('#key_in_desc').html(key);
        $('#key_in_code').html(key);
        $('.selected_lang').html(lang);
        $('#key_div').css('display','block');
        $('#lang_selection_div').css('display','none');
        $('#sign_in_div').css('display','none');
        $('#replace_mesg').css('display','none');
    }
    else if(state == 'get_new_key'){
        is_logged_in = true;
        $('#registration_view').css('display', 'none');
        $('#api_register_link').css('display', 'none');
        $('#loggedin_view').css('display', 'none');
        $('#apikey_present_view').css('display', 'none');
        $('#key_div').css('display','none');
        $('#sign_in_div').css('display','none');
        $('#id_in_use').show();
        $('#registration_view').hide();
    }
}

function show_keygen_form(){
    $('#login_form').hide();
    $('#genkey_form').show();
}

function show_thankyou_page(name, key, lang, email) {
    $('#login_form').hide();
    $('#genkey_form').hide();
    $('#api_thankyou_page').show();
    $(this.parent.document.getElementById('TB_ajaxWindowTitle')).html('Thank You');
    $(this.parent.document.getElementById('TB_window')).css({'height': '100px'});
    $(this.parent.document.getElementById('TB_iframeContent')).css({'height': '100px'});
    $(this.parent.document.getElementById('TB_closeWindowButton')).click( function() {
        $('#Thanku',self.parent.document).css({'display':'none'});    
        self.parent.toggle_state('have_key',name,key,lang,email);
    });
}

function genrate_key(){
    $("#dTermsMsg").css('display','none');
    $("#LangMsg").css('display','none');
    $("#URLMsg").css('display','none');
    var url_str = $('#url').val();
    if(!url_str || !isValidURL(url_str) ){
        $("#URLMsg").css('display','inline');
        return;
    }
    if($('#language').val() === 'Choose Language'){
        $("#LangMsg").css('display','inline');
        return;
    }
    if(!$('#tcagree').is(':checked')){
        $("#dTermsMsg").css('display','inline');
        return;
    }
    $.post("/quillAPI_backend/genrateKey",            
             { language: $('#language').val(),
               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 )
        {
            //$("#errSpan").html(info['messg']);
        }else{ 
            $("#errSpan").html(info['messg']);
            if(info['lang']){
                self.parent.toggle_state('signed',info['name']);
                self.parent.toggle_state('thanku',info['name'],info['key'],info['lang'],info['email']);
            }else                
                self.parent.toggle_state('signed',info['name']);
            show_thankyou_page(info['name'], info['key'], info['lang'], info['email']);
            //self.parent.tb_remove();
        }
    });
}

function change_lang(){
    $("#LangMsg2").css('display','none');
    $("#status_msg").html('');
    if($('#lang_list').val() === 'Choose Language'){
        $("#LangMsg2").css('display','inline');
        return;
    }        
    $("#status_msg").css({'color':'#006699'});
    $("#status_msg").html('Please wait. Your request is being processed.....');
    $.post("/quillAPI_backend/changeLang",            
             { new_lang: $('#lang_list').val(),
               present_lang: $('#mylangs').html() },
      function(data){
        var info = JSON.parse(data, function (key, value) { return value}); 
        //todo: show status messg
        if(info['status'].indexOf('Error') >= 0 )
        {
            $("#status_msg").css({'color':'red'});
            $("#status_msg").html(info['messg']);
        }else{ 
            $("#status_msg").css({'color':'green'});
            $("#status_msg").html('Your Language has been updated');
            if(info['lang'])
                self.parent.toggle_state('have_key',info['name'],info['key'],info['lang'],info['email']);
            else                
                self.parent.toggle_state('signed',info['name']);
            self.parent.tb_remove();
        }
        setTimeout("$('#status_msg').html('');",5000);
    });
}


$(document).ready( function() {
    var url = $(window).attr('location').href;
    var last_selected_lang = url.split('/')[url.split('/').length - 2];
    $('.selected_lang').text(last_selected_lang);
    $('#language').change( function() {
        var lang = $(this).val();
        if (lang == "Choose Language") {
            lang = last_selected_lang;
        }
        $('.selected_lang').text(lang.toLowerCase());
    });
});

