00001 <?php
00002 header('Content-type: application/javascript');
00003
00004 $str=<<<OPENID
00005
00006
00007
00008
00009
00010
00011
00012 var providers_large = {
00013 google: {
00014 name: 'Google',
00015 url: 'https://www.google.com/accounts/o8/id'
00016 },
00017 yahoo: {
00018 name: 'Yahoo',
00019 url: 'http://yahoo.com/'
00020 },
00021 aol: {
00022 name: 'AOL',
00023 label: 'Enter your AOL screenname.',
00024 url: 'http://openid.aol.com/{username}/'
00025 },
00026 openid: {
00027 name: 'OpenID',
00028 label: 'Enter your OpenID.',
00029 url: null
00030 }
00031 };
00032 var providers_small = {
00033 myopenid: {
00034 name: 'MyOpenID',
00035 label: 'Enter your MyOpenID username.',
00036 url: 'http://{username}.myopenid.com/'
00037 },
00038 livejournal: {
00039 name: 'LiveJournal',
00040 label: 'Enter your Livejournal username.',
00041 url: 'http://{username}.livejournal.com/'
00042 },
00043 flickr: {
00044 name: 'Flickr',
00045 label: 'Enter your Flickr username.',
00046 url: 'http://flickr.com/{username}/'
00047 },
00048 technorati: {
00049 name: 'Technorati',
00050 label: 'Enter your Technorati username.',
00051 url: 'http://technorati.com/people/technorati/{username}/'
00052 },
00053 wordpress: {
00054 name: 'Wordpress',
00055 label: 'Enter your Wordpress.com username.',
00056 url: 'http://{username}.wordpress.com/'
00057 },
00058 blogger: {
00059 name: 'Blogger',
00060 label: 'Your Blogger account',
00061 url: 'http://{username}.blogspot.com/'
00062 },
00063 verisign: {
00064 name: 'Verisign',
00065 label: 'Your Verisign username',
00066 url: 'http://{username}.pip.verisignlabs.com/'
00067 },
00068 vidoop: {
00069 name: 'Vidoop',
00070 label: 'Your Vidoop username',
00071 url: 'http://{username}.myvidoop.com/'
00072 },
00073 verisign: {
00074 name: 'Verisign',
00075 label: 'Your Verisign username',
00076 url: 'http://{username}.pip.verisignlabs.com/'
00077 },
00078 claimid: {
00079 name: 'ClaimID',
00080 label: 'Your ClaimID username',
00081 url: 'http://claimid.com/{username}'
00082 }
00083 };
00084 var providers = $.extend({}, providers_large, providers_small);
00085 var openid_called = new Array();
00086 var openid = {
00087
00088 cookie_expires: 6*30,
00089 cookie_name: 'openid_provider',
00090 cookie_path: '/',
00091
00092 img_path: '$_GET[imgpath]',
00093
00094 input_id: null,
00095 provider_url: null,
00096
00097 init: function(input_id) {
00098
00099 var openid_btns = $('#openid_btns');
00100
00101 this.input_id = input_id;
00102 if(!$('#openid_choice').is(':visible'))
00103 $('#openid_choice').show();
00104 else
00105 return '';
00106 $('#openid_input_area').empty();
00107
00108
00109 for (id in providers_large) {
00110
00111 openid_btns.append(this.getBoxHTML(providers_large[id], 'large', '.gif'));
00112 }
00113 if (providers_small) {
00114 openid_btns.append('<br/>');
00115
00116 for (id in providers_small) {
00117
00118 openid_btns.append(this.getBoxHTML(providers_small[id], 'small', '.ico'));
00119 }
00120 }
00121
00122 $('#openid_form').submit(this.submit);
00123
00124 var box_id = this.readCookie();
00125 if (box_id) {
00126 this.signin(box_id, true);
00127 }
00128 },
00129 getBoxHTML: function(provider, box_size, image_ext) {
00130
00131 var box_id = provider["name"].toLowerCase();
00132 return '<a title="'+provider["name"]+'" href="javascript: openid.signin(\''+ box_id +'\');"' +
00133 ' style="background: #FFF url(' + this.img_path + box_id + image_ext+') no-repeat center center" ' +
00134 'class="' + box_id + ' openid_' + box_size + '_btn"></a>';
00135
00136 },
00137 /* Provider image click */
00138 signin: function(box_id, onload) {
00139
00140 var provider = providers[box_id];
00141 if (! provider) {
00142 return;
00143 }
00144
00145 this.highlight(box_id);
00146 this.setCookie(box_id);
00147
00148 // prompt user for input?
00149 if (provider['label']) {
00150
00151 this.useInputBox(provider);
00152 this.provider_url = provider['url'];
00153
00154 } else {
00155
00156 this.setOpenIdUrl(provider['url']);
00157 if (! onload) {
00158 $('#openid_form').submit();
00159 }
00160 }
00161 },
00162 /* Sign-in button click */
00163 submit: function() {
00164
00165 var url = openid.provider_url;
00166 if (url) {
00167 url = url.replace('{username}', $('#openid_username').val());
00168 openid.setOpenIdUrl(url);
00169 }
00170 return true;
00171 },
00172 setOpenIdUrl: function (url) {
00173
00174 var hidden = $('#'+this.input_id);
00175 if (hidden.length > 0) {
00176 hidden.value = url;
00177 } else {
00178 $('#openid_form').append('<input type="hidden" id="' + this.input_id + '" name="' + this.input_id + '" value="'+url+'"/>');
00179 }
00180 },
00181 highlight: function (box_id) {
00182
00183 // remove previous highlight.
00184 var highlight = $('#openid_highlight');
00185 if (highlight) {
00186 highlight.replaceWith($('#openid_highlight a')[0]);
00187 }
00188 // add new highlight.
00189 $('.'+box_id).wrap('<div id="openid_highlight"></div>');
00190 },
00191 setCookie: function (value) {
00192
00193 var date = new Date();
00194 date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000));
00195 var expires = "; expires="+date.toGMTString();
00196
00197 document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path;
00198 },
00199 readCookie: function () {
00200 var nameEQ = this.cookie_name + "=";
00201 var ca = document.cookie.split(';');
00202 for(var i=0;i < ca.length;i++) {
00203 var c = ca[i];
00204 while (c.charAt(0)==' ') c = c.substring(1,c.length);
00205 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
00206 }
00207 return null;
00208 },
00209 useInputBox: function (provider) {
00210
00211 var input_area = $('#openid_input_area');
00212
00213 var html = '';
00214 var id = 'openid_username';
00215 var value = '';
00216 var label = provider['label'];
00217 var style = '';
00218
00219 if (label) {
00220 html = '<p>' + label + '</p>';
00221 }
00222 if (provider['name'] == 'OpenID') {
00223 id = this.input_id;
00224 value = 'http://';
00225 style = 'background:#FFF url('+this.img_path+'openid-inputicon.gif) no-repeat scroll 0 50%; padding-left:18px;';
00226 }
00227 html += '<input id="'+id+'" type="text" style="'+style+'" name="'+id+'" value="'+value+'" />' +
00228 '<input id="openid_submit" type="submit" value="Sign-In"/>';
00229
00230 input_area.empty();
00231 input_area.append(html);
00232
00233 $('#'+id).focus();
00234 }
00235 };
00236 OPENID;
00237 echo $str;
00238
00239 ?>