gnu-social/js/userdesign.go.js
Sarven Capadisli 77c5f9481c Removed default values from <input>s. JavaScript will now get the
colours from the theme. This approach removes data that was
previously available in HTML. It was only necessary if the user wanted
to know the site's default values.
2009-07-30 17:06:17 -04:00

129 lines
4.2 KiB
JavaScript

/** Init for Farbtastic library and page setup
*
* @package Laconica
* @author Sarven Capadisli <csarven@controlyourself.ca>
* @copyright 2009 Control Yourself, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://laconi.ca/
*/
$(document).ready(function() {
function InitColors(i, E) {
switch (parseInt(E.id.slice(-1))) {
case 1: default:
$(E).val(rgb2hex($('body').css('background-color')));
break;
case 2:
$(E).val(rgb2hex($('#content').css('background-color')));
break;
case 3:
$(E).val(rgb2hex($('#aside_primary').css('background-color')));
break;
case 4:
$(E).val(rgb2hex($('html body').css('color')));
break;
case 5:
$(E).val(rgb2hex($('a').css('color')));
break;
}
}
function rgb2hex(rgb) {
rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
function hex(x) {
hexDigits = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
}
return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}
function UpdateColors(S) {
C = $(S).val();
switch (parseInt(S.id.slice(-1))) {
case 1: default:
$('body').css({'background-color':C});
break;
case 2:
$('#content, #site_nav_local_views .current a').css({'background-color':C});
break;
case 3:
$('#aside_primary').css({'background-color':C});
break;
case 4:
$('html body').css({'color':C});
break;
case 5:
$('a').css({'color':C});
break;
}
}
function UpdateFarbtastic(e) {
f.linked = e;
f.setColor(e.value);
}
function UpdateSwatch(e) {
$(e).css({"background-color": e.value,
"color": f.hsl[2] > 0.5 ? "#000": "#fff"});
}
function SynchColors(e) {
var S = f.linked;
var C = f.color;
if (S && S.value && S.value != C) {
S.value = C;
UpdateSwatch(S);
UpdateColors(S);
}
}
function InitFarbtastic() {
$('#settings_design_color').append('<div id="color-picker"></div>');
$('#color-picker').hide();
f = $.farbtastic('#color-picker', SynchColors);
swatches = $('#settings_design_color .swatch');
swatches.each(InitColors);
swatches
.each(SynchColors)
.blur(function() {
tv = $(this).val();
$(this).val(tv.toUpperCase());
(tv.length == 4) ? ((tv[0] == '#') ? $(this).val('#'+tv[1]+tv[1]+tv[2]+tv[2]+tv[3]+tv[3]) : '') : '';
})
.focus(function() {
$('#color-picker').show();
UpdateFarbtastic(this);
})
.change(function() {
UpdateFarbtastic(this);
UpdateSwatch(this);
UpdateColors(this);
}).change();
}
var f, swatches;
InitFarbtastic();
$('#form_settings_design').bind('reset', function(){
setTimeout(function(){
swatches.each(function(){UpdateColors(this);});
$('#color-picker').remove();
swatches.unbind();
InitFarbtastic();
},10);
});
$('#design_background-image_off').focus(function() {
$('body').css({'background-image':'none'});
});
$('#design_background-image_on').focus(function() {
$('body').css({'background-image':'url('+$('#design_background-image_onoff img')[0].src+')'});
$('body').css({'background-attachment': 'fixed'});
});
$('#design_background-image_repeat').click(function() {
($(this)[0].checked) ? $('body').css({'background-repeat':'repeat'}) : $('body').css({'background-repeat':'no-repeat'});
});
});