GIF89a;
| Direktori : /home/serb/public_html/freichat/administrator/admin_files/theme_maker/ |
| Current File : /home/serb/public_html/freichat/administrator/admin_files/theme_maker/functions.js |
/*
* =================
* Rule of the thumb
* =================
*
*
* If any css property in the css object is an array
* then that property holds multiple values and hence should be looped
*
*
*
* for eg.
*
* CSS Object {
*
* #freichat:
* {
* //now here background is an array hence it contains multiple values
* background: Array : {
* -webkit-linear-gradient: ....
* linear-gradient: ....
* }
*
* //this is normal
* border: 1px solid
*
* .....
* .....
* }
*
* ....
* ....
* ....
* }
*
*
* =========
* PUNCHLINE
* =========
*
* Choose a name that describes WHAT the object does, instead of how it does it.
*
*
* ========
* LICENSE
* ========
*
* Codologic
*/
var FreiChat = {
anim_inprogress: false,
mesg: '',
anim_notify_progress: false,
notify_disappear_time: 5000,
allow_upload: false,
css_array: [],
disable_doc_click: false,
unsaved_changes: false,
action_style_rules: false,
state_class: [],
notification_closed: true,
mod_css_array: {}
};
//alert(freidefines.GEN.url);
freidefines.GEN.url = freidefines.GEN.url.replace("administrator/admin.php", "");
FreiChat.make_url = function(name) {
var url = freidefines.GEN.url;
var path = url + "client/themes/" + freidefines.GEN.curr_theme + "/" + name;
return path;
}
//-------------------------------------------------------------------------------------
FreiChat.check_indexes = function(pre, identity, tag_name) {
var t_index = '';
var index = '';
identity = pre + $.trim(identity);
if (identity != '') {
t_index = identity + " " + tag_name.toLowerCase();
if (typeof FreiChat.css_array[t_index] != "undefined") {
index = t_index;
} else {
if (typeof FreiChat.css_array[identity] != "undefined") {
index = identity;
}
}
}
return index;
}
//-------------------------------------------------------------------------------------
FreiChat.check_parents = function(el) {
var array = [];
var jq_el = $(el); //for cross-browser compatibility
var tag_name = jq_el.prop("tagName");
jq_el = jq_el.parent(); //start with its parent element
var cls, id;
var index = "";
do {
cls = jq_el.attr("class");
id = jq_el.attr("id");
//check for id and class with subs with class as first preference with subs
if (typeof cls != "undefined" && cls != "")
index = FreiChat.check_indexes(".", cls, tag_name);
if (index == "" && typeof id != "undefined" && id != "")
index = FreiChat.check_indexes("#", id, tag_name);
jq_el = jq_el.parent(); //loop through parent
if (index != "")
break;
} while (jq_el.attr("id") != "freichathtml" && jq_el.prop("tagName") != "BODY");
if (index != "") {
array = FreiChat.css_array[index];
FreiChat.selected_class = index;
}
return array;
};
//-------------------------------------------------------------------------------------
FreiChat.get_config = function(el) {
//parameters: variable(definitions.js) , id(to select img) , type , [ php variable(argument.php) , js variable(defintions.js) ]
var src = el.src;
var cls = el.className;
var id = el.id;
var id_c = id;
if (id_c == '') {
id_c = cls;
}
if (!$('#' + id_c).is("img")) {
//FreiChat.notify('the clicked element is not an image');
return false;
}
var img = src.substring(src.lastIndexOf('/') + 1);
var arr = img.split(".");
var img_name = arr[0]; //1st
var img_ext = arr[1];
return {
name: img_name,
id: id,
cls: cls,
type: 'img',
ext: img_ext
};
};
//-------------------------------------------------------------------------------------
/**
*
* Highlights the content inside the element
* @param {HTML element} element
* @returns {undefined}
*/
FreiChat.select = function(element) {
var doc = document;
if (doc.body.createTextRange) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(element);
selection.removeAllRanges();
selection.addRange(range);
}
};
FreiChat.get_caret_position = function(el) {
var caretPos = 0, containerEl = null, sel, range;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
if (range.commonAncestorContainer.parentNode == el) {
caretPos = range.endOffset;
}
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
if (range.parentElement() == el) {
var tempEl = document.createElement("span");
el.insertBefore(tempEl, el.firstChild);
var tempRange = range.duplicate();
tempRange.moveToElementText(tempEl);
tempRange.setEndPoint("EndToEnd", range);
caretPos = tempRange.text.length;
}
}
return caretPos;
};
function highlight(el, st, en) {
if (window.getSelection) {
var range = document.createRange();
var e = el.get(0);
e = e.firstChild;
range.setStart(e, st);
range.setEnd(e, en);
range.collapse(true);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
}
FreiChat.key_change_value = function(property, value) {
if (value.indexOf("em") > -1 || value.indexOf("%") > -1 || value.indexOf("px") > -1) {
//bind keydown event
$jn('#input_style_' + property).on("keydown", function(e) {
if (e.which === 38 || e.which === 40) {
e.preventDefault();
var me = $jn(this);
me.focus();
var vs = me.get_value().split(" ");
var el = document.getElementById(me.attr("id"));
var start = FreiChat.get_caret_position(el);
var len = 0;
var el_no = 0;
for (var i = 0; i < vs.length; i++) {
len = len + vs[i].length + 1;
//console.log(len);
if (start < len) {
len--;
el_no = i;
break;
}
}
//highlight the text that will be inc/dec
///console.log(len);
//console.log(vs[el_no]);
var end_highlight = len,
start_highlight = len - vs[el_no].length;
// highlight(me,start_highlight,end_highlight);
var unit;
var number = me.get_value().substring(start_highlight, end_highlight);
if (number.indexOf("em") > -1) {
unit = "em";
} else if (number.indexOf("%") > -1) {
unit = "%";
} else if (number.indexOf("px") > -1) {
unit = "px";
} else {
//unit = ""; //unitless
return;
}
number = parseInt(number);
var step = 1;
if (e.shiftKey === false)
step = 1;
else
step = 10;
if (e.which === 38)
number += step;
else if (e.which === 40)
number -= step;
//replace text -> inc/dec value
me.get_value(me.get_value().substring(0, start_highlight) + number + unit + me.get_value().substring(end_highlight, me.get_value().length));
var selection_start = start_highlight;
//console.log(start_highlight);
var selection_end = el.innerHTML.indexOf(unit, start_highlight) + unit.length;
highlight(me, selection_start, selection_end);
}
//check if selection is in input
});
}
};
//-------------------------------------------------------------------------------------
FreiChat.edit_css = function(el, get_parent) {
FreiChat.c_upload_config = FreiChat.get_config(el);
if (FreiChat.c_upload_config) {
$('#replace_image').show();
} else {
$('#replace_image').hide();
}
if (typeof get_parent === "undefined")
el.classList.remove("mouseOn");
var cls = el.className;
var id = el.id;
var tag = $(el).prop("tagName");
if (id != '') {
tag += "#" + id;
}
if (cls != '') {
tag += "." + cls;
}
$("#style_rules_description").html(tag);
var cls_sel = "." + cls;
if (cls == '') {
cls = id;
cls_sel = "#" + id;
}
id = cls_sel;
if (cls_sel != '' || cls_sel != null)
FreiChat.selected_class = cls_sel;
var arr = FreiChat.css_array;
var k_arr;
if (typeof arr[id] !== "undefined") {
k_arr = arr[id];
}
else {
k_arr = FreiChat.check_parents(el);
}
var property, name, value, len, i = 0, index;
var str = '<table id ="table_add_style" >';
//$('#style_rules_content').html('');
for (property in k_arr) {
if ($.isArray(k_arr[property])) {
//contained duplicate property values
//so change the
len = k_arr[property].length;
name = property;
for (i = 0; i < len; i++) {
value = k_arr[name][i];
if (i === 0) {
index = '';
} else {
index = '_D_' + i; //to identify whether its a duplicate
}
property = name + index;
str += FreiChat.generate_row(name, property, value, '');
}
} else {
//is unique
name = property;
value = k_arr[name];
str += FreiChat.generate_row(name, property, value, '');
}
}
$('#style_rules_content').html(str + "</table>");
FreiChat.table_changed($('#style_rules_content'));
var properties = FreiChat.deep_copy(k_arr);
for (property in properties) {
//if(properties[property].indexOf('<\?php') != -1) continue;
var name = property;
var value = properties[name];
if (!$.isArray(properties[name])) {
properties[name] = [properties[name]];
}
var len = properties[name].length;
for (i = 0; i < len; i++) {
if (i === 0) {
index = '';
} else {
index = '_D_' + i; //to identify whether its a duplicate
}
property = name + index;
(function(ppty) {
value = properties[name][i];
$('#input_style_' + property).bind('textchange', function(event, previousText) {
FreiChat.apply_css('#input_style_' + ppty, ppty, id, previousText)
}).click(function() {
var el = document.getElementById($(this).attr("id"));
FreiChat.select(el);
});
FreiChat.key_change_value(property, value);
$('#tr_style_' + property).mouseover(function() {
$('#close_style_' + ppty).css('display', 'inline-block');
}).mouseout(function() {
$('#close_style_' + ppty).hide();
});
$('#close_style_' + property).click(function() {
FreiChat.delete_style(ppty, '', $(this));
});
})(property);
}
}
if ($('#style_rules').is(":visible")) {
if (prev_selected_element) {
prev_selected_element.classList.remove("selected_element");
prev_selected_element = false;
}
$('#element_states').hide();
$('#actions_style_rules').show();
$('#style_rules_body').show();
}
//}
////dialog('open');
if (selected_element) {
selected_element.classList.add("selected_element");
prev_selected_element = selected_element;
}
$('#style_rules').show();
if (!FreiChat.action_style_rules) {
$('#actions_style_rules').show(); //one time
FreiChat.action_style_rules = "visible";
}
if (FreiChat.is_obj_empty(k_arr) == true) {
$('#table_add_style').html("No styles to display!");
}
};
//-------------------------------------------------------------------------------------
FreiChat.return_to_elements = function() {
FreiChat.action_style_rules = false;
$('#element_states').hide();
$('#actions_style_rules').hide();
$('#style_rules_body').hide();
$('#style_rules_description').html('<div style="text-align:center;">please select any element from left</div>');
}
//-------------------------------------------------------------------------------------
FreiChat.return_to_normal = function() {
$('#element_states').hide();
$('#actions_style_rules').show();
$('#style_rules_body').show();
}
//-------------------------------------------------------------------------------------
FreiChat.is_obj_empty = function(object) {
var i;
for (i in object) {
if (object.hasOwnProperty(i))
return false;
}
return true;
};
//-------------------------------------------------------------------------------------
FreiChat.is_valid_color = function(color) {
color = tinycolor(color);
return color.ok;
};
//-------------------------------------------------------------------------------------
/**
*
* Copies a object without refrence
* Note: copying != cloning
*
* @param {Object} obj
* @returns {@exp;jQuery@call;extend}
*/
FreiChat.deep_copy = function(obj) {
return jQuery.extend({}, obj);
};
/**
* Gets positions of colors in a string
*
* @param {String} str
* @returns {Array}
*/
FreiChat.get_color_positions = function(str) {
var color_ids = ["#", "rgb", "hsl", "hsv"],
color_names = freidefines.color_names; //color names name:hex [hex without hash]
var t_color_ids = color_ids.concat(color_names);
/*
*
* H -> HEX colors #
* R -> rgb,rgba,hsl,hsla colors
* N -> color names
*
*/
//simply cant trust the user input
str = str.toLowerCase();
var len = t_color_ids.length,
indices = [],
index = 0,
go_next_id,
type;
for (var i = 0; i < len; i++) {
go_next_id = false;
while (!go_next_id) {
index = str.indexOf(t_color_ids[i], index);
if (index > -1) {
if (i === 0) {
type = 'H';
}
else if (i <= 3) {
type = 'R';
} else {
if (str.match("\\b" + t_color_ids[i] + "\\b") === null) {
index += t_color_ids[i].length;
continue;
}
type = t_color_ids[i].length;
}
indices.push([index, type]);
index += t_color_ids[i].length;
} else {
go_next_id = true;
index = 0; //start from beginning
}
}
}
//sort in ascending order
indices.sort(function(a, b) {
return a[0] - b[0];
});
return indices;
};
/*
* extracts color acc to position in given string
*
* @param {String} str
* @param {Int} index
* @returns {undefined}
*/
FreiChat.get_color = function(str, index, type) {
var color_len,
st,
end,
color;
if (type === 'H') {
st = index;
//check hex6
color_len = 7;
color = str.substr(st, color_len);
var valid = FreiChat.is_valid_color(color);
if (!valid) {
//check hex3
color_len = 4;
color = str.substr(st, color_len);
}
} else if (type === 'R') {
//ending is definitely `)`
st = index;
end = str.indexOf(")", index);
color_len = (end - st) + 1; //try it on your fingers 5-1 , what do you get ?? ;)
color = str.substr(st, color_len);
} else {
//one of the color names
//so length is direct
st = index;
color_len = type;
color = str.substr(st, color_len);
}
return color;
};
//-------------------------------------------------------------------------------------
/**
*
*
*
* @param {string} color string
* @returns {string} modified color string
*/
FreiChat.color_set = function(str) {
//TODO: add a learner function to learn properties that can have colors
// so that next time this function does not have to be run with properties
// that wont have color as their value
var index = 0,
color, //actual color in the string
valid;
//no problem of duplicates
//get color positions
var indices = FreiChat.get_color_positions(str),
len = indices.length,
index, type;
var inc = 0;
for (var i = 0; i < len; i++) {
index = inc + indices[i][0];
type = indices[i][1];
valid = false;
color = FreiChat.get_color(str, index, type);
valid = FreiChat.is_valid_color(color);
if (valid) {
str = FreiChat.add_color_sel(str, index, color);
inc += str[1] - color.length; //get the correct no of characters add in the string
str = str[0]; //get actual string
}
}
return str;
};
//-------------------------------------------------------------------------------------
/*
* Prepends a color selector to specified color present in val string
*
* @param {String} val
* @param {Array} pos
* @returns {Array}
*/
FreiChat.add_color_sel = function(val, pos, color) {
var str = "<span class='color_selector_p'><div class='color_selector special'></div><span>" + color + "</span></span>";
val = val.substr(0, pos) + str + val.substr(color.length + pos);
return [val, str.length];
};
//-------------------------------------------------------------------------------------
/**
*
* checks if given value is valid for given property
*
* @param {String} property
* @param {String} value
* @returns {Boolean}
*/
FreiChat.is_valid_css = function(property, value) {
var valid = false;
if (typeof value === "undefined") {
//check for valid property
} else {
var div = $('#css_tester_div');
var old_val = div.css(property);
div.css(property, value);
var new_val = div.css(property);
//valid if old value and new value are different
valid = (old_val !== new_val);
//revert to old value for reuse
div.css(property, old_val);
}
return valid;
};
//-------------------------------------------------------------------------------------
FreiChat.reset_gradients = function() {
var gradient;
for (var i = 0; i < FreiChat.gradient_selectors.length; i++) {
gradient = FreiChat.gradient_selectors[i].next().text();
gradient = FreiChat.color_set(gradient);
FreiChat.gradient_selectors[i].next().html(gradient);
}
$('#gradient_selector_content_div').html('');
FreiChat.table_changed(FreiChat.gradient_selectors[0].parents("table"));
};
//-------------------------------------------------------------------------------------
FreiChat.click_gradx = function() {
var gradient = FreiChat.correct_gradient,
g_type = "linear",
direction = "left",
sliders = [];
$('#gradient_selector_content').dialog('open');
$('.ui-dialog').css({
left: "auto",
right: "0px",
top: "100px"
});
$('.ui-dialog').draggable("option", "containment", 'body');
if (typeof gradient !== "undefined") {
if (gradient.indexOf("radial") > -1) {
g_type = "radial";
}
var directions = ["center", "top", "bottom", "left", "right"];
var present_dirs = [], index = 0, next = false;
for (var i = 0; i < directions.length; i++) {
next = false;
index = 0;
while (!next) {
index = gradient.indexOf(directions[i], index);
if (index > -1) {
present_dirs.push([directions[i], index]);
index += directions[i].length; //we dont want a infinite loop
} else {
next = true;
}
}
}
var len = present_dirs.length;
if (len <= 2) {
//sort acc to index
present_dirs.sort(function(a, b) {
return a[1] - b[1];
});
if (present_dirs.length === 0) {
direction = "left";
}
else if (present_dirs.length === 1) {
direction = present_dirs[0][0];
} else {
direction = present_dirs[0][0] + "," + present_dirs[1][0];
}
} else {
//something is wrong
console.log("too many gradient directions")
}
//TODO: http://www.glazman.org/JSCSSP/freshmeat.html
var indices = FreiChat.get_color_positions(gradient);
var len = indices.length,
index, type, color, end, length, start,
position, positions = [], colors = [];
for (var i = 0; i < len; i++) {
index = indices[i][0];
type = indices[i][1];
color = FreiChat.get_color(gradient, index, type);
start = index + color.length;
end = gradient.indexOf(",", start);
length = end - start;
position = gradient.substr(start, length);
position = position.replace(/^\D+/g, '');
position = $.trim(position);
position = position.replace("%", "");
if (position === "") {
if (i === 0) {
positions[i] = 0;
}
else if (i === len - 1) {
positions[i] = 100;
} else {
positions[i] = position;
}
} else {
positions[i] = position;
}
colors[i] = color;
}
for (var i = 0; i < len; i++) {
sliders.push({
color: colors[i],
position: positions[i]
});
}
console.log(indices);
console.log(sliders);
}
//invoke random
var gradient_selectors = FreiChat.gradient_selectors;
gradX('#gradient_selector_content_div', {
type: g_type,
direction: direction,
targets: FreiChat.gradient_selectors,
sliders: sliders,
change: function(stops, styles) {
var vendors = ["", "-o-", "-ms-", "-moz-", "-webkit-"];
var len = vendors.length;
var g_len = gradient_selectors.length,
gradient, div;
for (var j = 0; j < g_len; j++) {
div = FreiChat.gradient_selectors[j].next();
gradient = div.text();
for (var i = 0; i < len; i++) {
if (gradient.indexOf(vendors[i]) > -1) {
div.html(styles[i]);
div.parent().trigger("textchange");
}
}
}
}
});
return false;
};
//-------------------------------------------------------------------------------------
/*
* called when table is filled with the css roperties of clicked element
* @returns {undefined}
*/
FreiChat.table_changed = function(tbl) {
var change_clr = function(tcolor, me) {
var color = tcolor.toString();
me.css("background", color);
var parent = me.parent();
parent.find('span').text(color);
parent.trigger("textchange");
};
var apply_gradient = function(arr, gradient) {
for (var i = 0; i < arr.length; i++) {
arr[i].css("background", gradient);
}
};
var gradient_selectors = [],
gradient_unapplied_selectors = [],
correct_gradient = "";
//.find is slightly slightly faster than direct $('.color_selector')
tbl.find('.gradient_selector').each(function() {
var me = $jn(this);
var gradient = me.next().text();
if (FreiChat.is_valid_css("background-image", gradient)) {
me.css("background", gradient);
correct_gradient = gradient;
if (correct_gradient !== "") {
//new latest correct gradient
//apply this to all
apply_gradient(gradient_selectors, gradient);
} else {
//apply to unapplied selectors
apply_gradient(gradient_unapplied_selectors, correct_gradient);
}
gradient_unapplied_selectors = [];
correct_gradient = gradient;
} else if (correct_gradient !== "") {
//invalid but a valid gradient exists
me.css("background", correct_gradient);
apply_gradient(gradient_unapplied_selectors, correct_gradient);
gradient_unapplied_selectors = [];
} else {
gradient_unapplied_selectors.push(me);
}
gradient_selectors.push(me);
});
if (correct_gradient !== "") {
FreiChat.correct_gradient = correct_gradient;
}
FreiChat.gradient_selectors = gradient_selectors;
$jn('.gradient_selector').on({
click: function() {
FreiChat.click_gradx();
return false;
}
});
var len = gradient_unapplied_selectors.length;
if (len > 1) {
//there is some problem
for (var i = 0; i < len; i++) {
//apply a default gradient
gradient_unapplied_selectors[i].css("background", "#eee");
}
}
tbl.find('.color_selector').each(function() {
var me = $jn(this);
var parent = me.parent();
var color = parent.find('span').text();
me
.css("background", color)
.spectrum({
color: color,
clickoutFiresChange: true,
showInput: true,
showButtons: false,
showAlpha: true,
move: function(tcolor) {
change_clr(tcolor, me);
},
change: function(tcolor) {
change_clr(tcolor, me);
}
})
.html("");
});
};
//-------------------------------------------------------------------------------------
/**
*
* Returns string with gradient selector prepended if value i.e str contains gradient
*
*
* @param {String} str
* @returns {String}
*/
FreiChat.gradient_set = function(str) {
if (str.indexOf("gradient") > -1) {
//obviously gradient word will be present
var grad = "<div class='gradient_selector special'></div>";
str = grad + "<span>" + str + "</span>";
}
return str;
};
//-------------------------------------------------------------------------------------
/**
* Generates the HTML for displaying property value as a row in a table
*
* @param {String} name
* @param {String} property
* @param {String} value
* @param {String} state
* @returns {String}
*/
FreiChat.generate_row = function(name, property, value, state) {
return '<tr id="tr_' + state + 'style_' + property + '"><td class="td_property"><span class="font_style_rules" >' + name + ':</span></td><td>' + FreiChat.get_property_value(property, value) + FreiChat.generate_close_btn(property, state) + '</td></tr>';
};
//-------------------------------------------------------------------------------------
/**
* Generates the HTML for the close button
*
* @param {String} property
* @returns {String}
*/
FreiChat.generate_close_btn = function(property, state) {
return '<span id="' + state + 'close_style_' + property + '" class="close_style_rules"><a title="delete style">X</a></span>';
};
//-------------------------------------------------------------------------------------
/**
* returns formatted div which is substituted by an input onclick
* and resubstituted to div onblur
*
*
* @param {string} property is name of the css property
* @param {string} value is the name of the css value
* @returns {string} formatted string
*/
FreiChat.get_property_value = function(property, value) {
value = FreiChat.color_set(value);
value = FreiChat.gradient_set(value);
//TODO: make all other event delegated for performance
//event delegation
//jquery defines cross-browser focusin and focusout instead of focus and blur
//because these events do not bubble up according to W3C
FreiChat.has_clicked = false;
//mousedown happens before focus
//just a simple hack for tab key simulation
$jn("#element_css_container").on({
click: function(event) {
FreiChat.has_clicked = true;
if (!$(event.target).hasClass("special")) {
$(this).find('.special').each(function() {
$(this).hide();
console.log($(this));
});
} else {
if ($(event.target).hasClass("gradient_selector"))
FreiChat.click_gradx();
}
},
mousedown: function(event) {
FreiChat.has_clicked = true;
if (!$(event.target).hasClass("special")) {
$(this).find('.special').each(function() {
$(this).hide();
console.log($(this));
});
} else {
if ($(event.target).hasClass("gradient_selector"))
FreiChat.click_gradx();
}
},
focusin: function(event) {
if (!FreiChat.has_clicked) {
$(this).find('.special').each(function() {
$(this).hide();
});
}
FreiChat.has_clicked = false;
},
focusout: function() {
var me = $(this);
me.find('.special').each(function() {
$(this).show();
console.log($(this));
});
var str = FreiChat.color_set(me.text());
str = FreiChat.gradient_set(str);
me.html(str);
FreiChat.table_changed(me.parents("table"));
}
}
, '#input_style_' + property);
return '<div contenteditable class="td_value" id="input_style_' + property + '">' + value + '</div>';
//return '<input class="input_style_rules" id="input_style_' + property + '" type="text" value="' + value + '" />';
};
//-------------------------------------------------------------------------------------
/**
*
* @param {string} selected_class name of class in css_array
* @param {string} property name of property in css_array[selected_class]
* @param {String} action change(value will be passed in action itself) | delete | check
* @returns {boolean|string}
* if action is check and property exists returns true else false
* else returns true property name after stripping off _D_index
*
*/
FreiChat.modify_css_array = function(selected_class, property, action) {
var name = property;
var parts = property.split("_D_");
property = parts[0];
if ($.isArray(FreiChat.css_array[selected_class][property])) {
//property will be an array of multipl values for same property
//get index
var index = parts[1]; //assuming there only one _D_ in the property name
name = parts[0];
//css_array modification will be 3 dimensional
if (!(selected_class in FreiChat.mod_css_array)) {
FreiChat.mod_css_array[selected_class] = {};
}
if (!(name in FreiChat.mod_css_array[selected_class])) {
FreiChat.mod_css_array[selected_class][name] = {};
}
if (action === "delete") {
delete FreiChat.css_array[selected_class][name][index];
delete FreiChat.mod_css_array[selected_class][name][index];
} else if (action === 'check') {
return (typeof FreiChat.css_array[selected_class][name][index] === "undefined");
} else {
FreiChat.css_array[selected_class][name][index] = action;
FreiChat.mod_css_array[selected_class][name][index] = action;
}
} else {
//single property single value
if (!(selected_class in FreiChat.mod_css_array)) {
FreiChat.mod_css_array[selected_class] = {};
}
if (action === "delete") {
delete FreiChat.css_array[selected_class][property];
delete FreiChat.mod_css_array[selected_class][property];
} else if (action === 'check') {
return (typeof FreiChat.css_array[selected_class][property] === "undefined");
} else {
FreiChat.css_array[selected_class][property] = action;
FreiChat.mod_css_array[selected_class][property] = action;
}
}
return name;
};
//-------------------------------------------------------------------------------------
FreiChat.delete_style = function(property, selected_class, ele) {
var state = 'state';
//dirty trick , but does the job :)
if (ele.attr("id").indexOf("state_") > -1) {
selected_class = FreiChat.selected_class;
state = '';
$(FreiChat.selected_class).css(property, 'inherit');
}
$('#tr_' + state + 'style_' + property).css('display', 'none');
FreiChat.modify_css_array(selected_class, property, "delete");
// FreiChat.css_array[selected_class][property];//alert(property);
};
//-------------------------------------------------------------------------------------
FreiChat.add_styles = function() {
FreiChat.process_styles("add_styles_value", FreiChat.selected_class, "multiple_styles");
$('#add_styles_textarea').hide();
};
//-------------------------------------------------------------------------------------
FreiChat.add_state_styles = function() {
var selected_class = FreiChat.selected_state_class;
FreiChat.process_styles("add_state_styles_value", selected_class, "multiple_state_styles");
$('#add_state_styles_textarea').hide();
}
//-------------------------------------------------------------------------------------
FreiChat.process_styles = function(id, selected_class, action) {
var text = $.trim($('#' + id).get_value());
text = text.replace(/[\n\r]/g, '');
var styles = text.split(";");
var len = styles.length, property, value, parts, i;
var _styles = [];
var properties = [];
for (i = 0; i < len; i++) {
if (styles[i] === "")
continue;
parts = styles[i].split(":");
property = $.trim(parts[0]);
value = $.trim(parts[1]);
if (properties.indexOf(property) === -1) {
//property does not contain the property
_styles.push([property, value]);
} else {
//duplicate entries here
if (typeof _styles[property] === "undefined") {
_styles[i] = [];
}
_styles[i].push([property, value]);
}
properties.push(property);
}
len = _styles.length;
var name, index;
for (i = 0; i < len; i++) {
if (_styles[i] instanceof Array) {
for (var j = 0; j < _styles[i].length; j++) {
name = _styles[i][j][0];
if (j === 0) {
index = '';
} else {
index = '_D_' + i; //to identify whether its a duplicate
}
property = name + index;
value = _styles[i][j][1];
FreiChat.add_new_style(selected_class, action, property, name, value);
}
} else {
property = _styles[i][0];
value = _styles[i][1];
FreiChat.add_new_style(selected_class, action, property, name, value);
}
}
};
//-------------------------------------------------------------------------------------
/*
*
* @param {type} property
* @returns {if property exists returns property_D_[lastindex+1]}
*/
FreiChat.correct_property = function(selected_class, property) {
if ($.isArray(FreiChat.css_array[selected_class][property])) {
property += "_D_" + FreiChat.css_array[selected_class][property].length;
}
return property;
};
//-------------------------------------------------------------------------------------
FreiChat.add_new_style = function(selected_class, is_a_state, property, name, value) {
if (typeof selected_class === "undefined")
selected_class = FreiChat.selected_class;
if (typeof is_a_state === "undefined")
is_a_state = false;
var state = '';
var table_id = '_add_style';
if (is_a_state && is_a_state != "multiple_styles") {
state = 'state_';
table_id = '_' + selected_class;
table_id = FreiChat.fix_id(table_id);
}
if (typeof FreiChat.mod_css_array[selected_class] === "undefined") {
FreiChat.mod_css_array[selected_class] = {};
}
if (is_a_state != "multiple_styles" && is_a_state != "multiple_state_styles") {
name = $.trim($('#property_add_' + state + 'style').get_value());
if (typeof FreiChat.css_array[selected_class][name] !== "undefined") {
if (!$.isArray(FreiChat.css_array[selected_class][name])) {
//property already exists so create an array to store duplicate property values
FreiChat.css_array[selected_class][name] = [FreiChat.css_array[selected_class][name]];
}
}
if (typeof FreiChat.mod_css_array[selected_class][name] !== "undefined") {
if (!$.isArray(FreiChat.mod_css_array[selected_class][name])) {
//property already exists so create an array to store duplicate property values
FreiChat.mod_css_array[selected_class][name] = [FreiChat.mod_css_array[selected_class][name]];
}
}
property = FreiChat.correct_property(selected_class, name);
value = $.trim($('#value_add_' + state + 'style').get_value());
}
if (typeof FreiChat.css_array[selected_class] === "undefined") {
FreiChat.css_array[selected_class] = {}
}
if (property === '' || value === '') {
FreiChat.notify('you cannot leave the fields empty');
return;
}
var str = FreiChat.generate_row(name, property, value, state);
//var js_ele = document.getElementById("table_"+table_id);
var tbl = $("#table" + table_id);
if (tbl.html() === "No styles to display!") {
//first style
tbl.html(str);
} else {
//tbl.find("tr").last().after(str);
$("#table" + table_id + " tr:last").after(str);
}
FreiChat.table_changed(tbl);
if (!is_a_state) {
$('#input_style_' + property).bind('textchange', function(event, previousText) {
FreiChat.apply_css('#input_style_' + property, property, FreiChat.selected_class, previousText)
});
}
$('#tr_' + state + 'style_' + property).mouseover(function() {
$('#' + state + 'close_style_' + property).css('display', 'inline-block');
}).mouseout(function() {
$('#' + state + 'close_style_' + property).hide();
});
$('#' + state + 'close_style_' + property).click(function() {
FreiChat.delete_style(property, selected_class, $(this));
});
FreiChat.unsaved_changes = true;
FreiChat.modify_css_array(selected_class, property, value);
if (!is_a_state) {
$('#add_new_style_content').hide();
$(FreiChat.selected_class).css(name, value);
} else {
$('#add_new_state_style_content').hide();
}
};
//-------------------------------------------------------------------------------------
/*
* Checks for properties with same name after itself
*
* @param {string} class_name
* @param {string} ppty
* @returns {boolean} true if property with same name exists down the array
*
*/
FreiChat.chk_duplicate_property = function(class_name, ppty) {
if ($.isArray(FreiChat.css_array[class_name][ppty])) {
var i, len = FreiChat.css_array[class_name][ppty].length,
parts = ppty.split("_D_");
var index = parts[1];
--len; //starts from 0
if (typeof index === "undefined") {
index = 0; //if it is the first property
}
if (index < len) {
//there is one more property down there
return true;
}
}
return false; //only or last property
};
//-------------------------------------------------------------------------------------
FreiChat.apply_css = function(div, ppty, css_div, oldval, use_passed_id) {
var val = $(div).get_value(),
class_name, name;
console.log(val);
if (oldval === $.trim(val)) {
return; //value is unchanged
}
if (val === '') {
val = 'none'; //specific buggy code here
}
val = FreiChat.correct_path(val);
if (use_passed_id) {
class_name = css_div;
} else {
class_name = FreiChat.selected_class;
}
name = FreiChat.modify_css_array(class_name, ppty, val);
//see function for description
if (FreiChat.chk_duplicate_property(class_name, ppty)) {
//just notify the user that his changes may not apply to the left div
if (FreiChat.notification_closed) {
FreiChat.notification_closed = false;
$.noty({
text: " a property with the same name exists somewhere below , so changing this one may not affect the element on the left",
onClose: function() {
FreiChat.notification_closed = true;
}
});
}
} else {
$(css_div).css(name, val);
}
FreiChat.unsaved_changes = true;
};
//-------------------------------------------------------------------------------------
FreiChat.correct_path = function(value) {
if (value.indexOf("url") > -1) {
//contains a url
var path = freidefines.GEN.url;
path = path + "client/themes/";
var theme = freidefines.GEN.curr_theme;
path = path + theme + "/";
value = value.replace(/'/g, "");
value = value.replace(/"/g, "");
var i = 0, len = value.length, start, stop = 0, url;
for (i = 0; i < len; i++) {
start = value.indexOf("(", stop);
stop = value.indexOf(")", start);
if (start === -1)
break;
url = value.substring(start + 1, stop);
value = value.replace(url, path + url);
i = stop;
}
}
return value;
}
//-------------------------------------------------------------------------------------
FreiChat.get_states = function() {
//i can directly use FreiChat.selected_class here :)
var
curr_class = FreiChat.selected_class,
key,
states = [], //array of object styles
label,
property,
value,
styles,
str = '',
str_styles = '',
index,
name,
id,
len, i
; //for adding more vars
for (key in FreiChat.css_array) {
if (key.indexOf(curr_class) > -1 && key != curr_class) {
states[key] = FreiChat.css_array[key];
}
}
for (key in states) {
//key -> complete classes matching FreiChat.selected_class
// i.e FreiChat.selected_class:hover, FreiChat.selected_class:after
//getting states like :hover, :after from full class
label = $.trim(key).replace(FreiChat.selected_class, "");
str += '<div class="state_label"><div class="state_label_text">' + label + '</div><div onclick=\'FreiChat.add_new_state_styles("' + key + '",true)\' class="state_add_new_style_btn btn"> add css</div><div onclick=\'FreiChat.add_new_state_style("' + key + '",true)\' class="state_add_new_style_btn btn"> add new style</div></div>';
id = FreiChat.fix_id(key);
str_styles = '<table id="table_' + id + '" class="table_state_styles"><tbody>';
if (FreiChat.is_obj_empty(states[key])) {
$('#table_' + id).html("No styles to display!");
}
for (styles in states[key]) {
name = styles;
property = styles;
if ($.isArray(states[key][styles])) {
//contained duplicate property values
//so change the
len = states[key][styles].length;
for (i = 0; i < len; i++) {
value = states[key][styles][i];
if (i === 0) {
index = '';
} else {
index = '_D_' + i; //to identify whether its a duplicate
}
property = name + index;
str += FreiChat.generate_row(name, property, value, '');
}
} else {
value = states[key][styles];
str_styles += FreiChat.generate_row(name, property, value, '');
;
}
}
str_styles += "</tbody></table>";
str += str_styles;
}
if (str === '') {
str = '<div class="no_display">No states to display!</div>';
}
$('#element_states_content').html(str);
FreiChat.table_changed($('#element_states_content'));
//dynamic linking here
for (key in states) {
for (styles in states[key]) {
if ($.isArray(states[key][styles])) {
len = states[key][styles].length;
} else {
len = 1;
}
name = styles;
for (i = 0; i < len; i++) {
if (i === 0) {
index = '';
} else {
index = '_D_' + i; //to identify whether its a duplicate
}
var ppty = name + index;
(function(ppty) {
$('#tr_state_style_' + ppty).mouseover(function() {
$('#state_close_style_' + ppty).css('display', 'inline-block');
}).mouseout(function() {
$('#state_close_style_' + ppty).hide();
});
$('#input_state_style_' + ppty).bind('textchange', function(event, previousText) {
var state = $('#tr_state_style_' + ppty).parent().parent().prev().children(":first").text();
var complete_class = FreiChat.selected_class + state;
FreiChat.apply_css('#input_state_style_' + ppty, ppty, complete_class, previousText, true)
});
$('#state_close_style_' + ppty).click(function() {
FreiChat.delete_style(ppty, key, $(this));
});
}(ppty));
}
}
}
$('#element_states').show();
$('#actions_style_rules').hide();
$('#style_rules_body').hide();
}
//-------------------------------------------------------------------------------------
FreiChat.add_new_state_style = function(selected_class, is_state) {
$('#property_add_state_style').get_value('');
$('#value_add_state_style').get_value('');
$('#add_new_state_style_content').show();
FreiChat.selected_state_class = selected_class;
setTimeout(function() {
$('#property_add_state_style').focus();
}, 100);
}
FreiChat.add_new_state_styles = function(selected_class, is_state) {
$('#add_state_styles_value').get_value('');
$('#add_state_styles_textarea').show();
FreiChat.selected_state_class = selected_class;
setTimeout(function() {
$('#add_state_styles_value').focus();
}, 100);
}
//-------------------------------------------------------------------------------------
FreiChat.add_new_state = function() {
var
state = $.trim($('#state_name').get_value()),
str,
state_class,
id;
state_class = FreiChat.selected_class + state;
if (state == '') {
FreiChat.notify('you cannot leave the fields empty');
return;
}
else if (typeof FreiChat.css_array[state_class] != "undefined") {
FreiChat.notify('state already exists');
return;
} else if (state.indexOf(":") == -1) {
state = " " + state; //fix for child elements
}
FreiChat.selected_state_class = state_class;
str = '<div class="state_label"><div class="state_label_text">' + state + '</div><div onclick=\'FreiChat.add_new_state_styles("' + state_class + '",true)\' class="state_add_new_style_btn btn"> add css</div><div onclick=\'FreiChat.add_new_state_style("' + state_class + '",true)\' class="state_add_new_style_btn btn"> add new style</div></div>';
id = FreiChat.fix_id(state_class);
str += '<table id="table_' + id + '" class="table_state_styles"></table>';
FreiChat.css_array[state_class] = {};
FreiChat.mod_css_array[state_class] = {};
$('#add_new_state_div').hide();
$("#element_states_content").append(str);
$('#table_' + id).html("No styles to display!");
$('#state_name').get_value('');
}
//-------------------------------------------------------------------------------------
FreiChat.fix_id = function(id) {
id = id.replace(".", "");
id = id.replace(":", "");
id = id.replace(" ", "");
return id;
}
//-------------------------------------------------------------------------------------
FreiChat.replace_image = function(config) {
$('#upload_div').dialog('open').data("data", {
"fullname": config.name + "." + config.ext,
"name": config.name,
"id": config.id,
"type": config.type
});
FreiChat.disable_doc_click = true;
}
FreiChat.file_upload = function() {
if (FreiChat.allow_upload == false) {
FreiChat.notify('Please select a file to upload!');
return;
}
var fileInput = document.getElementById('file_input_upload');
var file = fileInput.files[0];
// $('#progress_upload_file').html('<div>'+file.name+' <progress id="rep_prg" value=0 max=100></progress><span id="rep_upload_status"></span></div>');
//var progress=$('#rep_prg');
//var status = $("#rep_upload_status");
var xhr = new XMLHttpRequest();
/* xhr.upload.addEventListener('progress', function(evt){
var percent = evt.loaded/evt.total*100;
$(progress.selector).get_value(percent);
}, false);*/
var config = $('#upload_div').data("data");
xhr.open('POST', 'admin_files/theme_maker/upload.php', true);
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
xhr.setRequestHeader("X-File-Name", file.name);
xhr.setRequestHeader("X-File-Size", file.size);
xhr.setRequestHeader("X-File-Type", file.type);
xhr.setRequestHeader("X-ORIGINAL-FILE-NAME", config.fullname);
xhr.setRequestHeader("X-TYPE", config.type);
xhr.setRequestHeader("X-VARIABLE-PHP", config.name);
xhr.setRequestHeader("Content-Type", "application/octet-stream");
xhr.onreadystatechange = function() {
if (xhr.readyState != 4) {
return;
}
if (xhr.responseText == 'exceed') {
FreiChat.notify('file size has exceeded the allowed limit');
} else if (xhr.responseText == 'type') {
FreiChat.notify('invalid file type');
}
else {
var imgid = config.id;
var type = config.type;
var path = freidefines.GEN.url;
path = path + "client/themes/";
var theme = freidefines.GEN.curr_theme;
path = path + theme + "/";
//var newimg = xhr.responseText; remains static
//freidefines[data.variable_js] = newimg;
// alert(data.js_variable + " " + freidefines[data.js_variable] + " = " + newimg);
FreiChat.unsaved_changes = true;
if (type == 'img') {
FreiChat.unsaved_changes = true;
$('#' + imgid).attr('src', path + "images/" + xhr.responseText);
/*if(imgid != imgid2) {
$('#'+imgid2).attr('src',path+newimg);
}*/
}
/*else{ no bg-images allowed '1=1;--
$('#'+imgid).css('background-image',"url("+path+newimg+")");
if(imgid != imgid2) {
$('#'+imgid2).css('background-image',"url("+path+newimg+")");
}
}*/
}
//$('#upload_div').hide();
$('#file-upload-status').get_value('no image selected yet!');
FreiChat.allow_upload = false;
};
xhr.send(file);
}
//-------------------------------------------------------------------------------------
/*FreiChat.switch_visibility = function(current) {
var ids = ['themelist_div','new_theme_div','rename_theme'];
var i=0;
$('#'+current).slideToggle();
for(i=0;i<ids.length;i++){
if(ids[i] != current){
$('#'+ids[i]).hide();
}
}
}*/
//-------------------------------------------------------------------------------------
FreiChat.notify = function(mesg) {
if (FreiChat.anim_notify_progress == true && FreiChat.mesg == mesg)
return;
if (FreiChat.anim_notify_progress == true && FreiChat.mesg != mesg) {
$('#notification').html(mesg);
FreiChat.mesg = mesg;
FreiChat.notify_disappear_time = FreiChat.notify_disappear_time + 3000;
return;
}
FreiChat.anim_notify_progress = true;
$('#notification').html(mesg).center().slideDown().css('top', '0px').click(function() {
$('#notification').slideUp();
}).delay(FreiChat.notify_disappear_time).fadeOut(function() {
FreiChat.anim_notify_progress = false;
});
FreiChat.mesg = mesg;
}
//-------------------------------------------------------------------------------------
FreiChat.restore_defaults = function() {
var value = confirm('This will undo all your work to your last save , \nAre you sure ?');
if (value == true) {
// $.get("admin_files/theme_maker/theme_maker.php?action=restore",function(data){
FreiChat.unsaved_changes = false; //to prevent popup
window.location.reload(true);
// });
}
}
//-------------------------------------------------------------------------------------
FreiChat.save_theme = function() {
var value = confirm('Once saved , your changes will become permanent , \nAre you sure ?');
FreiChat.save_style_changes();
if (value == true) {
$.getJSON("admin_files/theme_maker/theme_maker.php?action=save", function(data) {
if (data === 'success') {
FreiChat.unsaved_changes = false;
FreiChat.notify('Current changes have been saved');
} else {
FreiChat.notify('Could not save changes...');
}
}, 'json');
}
}
//-------------------------------------------------------------------------------------
FreiChat.switch_button = function(mode_key, mode_value, first) {
/*if(sessionStorage[mode_key] == mode_value && typeof first == "undefined"){
return;
}
sessionStorage[mode_key] = mode_value;
$('#'+mode_value).prop('checked', true);
if(mode_value == "parameters") {
FreiChat.get_css_[);
$('#upload_div').dialog('close');
}else if(mode_value == 'image') {
$( "#style_rules" ).dialog('close');
}else if(mode_value == 'chat'){
$('#chat_switch_div').show('slow');
$('#chatroom_switch_div').hide();
$('#upload_div').dialog('close');
$( "#style_rules" ).dialog('close');
}else if(mode_value == 'chatroom') {
$('#chat_switch_div').hide();
$('#chatroom_switch_div').show('slow');
$('#upload_div').dialog('close');
$( "#style_rules" ).dialog('close');
}*/
//FreiChat.get_css_[); //update css Array
}
//-------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------
FreiChat.get_css_array = function() {
$.getJSON("admin_files/theme_maker/theme_maker.php?action=get_css_array",
{
}, function(data) {
console.log(data);
FreiChat.css_array = data;
}, 'json');
}
//-------------------------------------------------------------------------------------
FreiChat.save_style_changes = function() {
var filename;
if (sessionStorage.freichat_switch == 'chat') {
filename = 'styles.css';
} else
{
filename = 'styles.css';
}
$.post('admin_files/theme_maker/theme_maker.php?action=save_style_changes',
{
"css_array": FreiChat.mod_css_array,
filename: filename
}, function(data) {
//console.log(data);
});
}
FreiChat.set_default = function() {
var current_theme = freidefines.GEN.curr_theme
$.post('admin_files/theme_maker/theme_maker.php?action=set_default',
{
current_theme: current_theme
}, function(data) {
FreiChat.notify(current_theme + " has been succesfully set as the default theme !");
});
}
/*------------------------------------------------------------------------------------*/
FreiChat.show_tab_content = function(el) {
var el_o, el_li, el_li_o;
if (el == 'rooms') {
el = $jn('#frei_roompanel');
el_o = $jn('#frei_userpanel');
el_li = $jn('#frei_roompanel_li');
el_li_o = $jn('#frei_userpanel_li');
} else {
el = $jn('#frei_userpanel');
el_o = $jn('#frei_roompanel');
el_li = $jn('#frei_userpanel_li');
el_li_o = $jn('#frei_roompanel_li');
}
if (el.is(":visible")) {
} else {
el_o.hide();
el.show('clip');
el_li.addClass('frei_chatroom_tabs_selected');
el_li_o.removeClass('frei_chatroom_tabs_selected');
}
};
/*------------------------------------------------------------------------------------*/
FreiChat.add_users = function() {
var names = ["Sharon Davis", "Celestine Vega", "Lawrence Sebring", "Beatrice Vanmeter", "Corey Fox", "Ruth Struck"];
var str = "";
var i = 0;
for (i = 0; i < names.length; i++)
str += "<div id='freichat_user_" + i + "' title='I am available' class='freichat_userlist'>\n\
<span>\n\
<span style='display:block' class='freichat_userscontentavatar'>\n\
<img src='http://www.gravatar.com/avatar/" + md5(names[i]) + "?s=24&d=wavatar' class='freichat_userscontentavatarimage' alt='avatar'></span>\n\
</span>\n\
<span class='freichat_userscontentname'>" + names[i] + "</span>\n\
<span> <img class='freichat_userscontentstatus' src='" + FreiChat.make_url("images/onlineimg.png") + "' height='12' width='12' alt='status'></span>\n\
</div>"
var height;
$('#frei').html(str);
height = parseInt($('#freichat_user_0').height() + 1) * (i);
$("#frei").css("height", height);
$('#frei_user_count').html(i);
}
/*-----------------------------------------------------------------------------------*/
FreiChat.hide_all_elements = function() {
var parents = ["freichat", "frei_options", "freichat_chatbox", "chatwindow_minimized", "chatwindow_maximized", "freicontain1", "frei_chatroom", "onfreioffline"];
var len = parents.length;
for (var i = 0; i < len; i++) {
$("#" + parents[i]).hide();
}
/*
$("#freicontain10").show();
$("#frei_options").show();
$('#freichat_chatbox').show();
$('#freicontain1').show();
$('#frei_chatroom').show();
*/
FreiChat.last_element_shown = false;
$('#t_chatwindow_min').click(function() {
FreiChat.switch_element(['chatwindow_minimized']);
})
$('#t_chatwindow_options').click(function() {
FreiChat.switch_element(['freicontain1']);
})
$('#t_freichat').click(function() {
FreiChat.switch_element(['freichat_chatbox', 'freichat']);
})
$('#t_chatwindow_max').click(function() {
FreiChat.switch_element(['chatwindow_maximized']);
})
$('#t_chatroom').click(function() {
FreiChat.switch_element(['frei_chatroom']);
})
$('#t_frei_options').click(function() {
FreiChat.switch_element(['frei_options', 'freichat']);
})
$('#back_to_list').click(function() {
FreiChat.return_to_elements();
//hide all current elements
for (var i = 0; i < FreiChat.last_element_shown.length; i++)
FreiChat.last_element_shown[i].hide();
FreiChat.last_element_shown = false; //no element is now currently visible
$(this).hide();
$('#t_blocks').css("visibility", "visible").animate({
opacity: 1
}, '1000', 'linear', function() {
});
$('#t_grid').hide();
})
}
FreiChat.switch_element = function(id) {
//let the first element be the current elements forget the rest
element_zoomed = id[0];
$('#style_rules_description').html('<div style="text-align:center;">please click on any element to edit it</div>');
var i = 0;
//hide the previous elements
if (FreiChat.last_element_shown) {
for (i = 0; i < FreiChat.last_element_shown.length; i++)
FreiChat.last_element_shown[i].hide();
} else {
FreiChat.last_element_shown = [];
}
//store the current elements
for (i = 0; i < id.length; i++)
FreiChat.last_element_shown[i] = $('#' + id[i]);
//hide all the image blocks
$('#t_blocks').animate({
opacity: 0
}, '1000', 'linear', function() {
$(this).css("visibility", "hidden");
});
//show all the current elements
for (i = 0; i < FreiChat.last_element_shown.length; i++)
FreiChat.last_element_shown[i].show();
//show the back button
$('#back_to_list').show();
//show the grid image behind
$('#t_grid').show();
}
/*------------------------------------------------------------------------------------*/
FreiChat.show_hints = function() {
var hints =
["WYSIWYG theme maker V4.0",
"change the theme under general settings for your changes to reflect in your website",
"press ↑ , ↓ to increment or decrement values by 1",
"press shift+↑ , shift+↓ to increment or decrement values by 10",
"all your themes are stored in freichat/client/themes directory",
"you can directly edit .LESS files under theme directory and compile them",
"if changes do not reflect check permissions of freichat/client/themes directory",
"you can press esc to close dialogs",
"all icons are stored in freichat/client/themes/" + freidefines.GEN.curr_theme + "/icons directory"
]
var max = hints.length - 1, min = 0;
var theme_hint = $("#theme_hint");
theme_hint.html("WYSIWYG theme maker V4.0");
setInterval(function() {
random_no = Math.floor(Math.random() * (max - min + 1)) + min;
hint = hints[random_no];
theme_hint.html(hint);
}, 7000);
};
//--------------------------------------------------------------------------------------
(function($) {
$.fn.get_value = function(val) {
if (this.is("input") || this.is("textarea")) {
if (typeof val != "undefined") {
this.val(val);
} else {
return this.val();
}
}
if (typeof val != "undefined") {
this.text(val);
} else {
return this.text();
}
};
}(jQuery));