1st commit
This commit is contained in:
203
admin/js/jquery.admin.js
Normal file
203
admin/js/jquery.admin.js
Normal file
@@ -0,0 +1,203 @@
|
||||
jQuery(document).ready(function ($) {
|
||||
String.prototype.bool = function () {
|
||||
return (/^true$/i).test(this);
|
||||
};
|
||||
|
||||
// Message popups
|
||||
$.fn.center = function () {
|
||||
this.css({
|
||||
"position" : "fixed",
|
||||
"left" : $("#wpbody").css('margin-left'),
|
||||
"top" : $(window).height() / 2 - this.height() + "px"
|
||||
});
|
||||
return this;
|
||||
}
|
||||
$(window).scroll(function () {
|
||||
$('#of-popup-save').center();
|
||||
$('#of-popup-reset').center();
|
||||
});
|
||||
$(window).scroll();
|
||||
|
||||
// Tabs fading
|
||||
$('.group').hide();
|
||||
$('.group:first').fadeIn();
|
||||
$('.group .collapsed').each(function () {
|
||||
$(this).find('input:checked').parent().parent().parent().nextAll().each(function () {
|
||||
if ($(this).hasClass('last')) {
|
||||
$(this).removeClass('hidden');
|
||||
return false;
|
||||
}
|
||||
$(this).filter('.hidden').removeClass('hidden');
|
||||
});
|
||||
});
|
||||
|
||||
// Tabs navigation fading
|
||||
$('#of-nav li:first').addClass('current');
|
||||
$('#of-nav li a').click(function (e) {
|
||||
var clicked_group = $(this).attr('href');
|
||||
$('#of-nav li').removeClass('current');
|
||||
$(this).parent().addClass('current');
|
||||
$('.group').hide();
|
||||
$(clicked_group).fadeIn(100);
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
// Colorpicker
|
||||
$('.color_picker .preview').each(function () {
|
||||
var elem = $(this);
|
||||
var color = elem.parent().find('input').val();
|
||||
elem.css('backgroundColor', color).ColorPicker({
|
||||
color : color,
|
||||
onShow : function (cp) {
|
||||
$(cp).fadeIn(100);
|
||||
return false;
|
||||
},
|
||||
onHide : function (cp) {
|
||||
$(cp).fadeOut(100);
|
||||
return false;
|
||||
},
|
||||
onChange : function (hsb, hex, rgb) {
|
||||
elem.css('backgroundColor', '#' + hex).parent().find('input').attr('value', '#' + hex);
|
||||
}
|
||||
});
|
||||
});
|
||||
$('.color_picker :input').blur(function () {
|
||||
$(this).parent().find(".preview").css('backgroundColor', $(this).val());
|
||||
});
|
||||
|
||||
// Range slider
|
||||
$(window).load(function () {
|
||||
$('.kk_range_slider').each(function () {
|
||||
var elem = $(this);
|
||||
|
||||
elem.bind("slider:changed", function (event, data) {
|
||||
// The currently selected value of the slider
|
||||
elem.parent().find('.regular-text').attr('value', data.value);
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// AJAX Upload
|
||||
$('.image_upload_button').each(function () {
|
||||
var clickedObject = $(this);
|
||||
var clickedID = $(this).attr('id');
|
||||
new AjaxUpload(clickedID, {
|
||||
action : kk_ajax_data.ajaxurl,
|
||||
name : clickedID,
|
||||
data : {
|
||||
action : 'of_ajax_post_action',
|
||||
type : 'upload',
|
||||
data : clickedID
|
||||
},
|
||||
autoSubmit : true,
|
||||
responseType : false,
|
||||
onChange : function (file, extension) {},
|
||||
onSubmit : function (file, extension) {
|
||||
clickedObject.text('Uploading');
|
||||
this.disable();
|
||||
interval = window.setInterval(function () {
|
||||
var text = clickedObject.text();
|
||||
if (text.length < 13) {
|
||||
clickedObject.text(text + '.');
|
||||
} else {
|
||||
clickedObject.text('Uploading');
|
||||
}
|
||||
}, 200);
|
||||
},
|
||||
|
||||
onComplete : function (file, response) {
|
||||
window.clearInterval(interval);
|
||||
clickedObject.text('Upload Image');
|
||||
this.enable();
|
||||
if (response.search('Upload Error') > -1) {
|
||||
var buildReturn = '<span class="upload-error">' + response + '</span>';
|
||||
$(".upload-error").remove();
|
||||
clickedObject.parent().after(buildReturn);
|
||||
} else {
|
||||
var buildReturn = '<img class="hide of-option-image" id="image_' + clickedID + '" src="' + response + '" alt="" />';
|
||||
$(".upload-error").remove();
|
||||
$("#image_" + clickedID).remove();
|
||||
clickedObject.parent().after(buildReturn);
|
||||
$('img#image_' + clickedID).fadeIn();
|
||||
clickedObject.next('span').fadeIn();
|
||||
clickedObject.parent().prev('input').val(response);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// AJAX Remove (clear option value)
|
||||
$('.image_reset_button').click(function () {
|
||||
var clickedObject = $(this);
|
||||
var clickedID = $(this).attr('id');
|
||||
var theID = $(this).attr('title');
|
||||
|
||||
var ajax_url = kk_ajax_data.ajaxurl;
|
||||
var data = {
|
||||
type : 'image_reset',
|
||||
action : 'of_ajax_post_action',
|
||||
data : theID
|
||||
};
|
||||
$.post(ajax_url, data, function (response) {
|
||||
var image_to_remove = $('#image_' + theID);
|
||||
var button_to_hide = $('#reset_' + theID);
|
||||
image_to_remove.fadeOut(500, function () {
|
||||
$(this).remove();
|
||||
});
|
||||
button_to_hide.fadeOut();
|
||||
clickedObject.parent().prev('input').val('');
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// Save everything else
|
||||
$('#ofform').submit(function () {
|
||||
$(":checkbox").each(function () {
|
||||
this.value = this.checked;
|
||||
this.checked = true
|
||||
});
|
||||
var serializedReturn = $("#ofform").serialize();
|
||||
$(":checkbox").each(function () {
|
||||
this.checked = this.value.bool()
|
||||
});
|
||||
|
||||
$('.ajax-loading-img').fadeIn();
|
||||
var ajax_url = kk_ajax_data.ajaxurl;
|
||||
var data = {
|
||||
type : 'save',
|
||||
action : 'of_ajax_post_action',
|
||||
data : serializedReturn
|
||||
};
|
||||
$.post(ajax_url, data, function (response) {
|
||||
$('.ajax-loading-img').fadeOut();
|
||||
var success = $('#of-popup-save');
|
||||
success.fadeIn();
|
||||
window.setTimeout(function () {
|
||||
success.fadeOut();
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// Reset all options
|
||||
$('#ofform-reset').submit(function () {
|
||||
var ajax_url = kk_ajax_data.ajaxurl;
|
||||
var data = {
|
||||
type : 'reset',
|
||||
action : 'of_ajax_post_action',
|
||||
};
|
||||
$.post(ajax_url, data, function (response) {
|
||||
var reset = $('#of-popup-reset');
|
||||
reset.fadeIn();
|
||||
window.setTimeout(function () {
|
||||
location.reload()
|
||||
}, 250);
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
606
admin/js/jquery.ajaxupload.js
Normal file
606
admin/js/jquery.ajaxupload.js
Normal file
@@ -0,0 +1,606 @@
|
||||
/**
|
||||
* AJAX Upload
|
||||
* Project page - http://valums.com/ajax-upload/
|
||||
* Copyright (c) 2008 Andris Valums, http://valums.com
|
||||
* Licensed under the MIT license (http://valums.com/mit-license/)
|
||||
*/
|
||||
(function(){
|
||||
|
||||
var d = document, w = window;
|
||||
|
||||
/**
|
||||
* Get element by id
|
||||
*/
|
||||
function get(element){
|
||||
if (typeof element == "string")
|
||||
element = d.getElementById(element);
|
||||
return element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Attaches event to a dom element
|
||||
*/
|
||||
function addEvent(el, type, fn){
|
||||
if (w.addEventListener){
|
||||
el.addEventListener(type, fn, false);
|
||||
} else if (w.attachEvent){
|
||||
var f = function(){
|
||||
fn.call(el, w.event);
|
||||
};
|
||||
el.attachEvent('on' + type, f)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates and returns element from html chunk
|
||||
*/
|
||||
var toElement = function(){
|
||||
var div = d.createElement('div');
|
||||
return function(html){
|
||||
div.innerHTML = html;
|
||||
var el = div.childNodes[0];
|
||||
div.removeChild(el);
|
||||
return el;
|
||||
}
|
||||
}();
|
||||
|
||||
function hasClass(ele,cls){
|
||||
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
|
||||
}
|
||||
function addClass(ele,cls) {
|
||||
if (!hasClass(ele,cls)) ele.className += " "+cls;
|
||||
}
|
||||
function removeClass(ele,cls) {
|
||||
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
|
||||
ele.className=ele.className.replace(reg,' ');
|
||||
}
|
||||
|
||||
// getOffset function copied from jQuery lib (http://jquery.com/)
|
||||
if (document.documentElement["getBoundingClientRect"]){
|
||||
// Get Offset using getBoundingClientRect
|
||||
// http://ejohn.org/blog/getboundingclientrect-is-awesome/
|
||||
var getOffset = function(el){
|
||||
var box = el.getBoundingClientRect(),
|
||||
doc = el.ownerDocument,
|
||||
body = doc.body,
|
||||
docElem = doc.documentElement,
|
||||
|
||||
// for ie
|
||||
clientTop = docElem.clientTop || body.clientTop || 0,
|
||||
clientLeft = docElem.clientLeft || body.clientLeft || 0,
|
||||
|
||||
// In Internet Explorer 7 getBoundingClientRect property is treated as physical,
|
||||
// while others are logical. Make all logical, like in IE8.
|
||||
|
||||
zoom = 1;
|
||||
|
||||
if (body.getBoundingClientRect) {
|
||||
var bound = body.getBoundingClientRect();
|
||||
zoom = (bound.right - bound.left)/body.clientWidth;
|
||||
}
|
||||
|
||||
if (zoom > 1){
|
||||
clientTop = 0;
|
||||
clientLeft = 0;
|
||||
}
|
||||
|
||||
var top = box.top/zoom + (window.pageYOffset || docElem && docElem.scrollTop/zoom || body.scrollTop/zoom) - clientTop,
|
||||
left = box.left/zoom + (window.pageXOffset|| docElem && docElem.scrollLeft/zoom || body.scrollLeft/zoom) - clientLeft;
|
||||
|
||||
return {
|
||||
top: top,
|
||||
left: left
|
||||
};
|
||||
}
|
||||
|
||||
} else {
|
||||
// Get offset adding all offsets
|
||||
var getOffset = function(el){
|
||||
if (w.jQuery){
|
||||
return jQuery(el).offset();
|
||||
}
|
||||
|
||||
var top = 0, left = 0;
|
||||
do {
|
||||
top += el.offsetTop || 0;
|
||||
left += el.offsetLeft || 0;
|
||||
}
|
||||
while (el = el.offsetParent);
|
||||
|
||||
return {
|
||||
left: left,
|
||||
top: top
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function getBox(el){
|
||||
var left, right, top, bottom;
|
||||
var offset = getOffset(el);
|
||||
left = offset.left;
|
||||
top = offset.top;
|
||||
|
||||
right = left + el.offsetWidth;
|
||||
bottom = top + el.offsetHeight;
|
||||
|
||||
return {
|
||||
left: left,
|
||||
right: right,
|
||||
top: top,
|
||||
bottom: bottom
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Crossbrowser mouse coordinates
|
||||
*/
|
||||
function getMouseCoords(e){
|
||||
// pageX/Y is not supported in IE
|
||||
// http://www.quirksmode.org/dom/w3c_cssom.html
|
||||
if (!e.pageX && e.clientX){
|
||||
// In Internet Explorer 7 some properties (mouse coordinates) are treated as physical,
|
||||
// while others are logical (offset).
|
||||
var zoom = 1;
|
||||
var body = document.body;
|
||||
|
||||
if (body.getBoundingClientRect) {
|
||||
var bound = body.getBoundingClientRect();
|
||||
zoom = (bound.right - bound.left)/body.clientWidth;
|
||||
}
|
||||
|
||||
return {
|
||||
x: e.clientX / zoom + d.body.scrollLeft + d.documentElement.scrollLeft,
|
||||
y: e.clientY / zoom + d.body.scrollTop + d.documentElement.scrollTop
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
x: e.pageX,
|
||||
y: e.pageY
|
||||
};
|
||||
|
||||
}
|
||||
/**
|
||||
* Function generates unique id
|
||||
*/
|
||||
var getUID = function(){
|
||||
var id = 0;
|
||||
return function(){
|
||||
return 'ValumsAjaxUpload' + id++;
|
||||
}
|
||||
}();
|
||||
|
||||
function fileFromPath(file){
|
||||
return file.replace(/.*(\/|\\)/, "");
|
||||
}
|
||||
|
||||
function getExt(file){
|
||||
return (/[.]/.exec(file)) ? /[^.]+$/.exec(file.toLowerCase()) : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Cross-browser way to get xhr object
|
||||
*/
|
||||
var getXhr = function(){
|
||||
var xhr;
|
||||
|
||||
return function(){
|
||||
if (xhr) return xhr;
|
||||
|
||||
if (typeof XMLHttpRequest !== 'undefined') {
|
||||
xhr = new XMLHttpRequest();
|
||||
} else {
|
||||
var v = [
|
||||
"Microsoft.XmlHttp",
|
||||
"MSXML2.XmlHttp.5.0",
|
||||
"MSXML2.XmlHttp.4.0",
|
||||
"MSXML2.XmlHttp.3.0",
|
||||
"MSXML2.XmlHttp.2.0"
|
||||
];
|
||||
|
||||
for (var i=0; i < v.length; i++){
|
||||
try {
|
||||
xhr = new ActiveXObject(v[i]);
|
||||
break;
|
||||
} catch (e){}
|
||||
}
|
||||
}
|
||||
|
||||
return xhr;
|
||||
}
|
||||
}();
|
||||
|
||||
// Please use AjaxUpload , Ajax_upload will be removed in the next version
|
||||
Ajax_upload = AjaxUpload = function(button, options){
|
||||
if (button.jquery){
|
||||
// jquery object was passed
|
||||
button = button[0];
|
||||
} else if (typeof button == "string" && /^#.*/.test(button)){
|
||||
button = button.slice(1);
|
||||
}
|
||||
button = get(button);
|
||||
|
||||
this._input = null;
|
||||
this._button = button;
|
||||
this._disabled = false;
|
||||
this._submitting = false;
|
||||
// Variable changes to true if the button was clicked
|
||||
// 3 seconds ago (requred to fix Safari on Mac error)
|
||||
this._justClicked = false;
|
||||
this._parentDialog = d.body;
|
||||
|
||||
if (window.jQuery && jQuery.ui && jQuery.ui.dialog){
|
||||
var parentDialog = jQuery(this._button).parents('.ui-dialog');
|
||||
if (parentDialog.length){
|
||||
this._parentDialog = parentDialog[0];
|
||||
}
|
||||
}
|
||||
|
||||
this._settings = {
|
||||
// Location of the server-side upload script
|
||||
action: 'upload.php',
|
||||
// File upload name
|
||||
name: 'userfile',
|
||||
// Additional data to send
|
||||
data: {},
|
||||
// Submit file as soon as it's selected
|
||||
autoSubmit: true,
|
||||
// The type of data that you're expecting back from the server.
|
||||
// Html and xml are detected automatically.
|
||||
// Only useful when you are using json data as a response.
|
||||
// Set to "json" in that case.
|
||||
responseType: false,
|
||||
// Location of the server-side script that fixes Safari
|
||||
// hanging problem returning "Connection: close" header
|
||||
closeConnection: '',
|
||||
// Class applied to button when mouse is hovered
|
||||
hoverClass: 'hover',
|
||||
// When user selects a file, useful with autoSubmit disabled
|
||||
onChange: function(file, extension){},
|
||||
// Callback to fire before file is uploaded
|
||||
// You can return false to cancel upload
|
||||
onSubmit: function(file, extension){},
|
||||
// Fired when file upload is completed
|
||||
// WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE!
|
||||
onComplete: function(file, response) {}
|
||||
};
|
||||
|
||||
// Merge the users options with our defaults
|
||||
for (var i in options) {
|
||||
this._settings[i] = options[i];
|
||||
}
|
||||
|
||||
this._createInput();
|
||||
this._rerouteClicks();
|
||||
}
|
||||
|
||||
// assigning methods to our class
|
||||
AjaxUpload.prototype = {
|
||||
setData : function(data){
|
||||
this._settings.data = data;
|
||||
},
|
||||
disable : function(){
|
||||
this._disabled = true;
|
||||
},
|
||||
enable : function(){
|
||||
this._disabled = false;
|
||||
},
|
||||
// removes instance
|
||||
destroy : function(){
|
||||
if(this._input){
|
||||
if(this._input.parentNode){
|
||||
this._input.parentNode.removeChild(this._input);
|
||||
}
|
||||
this._input = null;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Creates invisible file input above the button
|
||||
*/
|
||||
_createInput : function(){
|
||||
var self = this;
|
||||
var input = d.createElement("input");
|
||||
input.setAttribute('type', 'file');
|
||||
input.setAttribute('name', this._settings.name);
|
||||
var styles = {
|
||||
'position' : 'absolute'
|
||||
,'margin': '-5px 0 0 -175px'
|
||||
,'padding': 0
|
||||
,'width': '220px'
|
||||
,'height': '30px'
|
||||
,'fontSize': '14px'
|
||||
,'opacity': 0
|
||||
,'cursor': 'pointer'
|
||||
,'display' : 'none'
|
||||
,'zIndex' : 2147483583 //Max zIndex supported by Opera 9.0-9.2x
|
||||
// Strange, I expected 2147483647
|
||||
// Doesn't work in IE :(
|
||||
//,'direction' : 'ltr'
|
||||
};
|
||||
for (var i in styles){
|
||||
input.style[i] = styles[i];
|
||||
}
|
||||
|
||||
// Make sure that element opacity exists
|
||||
// (IE uses filter instead)
|
||||
if ( ! (input.style.opacity === "0")){
|
||||
input.style.filter = "alpha(opacity=0)";
|
||||
}
|
||||
|
||||
this._parentDialog.appendChild(input);
|
||||
|
||||
addEvent(input, 'change', function(){
|
||||
// get filename from input
|
||||
var file = fileFromPath(this.value);
|
||||
if(self._settings.onChange.call(self, file, getExt(file)) == false ){
|
||||
return;
|
||||
}
|
||||
// Submit form when value is changed
|
||||
if (self._settings.autoSubmit){
|
||||
self.submit();
|
||||
}
|
||||
});
|
||||
|
||||
// Fixing problem with Safari
|
||||
// The problem is that if you leave input before the file select dialog opens
|
||||
// it does not upload the file.
|
||||
// As dialog opens slowly (it is a sheet dialog which takes some time to open)
|
||||
// there is some time while you can leave the button.
|
||||
// So we should not change display to none immediately
|
||||
addEvent(input, 'click', function(){
|
||||
self.justClicked = true;
|
||||
setTimeout(function(){
|
||||
// we will wait 3 seconds for dialog to open
|
||||
self.justClicked = false;
|
||||
}, 2500);
|
||||
});
|
||||
|
||||
this._input = input;
|
||||
},
|
||||
_rerouteClicks : function (){
|
||||
var self = this;
|
||||
|
||||
// IE displays 'access denied' error when using this method
|
||||
// other browsers just ignore click()
|
||||
// addEvent(this._button, 'click', function(e){
|
||||
// self._input.click();
|
||||
// });
|
||||
|
||||
var box, dialogOffset = {top:0, left:0}, over = false;
|
||||
|
||||
addEvent(self._button, 'mouseover', function(e){
|
||||
if (!self._input || over) return;
|
||||
|
||||
over = true;
|
||||
box = getBox(self._button);
|
||||
|
||||
if (self._parentDialog != d.body){
|
||||
dialogOffset = getOffset(self._parentDialog);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// We can't use mouseout on the button,
|
||||
// because invisible input is over it
|
||||
addEvent(document, 'mousemove', function(e){
|
||||
var input = self._input;
|
||||
if (!input || !over) return;
|
||||
|
||||
if (self._disabled){
|
||||
removeClass(self._button, self._settings.hoverClass);
|
||||
input.style.display = 'none';
|
||||
return;
|
||||
}
|
||||
|
||||
var c = getMouseCoords(e);
|
||||
|
||||
if ((c.x >= box.left) && (c.x <= box.right) &&
|
||||
(c.y >= box.top) && (c.y <= box.bottom)){
|
||||
|
||||
input.style.top = c.y - dialogOffset.top + 'px';
|
||||
input.style.left = c.x - dialogOffset.left + 'px';
|
||||
input.style.display = 'block';
|
||||
addClass(self._button, self._settings.hoverClass);
|
||||
|
||||
} else {
|
||||
// mouse left the button
|
||||
over = false;
|
||||
|
||||
var check = setInterval(function(){
|
||||
// if input was just clicked do not hide it
|
||||
// to prevent safari bug
|
||||
|
||||
if (self.justClicked){
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !over ){
|
||||
input.style.display = 'none';
|
||||
}
|
||||
|
||||
clearInterval(check);
|
||||
|
||||
}, 25);
|
||||
|
||||
|
||||
removeClass(self._button, self._settings.hoverClass);
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
/**
|
||||
* Creates iframe with unique name
|
||||
*/
|
||||
_createIframe : function(){
|
||||
// unique name
|
||||
// We cannot use getTime, because it somelustrel return
|
||||
// same value in safari :(
|
||||
var id = getUID();
|
||||
|
||||
// Remove ie6 "This page contains both secure and nonsecure items" prompt
|
||||
// http://tinyurl.com/77w9wh
|
||||
var iframe = toElement('<iframe src="javascript:false;" name="' + id + '" />');
|
||||
iframe.id = id;
|
||||
iframe.style.display = 'none';
|
||||
d.body.appendChild(iframe);
|
||||
return iframe;
|
||||
},
|
||||
/**
|
||||
* Upload file without refreshing the page
|
||||
*/
|
||||
submit : function(){
|
||||
var self = this, settings = this._settings;
|
||||
|
||||
if (this._input.value === ''){
|
||||
// there is no file
|
||||
return;
|
||||
}
|
||||
|
||||
// get filename from input
|
||||
var file = fileFromPath(this._input.value);
|
||||
|
||||
// execute user event
|
||||
if (! (settings.onSubmit.call(this, file, getExt(file)) == false)) {
|
||||
// Create new iframe for this submission
|
||||
var iframe = this._createIframe();
|
||||
|
||||
// Do not submit if user function returns false
|
||||
var form = this._createForm(iframe);
|
||||
form.appendChild(this._input);
|
||||
|
||||
// A pretty little hack to make uploads not hang in Safari. Just call this
|
||||
// immediately before the upload is submitted. This does an Ajax call to
|
||||
// the server, which returns an empty document with the "Connection: close"
|
||||
// header, telling Safari to close the active connection.
|
||||
// http://blog.airbladesoftware.com/2007/8/17/note-to-self-prevent-uploads-hanging-in-safari
|
||||
if (settings.closeConnection && /AppleWebKit|MSIE/.test(navigator.userAgent)){
|
||||
var xhr = getXhr();
|
||||
// Open synhronous connection
|
||||
xhr.open('GET', settings.closeConnection, false);
|
||||
xhr.send('');
|
||||
}
|
||||
|
||||
form.submit();
|
||||
|
||||
d.body.removeChild(form);
|
||||
form = null;
|
||||
this._input = null;
|
||||
|
||||
// create new input
|
||||
this._createInput();
|
||||
|
||||
var toDeleteFlag = false;
|
||||
|
||||
addEvent(iframe, 'load', function(e){
|
||||
|
||||
if (// For Safari
|
||||
iframe.src == "javascript:'%3Chtml%3E%3C/html%3E';" ||
|
||||
// For FF, IE
|
||||
iframe.src == "javascript:'<html></html>';"){
|
||||
|
||||
// First time around, do not delete.
|
||||
if( toDeleteFlag ){
|
||||
// Fix busy state in FF3
|
||||
setTimeout( function() {
|
||||
d.body.removeChild(iframe);
|
||||
}, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var doc = iframe.contentDocument ? iframe.contentDocument : frames[iframe.id].document;
|
||||
|
||||
// fixing Opera 9.26
|
||||
if (doc.readyState && doc.readyState != 'complete'){
|
||||
// Opera fires load event multiple lustrel
|
||||
// Even when the DOM is not ready yet
|
||||
// this fix should not affect other browsers
|
||||
return;
|
||||
}
|
||||
|
||||
// fixing Opera 9.64
|
||||
if (doc.body && doc.body.innerHTML == "false"){
|
||||
// In Opera 9.64 event was fired second time
|
||||
// when body.innerHTML changed from false
|
||||
// to server response approx. after 1 sec
|
||||
return;
|
||||
}
|
||||
|
||||
var response;
|
||||
|
||||
if (doc.XMLDocument){
|
||||
// response is a xml document IE property
|
||||
response = doc.XMLDocument;
|
||||
} else if (doc.body){
|
||||
// response is html document or plain text
|
||||
response = doc.body.innerHTML;
|
||||
if (settings.responseType && settings.responseType.toLowerCase() == 'json'){
|
||||
// If the document was sent as 'application/javascript' or
|
||||
// 'text/javascript', then the browser wraps the text in a <pre>
|
||||
// tag and performs html encoding on the contents. In this case,
|
||||
// we need to pull the original text content from the text node's
|
||||
// nodeValue property to retrieve the unmangled content.
|
||||
// Note that IE6 only understands text/html
|
||||
if (doc.body.firstChild && doc.body.firstChild.nodeName.toUpperCase() == 'PRE'){
|
||||
response = doc.body.firstChild.firstChild.nodeValue;
|
||||
}
|
||||
if (response) {
|
||||
response = window["eval"]("(" + response + ")");
|
||||
} else {
|
||||
response = {};
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// response is a xml document
|
||||
var response = doc;
|
||||
}
|
||||
|
||||
settings.onComplete.call(self, file, response);
|
||||
|
||||
// Reload blank page, so that reloading main page
|
||||
// does not re-submit the post. Also, remember to
|
||||
// delete the frame
|
||||
toDeleteFlag = true;
|
||||
|
||||
// Fix IE mixed content issue
|
||||
iframe.src = "javascript:'<html></html>';";
|
||||
});
|
||||
|
||||
} else {
|
||||
// clear input to allow user to select same file
|
||||
// Doesn't work in IE6
|
||||
// this._input.value = '';
|
||||
d.body.removeChild(this._input);
|
||||
this._input = null;
|
||||
|
||||
// create new input
|
||||
this._createInput();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Creates form, that will be submitted to iframe
|
||||
*/
|
||||
_createForm : function(iframe){
|
||||
var settings = this._settings;
|
||||
|
||||
// method, enctype must be specified here
|
||||
// because changing this attr on the fly is not allowed in IE 6/7
|
||||
var form = toElement('<form method="post" enctype="multipart/form-data"></form>');
|
||||
form.style.display = 'none';
|
||||
form.action = settings.action;
|
||||
form.target = iframe.name;
|
||||
d.body.appendChild(form);
|
||||
|
||||
// Create hidden input element for each data key
|
||||
for (var prop in settings.data){
|
||||
var el = d.createElement("input");
|
||||
el.type = 'hidden';
|
||||
el.name = prop;
|
||||
el.value = settings.data[prop];
|
||||
form.appendChild(el);
|
||||
}
|
||||
return form;
|
||||
}
|
||||
};
|
||||
})();
|
||||
455
admin/js/jquery.colorpicker.js
Normal file
455
admin/js/jquery.colorpicker.js
Normal file
@@ -0,0 +1,455 @@
|
||||
/**
|
||||
*
|
||||
* Color picker
|
||||
* Author: Stefan Petre www.eyecon.ro
|
||||
*
|
||||
* Dependencies: jQuery
|
||||
*
|
||||
*/
|
||||
(function ($) {
|
||||
var ColorPicker = function () {
|
||||
var
|
||||
ids = {},
|
||||
inAction,
|
||||
charMin = 65,
|
||||
visible,
|
||||
tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
|
||||
defaults = {
|
||||
eventName: 'click',
|
||||
onShow: function () {},
|
||||
onBeforeShow: function(){},
|
||||
onHide: function () {},
|
||||
onChange: function () {},
|
||||
onSubmit: function () {},
|
||||
color: 'ff0000',
|
||||
livePreview: true,
|
||||
flat: false
|
||||
},
|
||||
fillRGBFields = function (hsb, cal) {
|
||||
var rgb = HSBToRGB(hsb);
|
||||
$(cal).data('colorpicker').fields
|
||||
.eq(1).val(rgb.r).end()
|
||||
.eq(2).val(rgb.g).end()
|
||||
.eq(3).val(rgb.b).end();
|
||||
},
|
||||
fillHSBFields = function (hsb, cal) {
|
||||
$(cal).data('colorpicker').fields
|
||||
.eq(4).val(hsb.h).end()
|
||||
.eq(5).val(hsb.s).end()
|
||||
.eq(6).val(hsb.b).end();
|
||||
},
|
||||
fillHexFields = function (hsb, cal) {
|
||||
$(cal).data('colorpicker').fields
|
||||
.eq(0).val(HSBToHex(hsb)).end();
|
||||
},
|
||||
setSelector = function (hsb, cal) {
|
||||
$(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
|
||||
$(cal).data('colorpicker').selectorIndic.css({
|
||||
left: parseInt(150 * hsb.s/100, 10),
|
||||
top: parseInt(150 * (100-hsb.b)/100, 10)
|
||||
});
|
||||
},
|
||||
setHue = function (hsb, cal) {
|
||||
$(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
|
||||
},
|
||||
setCurrentColor = function (hsb, cal) {
|
||||
$(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
|
||||
},
|
||||
setNewColor = function (hsb, cal) {
|
||||
$(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
|
||||
},
|
||||
keyDown = function (ev) {
|
||||
var pressedKey = ev.charCode || ev.keyCode || -1;
|
||||
if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
|
||||
return false;
|
||||
}
|
||||
var cal = $(this).parent().parent();
|
||||
if (cal.data('colorpicker').livePreview === true) {
|
||||
change.apply(this);
|
||||
}
|
||||
},
|
||||
change = function (ev) {
|
||||
var cal = $(this).parent().parent(), col;
|
||||
if (this.parentNode.className.indexOf('_hex') > 0) {
|
||||
cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
|
||||
} else if (this.parentNode.className.indexOf('_hsb') > 0) {
|
||||
cal.data('colorpicker').color = col = fixHSB({
|
||||
h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
|
||||
s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
|
||||
b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
|
||||
});
|
||||
} else {
|
||||
cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
|
||||
r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
|
||||
g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
|
||||
b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
|
||||
}));
|
||||
}
|
||||
if (ev) {
|
||||
fillRGBFields(col, cal.get(0));
|
||||
fillHexFields(col, cal.get(0));
|
||||
fillHSBFields(col, cal.get(0));
|
||||
}
|
||||
setSelector(col, cal.get(0));
|
||||
setHue(col, cal.get(0));
|
||||
setNewColor(col, cal.get(0));
|
||||
cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
|
||||
},
|
||||
blur = function (ev) {
|
||||
var cal = $(this).parent().parent();
|
||||
cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus')
|
||||
},
|
||||
focus = function () {
|
||||
charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
|
||||
$(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
|
||||
$(this).parent().addClass('colorpicker_focus');
|
||||
},
|
||||
downIncrement = function (ev) {
|
||||
var field = $(this).parent().find('input').focus();
|
||||
var current = {
|
||||
el: $(this).parent().addClass('colorpicker_slider'),
|
||||
max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
|
||||
y: ev.pageY,
|
||||
field: field,
|
||||
val: parseInt(field.val(), 10),
|
||||
preview: $(this).parent().parent().data('colorpicker').livePreview
|
||||
};
|
||||
$(document).bind('mouseup', current, upIncrement);
|
||||
$(document).bind('mousemove', current, moveIncrement);
|
||||
},
|
||||
moveIncrement = function (ev) {
|
||||
ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10))));
|
||||
if (ev.data.preview) {
|
||||
change.apply(ev.data.field.get(0), [true]);
|
||||
}
|
||||
return false;
|
||||
},
|
||||
upIncrement = function (ev) {
|
||||
change.apply(ev.data.field.get(0), [true]);
|
||||
ev.data.el.removeClass('colorpicker_slider').find('input').focus();
|
||||
$(document).unbind('mouseup', upIncrement);
|
||||
$(document).unbind('mousemove', moveIncrement);
|
||||
return false;
|
||||
},
|
||||
downHue = function (ev) {
|
||||
var current = {
|
||||
cal: $(this).parent(),
|
||||
y: $(this).offset().top
|
||||
};
|
||||
current.preview = current.cal.data('colorpicker').livePreview;
|
||||
$(document).bind('mouseup', current, upHue);
|
||||
$(document).bind('mousemove', current, moveHue);
|
||||
},
|
||||
moveHue = function (ev) {
|
||||
change.apply(
|
||||
ev.data.cal.data('colorpicker')
|
||||
.fields
|
||||
.eq(4)
|
||||
.val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
|
||||
.get(0),
|
||||
[ev.data.preview]
|
||||
);
|
||||
return false;
|
||||
},
|
||||
upHue = function (ev) {
|
||||
fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
|
||||
fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
|
||||
$(document).unbind('mouseup', upHue);
|
||||
$(document).unbind('mousemove', moveHue);
|
||||
return false;
|
||||
},
|
||||
downSelector = function (ev) {
|
||||
var current = {
|
||||
cal: $(this).parent(),
|
||||
pos: $(this).offset()
|
||||
};
|
||||
current.preview = current.cal.data('colorpicker').livePreview;
|
||||
$(document).bind('mouseup', current, upSelector);
|
||||
$(document).bind('mousemove', current, moveSelector);
|
||||
},
|
||||
moveSelector = function (ev) {
|
||||
change.apply(
|
||||
ev.data.cal.data('colorpicker')
|
||||
.fields
|
||||
.eq(6)
|
||||
.val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
|
||||
.end()
|
||||
.eq(5)
|
||||
.val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
|
||||
.get(0),
|
||||
[ev.data.preview]
|
||||
);
|
||||
return false;
|
||||
},
|
||||
upSelector = function (ev) {
|
||||
fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
|
||||
fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
|
||||
$(document).unbind('mouseup', upSelector);
|
||||
$(document).unbind('mousemove', moveSelector);
|
||||
return false;
|
||||
},
|
||||
enterSubmit = function (ev) {
|
||||
$(this).addClass('colorpicker_focus');
|
||||
},
|
||||
leaveSubmit = function (ev) {
|
||||
$(this).removeClass('colorpicker_focus');
|
||||
},
|
||||
clickSubmit = function (ev) {
|
||||
var cal = $(this).parent();
|
||||
var col = cal.data('colorpicker').color;
|
||||
cal.data('colorpicker').origColor = col;
|
||||
setCurrentColor(col, cal.get(0));
|
||||
cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col));
|
||||
cal.hide();
|
||||
},
|
||||
show = function (ev) {
|
||||
var cal = $('#' + $(this).data('colorpickerId'));
|
||||
cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
|
||||
var pos = $(this).offset();
|
||||
var viewPort = getViewport();
|
||||
var top = pos.top + this.offsetHeight;
|
||||
var left = pos.left;
|
||||
if (top + 176 > viewPort.t + viewPort.h) {
|
||||
top -= this.offsetHeight + 176;
|
||||
} else {
|
||||
top += 5;
|
||||
}
|
||||
if (left + 356 > viewPort.l + viewPort.w) {
|
||||
left -= 356;
|
||||
}
|
||||
cal.css({left: left + 'px', top: top + 'px'});
|
||||
if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
|
||||
cal.show();
|
||||
}
|
||||
$(document).bind('mousedown', {cal: cal}, hide);
|
||||
return false;
|
||||
},
|
||||
hide = function (ev) {
|
||||
if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
|
||||
if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
|
||||
ev.data.cal.hide();
|
||||
}
|
||||
$(document).unbind('mousedown', hide);
|
||||
}
|
||||
},
|
||||
isChildOf = function(parentEl, el, container) {
|
||||
if (parentEl == el) {
|
||||
return true;
|
||||
}
|
||||
if (parentEl.contains) {
|
||||
return parentEl.contains(el);
|
||||
}
|
||||
if ( parentEl.compareDocumentPosition ) {
|
||||
return !!(parentEl.compareDocumentPosition(el) & 16);
|
||||
}
|
||||
var prEl = el.parentNode;
|
||||
while(prEl && prEl != container) {
|
||||
if (prEl == parentEl)
|
||||
return true;
|
||||
prEl = prEl.parentNode;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
getViewport = function () {
|
||||
var m = document.compatMode == 'CSS1Compat';
|
||||
return {
|
||||
l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
|
||||
t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
|
||||
w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
|
||||
h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
|
||||
};
|
||||
},
|
||||
fixHSB = function (hsb) {
|
||||
return {
|
||||
h: Math.min(360, Math.max(0, hsb.h)),
|
||||
s: Math.min(100, Math.max(0, hsb.s)),
|
||||
b: Math.min(100, Math.max(0, hsb.b))
|
||||
};
|
||||
},
|
||||
fixRGB = function (rgb) {
|
||||
return {
|
||||
r: Math.min(255, Math.max(0, rgb.r)),
|
||||
g: Math.min(255, Math.max(0, rgb.g)),
|
||||
b: Math.min(255, Math.max(0, rgb.b))
|
||||
};
|
||||
},
|
||||
fixHex = function (hex) {
|
||||
var len = 6 - hex.length;
|
||||
if (len > 0) {
|
||||
var o = [];
|
||||
for (var i=0; i<len; i++) {
|
||||
o.push('0');
|
||||
}
|
||||
o.push(hex);
|
||||
hex = o.join('');
|
||||
}
|
||||
return hex;
|
||||
},
|
||||
HexToRGB = function (hex) {
|
||||
var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
|
||||
return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
|
||||
},
|
||||
HexToHSB = function (hex) {
|
||||
return RGBToHSB(HexToRGB(hex));
|
||||
},
|
||||
RGBToHSB = function (rgb) {
|
||||
var hsb = {};
|
||||
hsb.b = Math.max(Math.max(rgb.r,rgb.g),rgb.b);
|
||||
hsb.s = (hsb.b <= 0) ? 0 : Math.round(100*(hsb.b - Math.min(Math.min(rgb.r,rgb.g),rgb.b))/hsb.b);
|
||||
hsb.b = Math.round((hsb.b /255)*100);
|
||||
if((rgb.r==rgb.g) && (rgb.g==rgb.b)) hsb.h = 0;
|
||||
else if(rgb.r>=rgb.g && rgb.g>=rgb.b) hsb.h = 60*(rgb.g-rgb.b)/(rgb.r-rgb.b);
|
||||
else if(rgb.g>=rgb.r && rgb.r>=rgb.b) hsb.h = 60 + 60*(rgb.g-rgb.r)/(rgb.g-rgb.b);
|
||||
else if(rgb.g>=rgb.b && rgb.b>=rgb.r) hsb.h = 120 + 60*(rgb.b-rgb.r)/(rgb.g-rgb.r);
|
||||
else if(rgb.b>=rgb.g && rgb.g>=rgb.r) hsb.h = 180 + 60*(rgb.b-rgb.g)/(rgb.b-rgb.r);
|
||||
else if(rgb.b>=rgb.r && rgb.r>=rgb.g) hsb.h = 240 + 60*(rgb.r-rgb.g)/(rgb.b-rgb.g);
|
||||
else if(rgb.r>=rgb.b && rgb.b>=rgb.g) hsb.h = 300 + 60*(rgb.r-rgb.b)/(rgb.r-rgb.g);
|
||||
else hsb.h = 0;
|
||||
hsb.h = Math.round(hsb.h);
|
||||
return hsb;
|
||||
},
|
||||
HSBToRGB = function (hsb) {
|
||||
var rgb = {};
|
||||
var h = Math.round(hsb.h);
|
||||
var s = Math.round(hsb.s*255/100);
|
||||
var v = Math.round(hsb.b*255/100);
|
||||
if(s == 0) {
|
||||
rgb.r = rgb.g = rgb.b = v;
|
||||
} else {
|
||||
var t1 = v;
|
||||
var t2 = (255-s)*v/255;
|
||||
var t3 = (t1-t2)*(h%60)/60;
|
||||
if(h==360) h = 0;
|
||||
if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
|
||||
else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
|
||||
else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
|
||||
else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
|
||||
else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
|
||||
else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
|
||||
else {rgb.r=0; rgb.g=0; rgb.b=0}
|
||||
}
|
||||
return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
|
||||
},
|
||||
RGBToHex = function (rgb) {
|
||||
var hex = [
|
||||
rgb.r.toString(16),
|
||||
rgb.g.toString(16),
|
||||
rgb.b.toString(16)
|
||||
];
|
||||
$.each(hex, function (nr, val) {
|
||||
if (val.length == 1) {
|
||||
hex[nr] = '0' + val;
|
||||
}
|
||||
});
|
||||
return hex.join('');
|
||||
},
|
||||
HSBToHex = function (hsb) {
|
||||
return RGBToHex(HSBToRGB(hsb));
|
||||
};
|
||||
return {
|
||||
init: function (options) {
|
||||
options = $.extend({}, defaults, options||{});
|
||||
if (typeof options.color == 'string') {
|
||||
options.color = HexToHSB(options.color);
|
||||
} else if (options.color.r != undefined && options.color.g != undefined && options.color.b != undefined) {
|
||||
options.color = RGBToHSB(options.color);
|
||||
} else if (options.color.h != undefined && options.color.s != undefined && options.color.b != undefined) {
|
||||
options.color = fixHSB(options.color);
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
options.origColor = options.color;
|
||||
return this.each(function () {
|
||||
if (!$(this).data('colorpickerId')) {
|
||||
var id = 'collorpicker_' + parseInt(Math.random() * 1000);
|
||||
$(this).data('colorpickerId', id);
|
||||
var cal = $(tpl).attr('id', id);
|
||||
if (options.flat) {
|
||||
cal.appendTo(this).show();
|
||||
} else {
|
||||
cal.appendTo(document.body);
|
||||
}
|
||||
options.fields = cal
|
||||
.find('input')
|
||||
.bind('keydown', keyDown)
|
||||
.bind('change', change)
|
||||
.bind('blur', blur)
|
||||
.bind('focus', focus);
|
||||
cal.find('span').bind('mousedown', downIncrement);
|
||||
options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
|
||||
options.selectorIndic = options.selector.find('div div');
|
||||
options.hue = cal.find('div.colorpicker_hue div');
|
||||
cal.find('div.colorpicker_hue').bind('mousedown', downHue);
|
||||
options.newColor = cal.find('div.colorpicker_new_color');
|
||||
options.currentColor = cal.find('div.colorpicker_current_color');
|
||||
cal.data('colorpicker', options);
|
||||
cal.find('div.colorpicker_submit')
|
||||
.bind('mouseenter', enterSubmit)
|
||||
.bind('mouseleave', leaveSubmit)
|
||||
.bind('click', clickSubmit);
|
||||
fillRGBFields(options.color, cal.get(0));
|
||||
fillHSBFields(options.color, cal.get(0));
|
||||
fillHexFields(options.color, cal.get(0));
|
||||
setHue(options.color, cal.get(0));
|
||||
setSelector(options.color, cal.get(0));
|
||||
setCurrentColor(options.color, cal.get(0));
|
||||
setNewColor(options.color, cal.get(0));
|
||||
if (options.flat) {
|
||||
cal.css({
|
||||
position: 'relative',
|
||||
display: 'block'
|
||||
});
|
||||
} else {
|
||||
$(this).bind(options.eventName, show);
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
showPicker: function() {
|
||||
return this.each( function () {
|
||||
if ($(this).data('colorpickerId')) {
|
||||
show.apply(this);
|
||||
}
|
||||
});
|
||||
},
|
||||
hidePicker: function() {
|
||||
return this.each( function () {
|
||||
if ($(this).data('colorpickerId')) {
|
||||
$('#' + $(this).data('colorpickerId')).hide();
|
||||
}
|
||||
});
|
||||
},
|
||||
setColor: function(col) {
|
||||
if (typeof col == 'string') {
|
||||
col = HexToHSB(col);
|
||||
} else if (col.r != undefined && col.g != undefined && col.b != undefined) {
|
||||
col = RGBToHSB(col);
|
||||
} else if (col.h != undefined && col.s != undefined && col.b != undefined) {
|
||||
col = fixHSB(col);
|
||||
} else {
|
||||
return this;
|
||||
}
|
||||
return this.each(function(){
|
||||
if ($(this).data('colorpickerId')) {
|
||||
var cal = $('#' + $(this).data('colorpickerId'));
|
||||
cal.data('colorpicker').color = col;
|
||||
cal.data('colorpicker').origColor = col;
|
||||
fillRGBFields(col, cal.get(0));
|
||||
fillHSBFields(col, cal.get(0));
|
||||
fillHexFields(col, cal.get(0));
|
||||
setHue(col, cal.get(0));
|
||||
setSelector(col, cal.get(0));
|
||||
setCurrentColor(col, cal.get(0));
|
||||
setNewColor(col, cal.get(0));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}();
|
||||
$.fn.extend({
|
||||
ColorPicker: ColorPicker.init,
|
||||
ColorPickerHide: ColorPicker.hide,
|
||||
ColorPickerShow: ColorPicker.show,
|
||||
ColorPickerSetColor: ColorPicker.setColor
|
||||
});
|
||||
})(jQuery)
|
||||
252
admin/js/jquery.maskedinput-1.2.2.js
Normal file
252
admin/js/jquery.maskedinput-1.2.2.js
Normal file
@@ -0,0 +1,252 @@
|
||||
/// <reference path="../../../lib/jquery-1.2.6.js" />
|
||||
/*
|
||||
Masked Input plugin for jQuery
|
||||
Copyright (c) 2007-2009 Josh Bush (digitalbush.com)
|
||||
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
|
||||
Version: 1.2.2 (03/09/2009 22:39:06)
|
||||
*/
|
||||
(function($) {
|
||||
var pasteEventName = ($.browser.msie ? 'paste' : 'input') + ".mask";
|
||||
var iPhone = (window.orientation != undefined);
|
||||
|
||||
$.mask = {
|
||||
//Predefined character definitions
|
||||
definitions: {
|
||||
'9': "[0-9]",
|
||||
'a': "[A-Za-z]",
|
||||
'*': "[A-Za-z0-9]"
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.extend({
|
||||
//Helper Function for Caret positioning
|
||||
caret: function(begin, end) {
|
||||
if (this.length == 0) return;
|
||||
if (typeof begin == 'number') {
|
||||
end = (typeof end == 'number') ? end : begin;
|
||||
return this.each(function() {
|
||||
if (this.setSelectionRange) {
|
||||
this.focus();
|
||||
this.setSelectionRange(begin, end);
|
||||
} else if (this.createTextRange) {
|
||||
var range = this.createTextRange();
|
||||
range.collapse(true);
|
||||
range.moveEnd('character', end);
|
||||
range.moveStart('character', begin);
|
||||
range.select();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (this[0].setSelectionRange) {
|
||||
begin = this[0].selectionStart;
|
||||
end = this[0].selectionEnd;
|
||||
} else if (document.selection && document.selection.createRange) {
|
||||
var range = document.selection.createRange();
|
||||
begin = 0 - range.duplicate().moveStart('character', -100000);
|
||||
end = begin + range.text.length;
|
||||
}
|
||||
return { begin: begin, end: end };
|
||||
}
|
||||
},
|
||||
unmask: function() { return this.trigger("unmask"); },
|
||||
mask: function(mask, settings) {
|
||||
if (!mask && this.length > 0) {
|
||||
var input = $(this[0]);
|
||||
var tests = input.data("tests");
|
||||
return $.map(input.data("buffer"), function(c, i) {
|
||||
return tests[i] ? c : null;
|
||||
}).join('');
|
||||
}
|
||||
settings = $.extend({
|
||||
placeholder: "_",
|
||||
completed: null
|
||||
}, settings);
|
||||
|
||||
var defs = $.mask.definitions;
|
||||
var tests = [];
|
||||
var partialPosition = mask.length;
|
||||
var firstNonMaskPos = null;
|
||||
var len = mask.length;
|
||||
|
||||
$.each(mask.split(""), function(i, c) {
|
||||
if (c == '?') {
|
||||
len--;
|
||||
partialPosition = i;
|
||||
} else if (defs[c]) {
|
||||
tests.push(new RegExp(defs[c]));
|
||||
if(firstNonMaskPos==null)
|
||||
firstNonMaskPos = tests.length - 1;
|
||||
} else {
|
||||
tests.push(null);
|
||||
}
|
||||
});
|
||||
|
||||
return this.each(function() {
|
||||
var input = $(this);
|
||||
var buffer = $.map(mask.split(""), function(c, i) { if (c != '?') return defs[c] ? settings.placeholder : c });
|
||||
var ignore = false; //Variable for ignoring control keys
|
||||
var focusText = input.val();
|
||||
|
||||
input.data("buffer", buffer).data("tests", tests);
|
||||
|
||||
function seekNext(pos) {
|
||||
while (++pos <= len && !tests[pos]);
|
||||
return pos;
|
||||
};
|
||||
|
||||
function shiftL(pos) {
|
||||
while (!tests[pos] && --pos >= 0);
|
||||
for (var i = pos; i < len; i++) {
|
||||
if (tests[i]) {
|
||||
buffer[i] = settings.placeholder;
|
||||
var j = seekNext(i);
|
||||
if (j < len && tests[i].test(buffer[j])) {
|
||||
buffer[i] = buffer[j];
|
||||
} else
|
||||
break;
|
||||
}
|
||||
}
|
||||
writeBuffer();
|
||||
input.caret(Math.max(firstNonMaskPos, pos));
|
||||
};
|
||||
|
||||
function shiftR(pos) {
|
||||
for (var i = pos, c = settings.placeholder; i < len; i++) {
|
||||
if (tests[i]) {
|
||||
var j = seekNext(i);
|
||||
var t = buffer[i];
|
||||
buffer[i] = c;
|
||||
if (j < len && tests[j].test(t))
|
||||
c = t;
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function keydownEvent(e) {
|
||||
var pos = $(this).caret();
|
||||
var k = e.keyCode;
|
||||
ignore = (k < 16 || (k > 16 && k < 32) || (k > 32 && k < 41));
|
||||
|
||||
//delete selection before proceeding
|
||||
if ((pos.begin - pos.end) != 0 && (!ignore || k == 8 || k == 46))
|
||||
clearBuffer(pos.begin, pos.end);
|
||||
|
||||
//backspace, delete, and escape get special treatment
|
||||
if (k == 8 || k == 46 || (iPhone && k == 127)) {//backspace/delete
|
||||
shiftL(pos.begin + (k == 46 ? 0 : -1));
|
||||
return false;
|
||||
} else if (k == 27) {//escape
|
||||
input.val(focusText);
|
||||
input.caret(0, checkVal());
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function keypressEvent(e) {
|
||||
if (ignore) {
|
||||
ignore = false;
|
||||
//Fixes Mac FF bug on backspace
|
||||
return (e.keyCode == 8) ? false : null;
|
||||
}
|
||||
e = e || window.event;
|
||||
var k = e.charCode || e.keyCode || e.which;
|
||||
var pos = $(this).caret();
|
||||
|
||||
if (e.ctrlKey || e.altKey || e.metaKey) {//Ignore
|
||||
return true;
|
||||
} else if ((k >= 32 && k <= 125) || k > 186) {//typeable characters
|
||||
var p = seekNext(pos.begin - 1);
|
||||
if (p < len) {
|
||||
var c = String.fromCharCode(k);
|
||||
if (tests[p].test(c)) {
|
||||
shiftR(p);
|
||||
buffer[p] = c;
|
||||
writeBuffer();
|
||||
var next = seekNext(p);
|
||||
$(this).caret(next);
|
||||
if (settings.completed && next == len)
|
||||
settings.completed.call(input);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
function clearBuffer(start, end) {
|
||||
for (var i = start; i < end && i < len; i++) {
|
||||
if (tests[i])
|
||||
buffer[i] = settings.placeholder;
|
||||
}
|
||||
};
|
||||
|
||||
function writeBuffer() { return input.val(buffer.join('')).val(); };
|
||||
|
||||
function checkVal(allow) {
|
||||
//try to place characters where they belong
|
||||
var test = input.val();
|
||||
var lastMatch = -1;
|
||||
for (var i = 0, pos = 0; i < len; i++) {
|
||||
if (tests[i]) {
|
||||
buffer[i] = settings.placeholder;
|
||||
while (pos++ < test.length) {
|
||||
var c = test.charAt(pos - 1);
|
||||
if (tests[i].test(c)) {
|
||||
buffer[i] = c;
|
||||
lastMatch = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pos > test.length)
|
||||
break;
|
||||
} else if (buffer[i] == test[pos] && i!=partialPosition) {
|
||||
pos++;
|
||||
lastMatch = i;
|
||||
}
|
||||
}
|
||||
if (!allow && lastMatch + 1 < partialPosition) {
|
||||
input.val("");
|
||||
clearBuffer(0, len);
|
||||
} else if (allow || lastMatch + 1 >= partialPosition) {
|
||||
writeBuffer();
|
||||
if (!allow) input.val(input.val().substring(0, lastMatch + 1));
|
||||
}
|
||||
return (partialPosition ? i : firstNonMaskPos);
|
||||
};
|
||||
|
||||
if (!input.attr("readonly"))
|
||||
input
|
||||
.one("unmask", function() {
|
||||
input
|
||||
.unbind(".mask")
|
||||
.removeData("buffer")
|
||||
.removeData("tests");
|
||||
})
|
||||
.bind("focus.mask", function() {
|
||||
focusText = input.val();
|
||||
var pos = checkVal();
|
||||
writeBuffer();
|
||||
setTimeout(function() {
|
||||
if (pos == mask.length)
|
||||
input.caret(0, pos);
|
||||
else
|
||||
input.caret(pos);
|
||||
}, 0);
|
||||
})
|
||||
.bind("blur.mask", function() {
|
||||
checkVal();
|
||||
if (input.val() != focusText)
|
||||
input.change();
|
||||
})
|
||||
.bind("keydown.mask", keydownEvent)
|
||||
.bind("keypress.mask", keypressEvent)
|
||||
.bind(pasteEventName, function() {
|
||||
setTimeout(function() { input.caret(checkVal(true)); }, 0);
|
||||
});
|
||||
|
||||
checkVal(); //Perform initial check for existing values
|
||||
});
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
99
admin/js/jquery.settings.js
Normal file
99
admin/js/jquery.settings.js
Normal file
@@ -0,0 +1,99 @@
|
||||
jQuery(function ($) {
|
||||
|
||||
"use strict";
|
||||
|
||||
// Menu options
|
||||
|
||||
var menuTypeCss = $('.sflickr_userid, .sflickr_api, .sflickr_icount, .sflickr_isize'),
|
||||
menuTypeCss_2 = $('#BackgroundSlider .1, #BackgroundSlider .3, #BackgroundSlider .4'),
|
||||
menuTypeCss_3 = $('#BackgroundSlider .2'),
|
||||
menuType = $('#portfolio-type-Video'),
|
||||
selectors = $('#toppic_theme_fullscreen_stream'),
|
||||
selectors_menu = $('#toppic_theme_menu_style'),
|
||||
contentStyle = $('.content_style'),
|
||||
menuOpacity = $('.menu_opacity'),
|
||||
menuColor = $('.menu_color, .menu_links_color');
|
||||
|
||||
menuTypeCss.css('display', 'none');
|
||||
menuTypeCss_2.css('display', 'none');
|
||||
menuTypeCss_3.css('display', 'none');
|
||||
|
||||
selectors.change(function () {
|
||||
|
||||
if ($(this).val() == 'ken_b') {
|
||||
menuTypeCss_3.slideDown();
|
||||
menuTypeCss_2.slideUp();
|
||||
menuTypeCss.slideUp();
|
||||
} else {
|
||||
menuTypeCss_3.slideUp();
|
||||
menuTypeCss_2.slideDown();
|
||||
menuTypeCss.slideUp();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (selectors.val() == 'kk_royal') {
|
||||
menuTypeCss_2.css('display', 'block');
|
||||
menuTypeCss_3.css('display', 'none');
|
||||
}
|
||||
|
||||
if (selectors.val() == 'ken_b') {
|
||||
menuTypeCss.css('display', 'none');
|
||||
menuTypeCss_2.css('display', 'none');
|
||||
menuTypeCss_3.css('display', 'block');
|
||||
}
|
||||
|
||||
selectors_menu.change(function () {
|
||||
if ($(this).val() == 'kk-menu-left-boxed') {
|
||||
contentStyle.slideUp();
|
||||
menuColor.slideDown();
|
||||
menuOpacity.slideDown();
|
||||
$('.is_border').slideUp();
|
||||
//$('.is_border #toppic_theme_is_border').attr('checked', false);
|
||||
$(".content_style option[value='kk-boxed']").attr('selected', 'selected');
|
||||
} else if ($(this).val() == 'kk-menu-slide-right') {
|
||||
menuColor.slideDown();
|
||||
contentStyle.slideUp();
|
||||
menuOpacity.slideUp();
|
||||
$('.is_border').slideDown();
|
||||
$(".content_style option[value='kk-full']").attr('selected', 'selected');
|
||||
} else if ($(this).val() == 'kk-menu-fullscreen') {
|
||||
contentStyle.slideDown();
|
||||
menuOpacity.slideDown();
|
||||
$('.is_border').slideUp();
|
||||
menuColor.slideDown();
|
||||
} else if ($(this).val() == 'kk-menu-classic') {
|
||||
menuColor.slideUp();
|
||||
menuOpacity.slideUp();
|
||||
} else {
|
||||
contentStyle.slideDown();
|
||||
menuOpacity.slideUp();
|
||||
menuColor.slideDown();
|
||||
$('.is_border').slideUp();
|
||||
}
|
||||
});
|
||||
|
||||
if (selectors_menu.val() == 'kk-menu-slide-right') {
|
||||
contentStyle.css('display', 'none');
|
||||
menuOpacity.css('display', 'none');
|
||||
menuColor.css('display', 'block');
|
||||
$('.is_border').css('display', 'block');
|
||||
} else if (selectors_menu.val() == 'kk-menu-left-boxed') {
|
||||
contentStyle.css('display', 'none');
|
||||
menuColor.css('display', 'block');
|
||||
$('.is_border').css('display', 'none');
|
||||
} else if (selectors_menu.val() == 'kk-menu-classic') {
|
||||
menuColor.css('display', 'none');
|
||||
menuOpacity.css('display', 'none');
|
||||
} else if (selectors_menu.val() == 'kk-menu-fullscreen') {
|
||||
contentStyle.css('display', 'block');
|
||||
$('.is_border').css('display', 'none');
|
||||
menuColor.css('display', 'block');
|
||||
} else {
|
||||
contentStyle.css('display', 'block');
|
||||
menuOpacity.css('display', 'none');
|
||||
menuColor.css('display', 'block');
|
||||
$('.is_border').css('display', 'none');
|
||||
}
|
||||
|
||||
});
|
||||
11
admin/js/jquery.simpleslider.min.js
vendored
Normal file
11
admin/js/jquery.simpleslider.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user