﻿/// <reference path="../jquery/jquery.131.js" />

var openID = {

    cTextbox: null,
    cButtonWrapper: null,
    cProviderInfo: null,
    oProvider: null,
    sProviderInfo: '&nbsp;',
    iLastID: 0,

    init: function(settings) {

        this.oSettings = settings;
        this.cTextbox = $('#' + settings.TextboxID);
        this.cButtonWrapper = $('#' + settings.ButtonWrapperID);
        this.cButtonWrapper.empty();
        this.cProviderInfo = $('#' + settings.ProviderInfoID);

        $.getJSON(this.oSettings.DataPath,
            function(data) {
                openID.oProvider = data.provider;
                $.each(data.provider, function(i, item) {
                    openID.cButtonWrapper.append(openID.getButtonHtml(i, item));
                });
            });
    },

    getButtonHtml: function(i, provider) {
        var sHtml = '<a ' +
                        'id="Provider' + i + '" ' +
                        'href="?p=' + i + '" ' +
                        'title="' + provider.name + '" ' +
                        'class="' + this.oSettings.ButtonClass + '" ' +
                        'style="background-image: url(' + this.oSettings.ImagePath + '/' + provider.icon + ')" ' +
                        'onclick="openID.setProvider(' + i + ');return false;" ' +
                        'onmouseover="openID.showProviderInfo(\'' + i + '\');" ' +
                        'onmouseout="openID.hideProviderInfo();"' +
                    '></a>';
        return sHtml;
    },

    setProvider: function(iID) {
        sUrl = this.oProvider[iID].openid;
        var cField = this.cTextbox[0];
        var iStart = sUrl.indexOf("%");
        var iEnd = sUrl.lastIndexOf("%") - 1;
        sUrl = sUrl.replace('%', ''); sUrl = sUrl.replace('%', '');
        this.cTextbox.val(sUrl);
        if (iStart != -1 && iEnd != -1) {
            if (cField.setSelectionRange) {
                //normale Browser..
                cField.setSelectionRange(iStart, iEnd);
            } else if (cField.createTextRange) {
                //IE...
                var range = cField.createTextRange();
                range.collapse(true);
                range.moveEnd('character', iEnd);
                range.moveStart('character', iStart);
                range.select();
            }
            //cField.disabled = false;
            cField.focus();
        } else {
            //cField.disabled = true;
        }
        $("#Provider" + this.iLastID).removeClass(this.oSettings.ButtonSelectedClass);
        $("#Provider" + iID).addClass(this.oSettings.ButtonSelectedClass);
        this.iLastID = iID;
        this.sProviderInfo = '<a href="' + this.oProvider[iID].url + '">' +
                             '<strong>' + this.oProvider[iID].name + '</strong>' +
                             '</a>';
        if (this.oProvider[iID].info.length != 0) {
            this.sProviderInfo += ' - ' + this.oProvider[iID].info;
        }
        this.cProviderInfo.html(this.sProviderInfo);
    },

    showProviderInfo: function(iID) {
        var sProviderInfo = '<strong>' + this.oProvider[iID].name + '</strong>'
        if (this.oProvider[iID].info.length != 0) {
            sProviderInfo += ' - ' + this.oProvider[iID].info;
        }
        this.cProviderInfo.html(sProviderInfo);
    },

    hideProviderInfo: function() {
        this.cProviderInfo.html(this.sProviderInfo);
    }
};
