/*!
* kontext
* http://lab.hakim.se/kontext
* MIT licensed
*
* Copyright (C) 2013 Hakim El Hattab, http://hakim.se
*/
window.kontext = function( container ) {
// Dispatched when the current layer changes
var changed = new kontext.Signal();
// All layers in this instance of kontext
var layers = Array.prototype.slice.call( container.querySelectorAll( '.layer' ) );
// Flag if the browser is capable of handling our fancy transition
var capable = 'WebkitPerspective' in document.body.style ||
'MozPerspective' in document.body.style ||
'msPerspective' in document.body.style ||
'OPerspective' in document.body.style ||
'perspective' in document.body.style;
if( capable ) {
container.classList.add( 'capable' );
}
// Create dimmer elements to fade out preceding slides
layers.forEach( function( el, i ) {
if( !el.querySelector( '.dimmer' ) ) {
var dimmer = document.createElement( 'div' );
dimmer.className = 'dimmer';
el.appendChild( dimmer );
}
} );
/**
* Transitions to and shows the target layer.
*
* @param target index of layer or layer DOM element
*/
function show( target, direction ) {
// Make sure our listing of available layers is up to date
layers = Array.prototype.slice.call( container.querySelectorAll( '.layer' ) );
// Flag to CSS that we're ready to animate transitions
container.classList.add( 'animate' );
// Flag which direction
direction = direction || ( target > getIndex() ? 'right' : 'left' );
// Accept multiple types of targets
if( typeof target === 'string' ) target = parseInt( target );
if( typeof target !== 'number' ) target = getIndex( target );
// Enforce index bounds
target = Math.max( Math.min( target, layers.length ), 0 );
// Only navigate if were able to locate the target
if( layers[ target ] && !layers[ target ].classList.contains( 'show' ) ) {
layers.forEach( function( el, i ) {
el.classList.remove( 'left', 'right' );
el.classList.add( direction );
if( el.classList.contains( 'show' ) ) {
el.classList.remove( 'show' );
el.classList.add( 'hide1' );
}
else {
el.classList.remove( 'hide1' );
}
} );
layers[ target ].classList.add( 'show' );
changed.dispatch( layers[target], target );
}
}
/**
* Shows the previous layer.
*/
function prev() {
var index = getIndex() - 1;
show( index >= 0 ? index : layers.length + index, 'left' );
}
/**
* Shows the next layer.
*/
function next(callBack) {
show( ( getIndex() + 1 ) % layers.length, 'right' );
if(typeof(callBack)== 'function'){
callBack();
}
}
/**
* Retrieves the index of the current slide.
*
* @param of [optional] layer DOM element which index is
* to be returned
*/
function getIndex( of ) {
var index = 0;
layers.forEach( function( layer, i ) {
if( ( of && of == layer ) || ( !of && layer.classList.contains( 'show' ) ) ) {
index = i;
return;
}
} );
return index;
}
/**
* Retrieves the total number of layers.
*/
function getTotal() {
return layers.length;
}
// API
return {
show: show,
prev: prev,
next: next,
getIndex: getIndex,
getTotal: getTotal,
changed: changed
};
};
/*!
* jQuery blockUI plugin
* Version 2.66.0-2013.10.09
* Requires jQuery v1.7 or later
*
* Examples at: http://malsup.com/jquery/block/
* Copyright (c) 2007-2013 M. Alsup
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Thanks to Amir-Hossein Sobhi for some excellent contributions!
*/
;(function() {
/*jshint eqeqeq:false curly:false latedef:false */
"use strict";
function setup($) {
$.fn._fadeIn = $.fn.fadeIn;
var noOp = $.noop || function() {};
// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
// confusing userAgent strings on Vista)
var msie = /MSIE/.test(navigator.userAgent);
var ie6 = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
var mode = document.documentMode || 0;
var setExpr = $.isFunction( document.createElement('div').style.setExpression );
// global $ methods for blocking/unblocking the entire page
$.blockUI = function(opts) { install(window, opts); };
$.unblockUI = function(opts) { remove(window, opts); };
// convenience method for quick growl-like notifications (http://www.google.com/search?q=growl)
$.growlUI = function(title, message, timeout, onClose) {
var $m = $('
');
if (title) $m.append(''+title+'
');
if (message) $m.append(''+message+'
');
if (timeout === undefined) timeout = 3000;
// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
var callBlock = function(opts) {
opts = opts || {};
$.blockUI({
message: $m,
fadeIn : typeof opts.fadeIn !== 'undefined' ? opts.fadeIn : 700,
fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
centerY: false,
showOverlay: false,
onUnblock: onClose,
css: $.blockUI.defaults.growlCSS
});
};
callBlock();
var nonmousedOpacity = $m.css('opacity');
$m.mouseover(function() {
callBlock({
fadeIn: 0,
timeout: 30000
});
var displayBlock = $('.blockMsg');
displayBlock.stop(); // cancel fadeout if it has started
displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
}).mouseout(function() {
$('.blockMsg').fadeOut(1000);
});
// End konapun additions
};
// plugin method for blocking element content
$.fn.block = function(opts) {
if ( this[0] === window ) {
$.blockUI( opts );
return this;
}
var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
this.each(function() {
var $el = $(this);
if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
return;
$el.unblock({ fadeOut: 0 });
});
return this.each(function() {
if ($.css(this,'position') == 'static') {
this.style.position = 'relative';
$(this).data('blockUI.static', true);
}
this.style.zoom = 1; // force 'hasLayout' in ie
install(this, opts);
});
};
// plugin method for unblocking element content
$.fn.unblock = function(opts) {
if ( this[0] === window ) {
$.unblockUI( opts );
return this;
}
return this.each(function() {
remove(this, opts);
});
};
$.blockUI.version = 2.66; // 2nd generation blocking at no extra cost!
// override these in your code to change the default behavior and style
$.blockUI.defaults = {
// message displayed when blocking (use null for no message)
message: 'Please wait...
',
title: null, // title string; only used when theme == true
draggable: true, // only used when theme == true (requires jquery-ui.js to be loaded)
theme: false, // set to true to use with jQuery UI themes
// styles for the message when blocking; if you wish to disable
// these and use an external stylesheet then do this in your code:
// $.blockUI.defaults.css = {};
css: {
padding: 0,
margin: 0,
width: '30%',
top: '40%',
left: '35%',
textAlign: 'center',
color: '#fff',
border: '3px solid #aaa',
backgroundColor:'#000',
cursor: 'wait'
},
// minimal style set used when themes are used
themedCSS: {
width: '30%',
top: '40%',
left: '35%'
},
// styles for the overlay
overlayCSS: {
backgroundColor: '#000',
opacity: 0.6,
cursor: 'wait'
},
// style to replace wait cursor before unblocking to correct issue
// of lingering wait cursor
cursorReset: 'default',
// styles applied when using $.growlUI
growlCSS: {
width: '350px',
top: '10px',
left: '',
right: '10px',
border: 'none',
padding: '5px',
opacity: 0.6,
cursor: 'default',
color: '#fff',
backgroundColor: '#000',
'-webkit-border-radius':'10px',
'-moz-border-radius': '10px',
'border-radius': '10px'
},
// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
// (hat tip to Jorge H. N. de Vasconcelos)
/*jshint scripturl:true */
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
// force usage of iframe in non-IE browsers (handy for blocking applets)
forceIframe: false,
// z-index for the blocking overlay
baseZ: 1000,
// set these to true to have the message automatically centered
centerX: true, // <-- only effects element blocking (page block controlled via css above)
centerY: true,
// allow body element to be stetched in ie6; this makes blocking look better
// on "short" pages. disable if you wish to prevent changes to the body height
allowBodyStretch: true,
// enable if you want key and mouse events to be disabled for content that is blocked
bindEvents: true,
// be default blockUI will supress tab navigation from leaving blocking content
// (if bindEvents is true)
constrainTabKey: true,
// fadeIn time in millis; set to 0 to disable fadeIn on block
fadeIn: 200,
// fadeOut time in millis; set to 0 to disable fadeOut on unblock
fadeOut: 400,
// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
timeout: 0,
// disable if you don't want to show the overlay
showOverlay: true,
// if true, focus will be placed in the first available input field when
// page blocking
focusInput: true,
// elements that can receive focus
focusableElements: ':input:enabled:visible',
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
// no longer needed in 2012
// applyPlatformOpacityRules: true,
// callback method invoked when fadeIn has completed and blocking message is visible
onBlock: null,
// callback method invoked when unblocking has completed; the callback is
// passed the element that has been unblocked (which is the window object for page
// blocks) and the options that were passed to the unblock call:
// onUnblock(element, options)
onUnblock: null,
// callback method invoked when the overlay area is clicked.
// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
onOverlayClick: null,
// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
quirksmodeOffsetHack: 4,
// class name of the message block
blockMsgClass: 'blockMsg',
// if it is already blocked, then ignore it (don't unblock and reblock)
ignoreIfBlocked: false
};
// private data and functions follow...
var pageBlock = null;
var pageBlockEls = [];
function install(el, opts) {
var css, themedCSS;
var full = (el == window);
var msg = (opts && opts.message !== undefined ? opts.message : undefined);
opts = $.extend({}, $.blockUI.defaults, opts || {});
if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
return;
opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
if (opts.onOverlayClick)
opts.overlayCSS.cursor = 'pointer';
themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
msg = msg === undefined ? opts.message : msg;
// remove the current block (if there is one)
if (full && pageBlock)
remove(window, {fadeOut:0});
// if an existing element is being used as the blocking content then we capture
// its current place in the DOM (and current display style) so we can restore
// it when we unblock
if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
var node = msg.jquery ? msg[0] : msg;
var data = {};
$(el).data('blockUI.history', data);
data.el = node;
data.parent = node.parentNode;
data.display = node.style.display;
data.position = node.style.position;
if (data.parent)
data.parent.removeChild(node);
}
$(el).data('blockUI.onUnblock', opts.onUnblock);
var z = opts.baseZ;
// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
// layer1 is the iframe layer which is used to supress bleed through of underlying content
// layer2 is the overlay layer which has opacity and a wait cursor (by default)
// layer3 is the message content that is displayed while blocking
var lyr1, lyr2, lyr3, s;
if (msie || opts.forceIframe)
lyr1 = $('');
else
lyr1 = $('');
if (opts.theme)
lyr2 = $('');
else
lyr2 = $('');
if (opts.theme && full) {
s = '';
if ( opts.title ) {
s += '';
}
s += '
';
s += '
';
}
else if (opts.theme) {
s = '';
}
else if (full) {
s = '';
}
else {
s = '';
}
lyr3 = $(s);
// if we have a message, style it
if (msg) {
if (opts.theme) {
lyr3.css(themedCSS);
lyr3.addClass('ui-widget-content');
}
else
lyr3.css(css);
}
// style the overlay
if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
lyr2.css(opts.overlayCSS);
lyr2.css('position', full ? 'fixed' : 'absolute');
// make iframe layer transparent in IE
if (msie || opts.forceIframe)
lyr1.css('opacity',0.0);
//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
$.each(layers, function() {
this.appendTo($par);
});
if (opts.theme && opts.draggable && $.fn.draggable) {
lyr3.draggable({
handle: '.ui-dialog-titlebar',
cancel: 'li'
});
}
// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
if (ie6 || expr) {
// give body 100% height
if (full && opts.allowBodyStretch && $.support.boxModel)
$('html,body').css('height','100%');
// fix ie6 issue when blocked element has a border width
if ((ie6 || !$.support.boxModel) && !full) {
var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
var fixT = t ? '(0 - '+t+')' : 0;
var fixL = l ? '(0 - '+l+')' : 0;
}
// simulate fixed position
$.each(layers, function(i,o) {
var s = o[0].style;
s.position = 'absolute';
if (i < 2) {
if (full)
s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
else
s.setExpression('height','this.parentNode.offsetHeight + "px"');
if (full)
s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
else
s.setExpression('width','this.parentNode.offsetWidth + "px"');
if (fixL) s.setExpression('left', fixL);
if (fixT) s.setExpression('top', fixT);
}
else if (opts.centerY) {
if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
s.marginTop = 0;
}
else if (!opts.centerY && full) {
var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
s.setExpression('top',expression);
}
});
}
// show the message
if (msg) {
if (opts.theme)
lyr3.find('.ui-widget-content').append(msg);
else
lyr3.append(msg);
if (msg.jquery || msg.nodeType)
$(msg).show();
}
if ((msie || opts.forceIframe) && opts.showOverlay)
lyr1.show(); // opacity is zero
if (opts.fadeIn) {
var cb = opts.onBlock ? opts.onBlock : noOp;
var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
var cb2 = msg ? cb : noOp;
if (opts.showOverlay)
lyr2._fadeIn(opts.fadeIn, cb1);
if (msg)
lyr3._fadeIn(opts.fadeIn, cb2);
}
else {
if (opts.showOverlay)
lyr2.show();
if (msg)
lyr3.show();
if (opts.onBlock)
opts.onBlock();
}
// bind key and mouse events
bind(1, el, opts);
if (full) {
pageBlock = lyr3[0];
pageBlockEls = $(opts.focusableElements,pageBlock);
if (opts.focusInput)
setTimeout(focus, 20);
}
else
center(lyr3[0], opts.centerX, opts.centerY);
if (opts.timeout) {
// auto-unblock
var to = setTimeout(function() {
if (full)
$.unblockUI(opts);
else
$(el).unblock(opts);
}, opts.timeout);
$(el).data('blockUI.timeout', to);
}
}
// remove the block
function remove(el, opts) {
var count;
var full = (el == window);
var $el = $(el);
var data = $el.data('blockUI.history');
var to = $el.data('blockUI.timeout');
if (to) {
clearTimeout(to);
$el.removeData('blockUI.timeout');
}
opts = $.extend({}, $.blockUI.defaults, opts || {});
bind(0, el, opts); // unbind events
if (opts.onUnblock === null) {
opts.onUnblock = $el.data('blockUI.onUnblock');
$el.removeData('blockUI.onUnblock');
}
var els;
if (full) // crazy selector to handle odd field errors in ie6/7
els = $('body').children().filter('.blockUI').add('body > .blockUI');
else
els = $el.find('>.blockUI');
// fix cursor issue
if ( opts.cursorReset ) {
if ( els.length > 1 )
els[1].style.cursor = opts.cursorReset;
if ( els.length > 2 )
els[2].style.cursor = opts.cursorReset;
}
if (full)
pageBlock = pageBlockEls = null;
if (opts.fadeOut) {
count = els.length;
els.stop().fadeOut(opts.fadeOut, function() {
if ( --count === 0)
reset(els,data,opts,el);
});
}
else
reset(els, data, opts, el);
}
// move blocking element back into the DOM where it started
function reset(els,data,opts,el) {
var $el = $(el);
if ( $el.data('blockUI.isBlocked') )
return;
els.each(function(i,o) {
// remove via DOM calls so we don't lose event handlers
if (this.parentNode)
this.parentNode.removeChild(this);
});
if (data && data.el) {
data.el.style.display = data.display;
data.el.style.position = data.position;
if (data.parent)
data.parent.appendChild(data.el);
$el.removeData('blockUI.history');
}
if ($el.data('blockUI.static')) {
$el.css('position', 'static'); // #22
}
if (typeof opts.onUnblock == 'function')
opts.onUnblock(el,opts);
// fix issue in Safari 6 where block artifacts remain until reflow
var body = $(document.body), w = body.width(), cssW = body[0].style.width;
body.width(w-1).width(w);
body[0].style.width = cssW;
}
// bind/unbind the handler
function bind(b, el, opts) {
var full = el == window, $el = $(el);
// don't bother unbinding if there is nothing to unbind
if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
return;
$el.data('blockUI.isBlocked', b);
// don't bind events when overlay is not in use or if bindEvents is false
if (!full || !opts.bindEvents || (b && !opts.showOverlay))
return;
// bind anchors and inputs for mouse and key events
var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
if (b)
$(document).bind(events, opts, handler);
else
$(document).unbind(events, handler);
// former impl...
// var $e = $('a,:input');
// b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
}
// event handler to suppress keyboard/mouse events when blocking
function handler(e) {
// allow tab navigation (conditionally)
if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
if (pageBlock && e.data.constrainTabKey) {
var els = pageBlockEls;
var fwd = !e.shiftKey && e.target === els[els.length-1];
var back = e.shiftKey && e.target === els[0];
if (fwd || back) {
setTimeout(function(){focus(back);},10);
return false;
}
}
}
var opts = e.data;
var target = $(e.target);
if (target.hasClass('blockOverlay') && opts.onOverlayClick)
opts.onOverlayClick(e);
// allow events within the message content
if (target.parents('div.' + opts.blockMsgClass).length > 0)
return true;
// allow events for content that is not being blocked
return target.parents().children().filter('div.blockUI').length === 0;
}
function focus(back) {
if (!pageBlockEls)
return;
var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
if (e)
e.focus();
}
function center(el, x, y) {
var p = el.parentNode, s = el.style;
var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
if (x) s.left = l > 0 ? (l+'px') : '0';
if (y) s.top = t > 0 ? (t+'px') : '0';
}
function sz(el, p) {
return parseInt($.css(el,p),10)||0;
}
}
/*global define:true */
if (typeof define === 'function' && define.amd && define.amd.jQuery) {
define(['jquery'], setup);
} else {
setup(jQuery);
}
})();
/**
* Minimal utility for dispatching signals (events).
*/
kontext.Signal = function() {
this.listeners = [];
}
kontext.Signal.prototype.add = function( callback ) {
this.listeners.push( callback );
}
kontext.Signal.prototype.remove = function( callback ) {
var i = this.listeners.indexOf( callback );
if( i >= 0 ) this.listeners.splice( i, 1 );
}
kontext.Signal.prototype.dispatch = function() {
var args = Array.prototype.slice.call( arguments );
this.listeners.forEach( function( f, i ) {
f.apply( null, args );
} );
}
// Event scroll
$(document).scroll(function(){
var docViewTop = $(window).scrollTop();
//var docViewBottom = docViewTop + $(window).height();
if($(".main-header-menu").length > 0){
var elemTop = $(".main-header-menu").offset().top;
//var elemBottom = elemTop + $(".blog-menu").height();
if(docViewTop > elemTop){
$(".main-header-search").addClass('menu-active');
//$(".main-header-search").addClass('main-header-search-fixed');
$('.notification').css('display','none');
$('.close-notification').css('display','none');
}else{
$(".main-header-search").removeClass('menu-active');
//$(".main-header-search").removeClass('main-header-search-fixed');
$('.notification').css('display','block');
$('.close-notification').css('display','block');
}
}
});
$(document).ready(function(){
//open avatar menu
$checkAvatarMenu = 1;
$('.avatar-menu-item').on('click', function (event) {
console.log(11111);
if($checkAvatarMenu == 1){
$(this).toggleClass('open');
}
});
$('.avatar-drop-menu').click(function(){
$checkAvatarMenu = 0;
setTimeout(function(){
$checkAvatarMenu = 1;
},200)
});
$('body').on('click', function (e) {
if (!$('.avatar-menu-item').is(e.target)
&& $('.avatar-menu-item').has(e.target).length === 0
&& $('.open').has(e.target).length === 0
){
$('.avatar-menu-item').removeClass('open');
}
});
});
$(document).ready(function(){
$(document).on("change","input[name='loginRememberPassword']",function(){
if($(this).prop("checked") == true){
$(this).parent().css("color", "#4c87ed");
}else{
$(this).parent().css("color", "#4b4b4b");
}
})
//Effect for login input
$(document).on('shown.bs.modal','#loginModal', function () {
$("input[name='loginEmail']").focus()
});
//Effect for login input
$(document).on('click','.loginNameInputText',function(){
$(this).prev().focus();
});
//Effect for login input
$(document).on('focusin',".loginInputText",function(){
if(!$(this).next().hasClass('loginFocusInput')){
$(this).next().addClass('loginFocusInput');
}
});
//Effect for login input loginHasText
$(document).on('focusout',".loginInputText", outInput);
$(".loginInputText").focusout(outInput);
var checkOutInput = 1;
function outInput(){
if(checkOutInput == 1){
if($(this).next().hasClass('loginFocusInput')){
$(this).next().removeClass('loginFocusInput');
}
if($(this).next().hasClass('loginHasText') && $(this).val() == ''){
$(this).next().removeClass('loginHasText');
}
if(!$(this).next().hasClass('loginHasText') && $(this).val() != ''){
$(this).next().addClass('loginHasText');
}
checkOutInput = 0;
setTimeout(function() {
checkOutInput = 1;
}, 50);
}
}
//Effect for login button
$(document).on("keyup","input[name='loginEmail'], input[name='loginPassword']", function(){
if(checkRegisterEmail($("input[name='loginEmail']").val())
&& $("input[name='loginPassword']").val() != ''){
$(".loginButtonSubmit").addClass("loginSuccess");
}else{
$(".loginButtonSubmit").removeClass("loginSuccess");
}
});
$(document).on('keypress',"input[name='loginEmail'], input[name='loginPassword']" ,function(e){
if(e.keyCode == 13){
$( ".loginButtonSubmit" ).trigger( "click" );
}
});
//Effect for register input
$(document).on("keyup","input[name='registerName']",function(){
if(checkRegisterName($(this).val())){
$(this).parent().find('.registerCheckSuccess').css('opacity', '1');
}else{
$(this).parent().find('.registerCheckSuccess').css('opacity', '0');
}
});
$(document).on("keyup","input[name='registerEmail']",function(){
if(checkRegisterEmail($(this).val())){
$(this).parent().find('.registerCheckSuccess').css('opacity', '1');
}else{
$(this).parent().find('.registerCheckSuccess').css('opacity', '0');
}
});
$(document).on("keyup","input[name='registerPassword']",function(){
if(checkRegisterPassword($(this).val())){
$(this).parent().find('.registerCheckSuccess').css('opacity', '1');
}else{
$(this).parent().find('.registerCheckSuccess').css('opacity', '0');
}
});
//Effect for register button
$(document).on("keyup change","input[name='registerName'], input[name='registerEmail'], input[name='registerPassword'], input[name='registerCaptcha'], input[name='registerAgreeVocaRule']", function(){
if(checkRegisterName($("input[name='registerName']").val())
&& checkRegisterEmail($("input[name='registerEmail']").val())
&& checkRegisterPassword($("input[name='registerPassword']").val())
&& $("input[name='registerAgreeVocaRule']").prop("checked")){
$(".registerButtonSubmit").addClass("registerSuccess");
}else{
$(".registerButtonSubmit").removeClass("registerSuccess");
}
});
$(document).on('keyup',"#loginModal input, #registerModal input, #forgotPasswordModal input, #activeCodeModal input", function(){
$(this).parent().find(".loginErrorInput").css("display", "none");
});
$(document).on('keyup',"input[name='registerCaptcha']", function(){
$(".registerCaptchaIncorrect").css('display', 'none');
$(".registerDontEnterCaptcha").css('display', 'none');
});
//Effect for login input
$(document).on('shown.bs.modal','#registerModal', function () {
$("input[name='registerName']").focus();
$('#registerModal .registerResetCaptcha').click();
});
$(document).on("click",".loginDontAccount",function(){
$('#registerModal').modal('show');
setTimeout(function(){
$("body").addClass("modal-open");
},500);
});
$(document).on("click",".loginForgotPassword",function(){
$('#forgotPasswordModal').modal('show');
setTimeout(function(){
$("body").addClass("modal-open");
},500);
});
$(document).on('keypress',"input[name='registerName'], input[name='registerEmail'], input[name='registerPassword'], input[name='registerCaptcha']" ,function(e){
if(e.keyCode == 13){
$( ".registerButtonSubmit" ).trigger( "click" );
}
});
$(document).on("focusout","input[name='loginEmail']",function(){
var email = $("input[name='loginEmail']").val();
if(email == ''){
$(".dontEnterEmail").css('display', 'block');
return false;
}else{
$(".dontEnterEmail").css('display', 'none');
}
if(!checkRegisterEmail(email)){
$(".loginEmailInvalid").css('display', 'block');
return false;
}else{
$(".loginEmailInvalid").css('display', 'none');
}
});
$(document).on("focusout","input[name='loginPassword']",function(){
var password = $("input[name='loginPassword']").val();
if(password == ''){
$(".dontEnterPassword").css('display', 'block');
return false;
}else{
$(".dontEnterPassword").css('display', 'none');
}
});
$(document).on("focusout","input[name='registerName']",function(){
var name = $("input[name='registerName']").val();
if(name == ''){
$(".registerDontEnterName").css('display', 'block');
return false;
}else{
$(".registerDontEnterName").css('display', 'none');
}
if(name.length < 5){
$(".registerNameShort").css('display', 'block');
return false;
}else{
$(".registerNameShort").css('display', 'none');
}
if(name.length >= 255){
$(".registerNameLong").css('display', 'block');
return false;
}else{
$(".registerNameLong").css('display', 'none');
}
});
$(document).on("focusout","input[name='registerEmail']",function(){
var email = $("input[name='registerEmail']").val();
if(email == ''){
$(".registerDontEnterEmail").css('display', 'block');
return false;
}else{
$(".registerDontEnterEmail").css('display', 'none');
}
if(!checkRegisterEmail(email)){
$(".registerEmailInvalid").css('display', 'block');
return false;
}else{
$(".registerEmailInvalid").css('display', 'none');
}
});
$(document).on("focusout","input[name='registerPassword']",function(){
var password = $("input[name='registerPassword']").val();
if(password == ''){
$(".registerDontEnterPassword").css('display', 'block');
return false;
}else{
$(".registerDontEnterPassword").css('display', 'none');
}
if(password.length < 5){
$(".registerPasswordShort").css('display', 'block');
return false;
}else{
$(".registerPasswordShort").css('display', 'none');
}
if(password.length >= 255){
$(".registerPasswordLong").css('display', 'block');
return false;
}else{
$(".registerPasswordLong").css('display', 'none');
}
});
$(document).on("focusout","input[name='registerCaptcha']",function(){
var captcha = $("input[name='registerCaptcha']").val();
if(captcha == ''){
$(".registerDontEnterCaptcha").css('display', 'block');
return false;
}else{
$(".registerDontEnterCaptcha").css('display', 'none');
}
});
//Effect for login button
$(document).on("keyup","input[name='forgotPasswordEmail'], input[name='forgotPasswordCaptcha']", function(){
if(checkRegisterEmail($("input[name='forgotPasswordEmail']").val())){
$(".forgotPasswordButtonSubmit").addClass("forgotPasswordSuccess");
}else{
$(".forgotPasswordButtonSubmit").removeClass("forgotPasswordSuccess");
}
});
//Effect for login button
$(document).on("keyup","input[name='activeCodeEmail'], input[name='activeCodeCaptcha']", function(){
if(checkRegisterEmail($("input[name='activeCodeEmail']").val())){
$(".activeCodeButtonSubmit").addClass("activeCodeSuccess");
}else{
$(".activeCodeButtonSubmit").removeClass("activeCodeSuccess");
}
});
$(document).on('keypress',"input[name='forgotPasswordEmail'], input[name='forgotPasswordCaptcha']" ,function(e){
if(e.keyCode == 13){
$( ".forgotPasswordButtonSubmit" ).trigger( "click" );
}
});
$(document).on('keypress',"input[name='activeCodeEmail'], input[name='activeCodeCaptcha']" ,function(e){
if(e.keyCode == 13){
$( ".activeCodeButtonSubmit" ).trigger( "click" );
}
});
$(document).on("focusout","input[name='forgotPasswordEmail']",function(){
var email = $("input[name='forgotPasswordEmail']").val();
if(email == ''){
$(".forgotPasswordDontEnterEmail").css('display', 'block');
return false;
}else{
$(".forgotPasswordDontEnterEmail").css('display', 'none');
}
if(!checkRegisterEmail(email)){
$(".forgotPasswordEmailInvalid").css('display', 'block');
return false;
}else{
$(".forgotPasswordEmailInvalid").css('display', 'none');
}
});
$(document).on("focusout","input[name='activeCodeEmail']",function(){
var email = $("input[name='activeCodeEmail']").val();
if(email == ''){
$(".activeCodeDontEnterEmail").css('display', 'block');
return false;
}else{
$(".activeCodeDontEnterEmail").css('display', 'none');
}
if(!checkRegisterEmail(email)){
$(".activeCodeEmailInvalid").css('display', 'block');
return false;
}else{
$(".activeCodeEmailInvalid").css('display', 'none');
}
});
$(document).on("focusout","input[name='forgotPasswordCaptcha']",function(){
var captcha = $("input[name='forgotPasswordCaptcha']").val();
if(captcha == ''){
$(".forgotPasswordDontEnterCaptcha").css('display', 'block');
return false;
}else{
$(".forgotPasswordDontEnterCaptcha").css('display', 'none');
}
});
$(document).on("focusout","input[name='activeCodeCaptcha']",function(){
var captcha = $("input[name='activeCodeCaptcha']").val();
if(captcha == ''){
$(".activeCodeDontEnterCaptcha").css('display', 'block');
return false;
}else{
$(".activeCodeDontEnterCaptcha").css('display', 'none');
}
});
$(document).on('shown.bs.modal','#forgotPasswordModal', function () {
$('#forgotPasswordModal .registerResetCaptcha').click();
});
$(document).on('shown.bs.modal','#activeCodeModal', function () {
$('#activeCodeModal .registerResetCaptcha').click();
});
$(document).on("click",".forgotPasswordEnterAgain",function(){
$("#forgotPasswordErrorModal").modal('hide');
$("#forgotPasswordModal").modal('show');
setTimeout(function(){
$("body").addClass("modal-open");
},500);
});
$(document).on("click",".activeCodeEnterAgain",function(){
$("#activeCodeErrorModal").modal('hide');
$("#activeCodeModal").modal('show');
setTimeout(function(){
$("body").addClass("modal-open");
},500);
});
$(document).on('click','.btn-active-code.activeCodeSuccess',function(){
var email = $('.txt-email-reset').val();
var token = $('input[name="active_code_token"]').val();
$('.reset-password-msg').html('');
$('.reset-password-msg').removeClass('reset-password-msg-success');
$.ajax({
url : urlConfig('auth/get-back-activate'),
data : {
email : email,
active_code_token: token,
is_modal : 1
},
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST'
}).success(function(data){
if(data.email){
$('.reset-password-msg').html(data.email.toString());
return false;
}else{
$('.reset-password-msg').html('');
}
if(!data.email ){
$('.reset-password-msg').addClass('reset-password-msg-success');
$('.txt-email-reset').val('');
$('.reset-password-msg').html(data);
}
});
});
$(document).on('click','.loginForgotPassword.forgot-password a',function(){
$.ajax({
url : urlConfig('auth/get-password'),
type: 'GET'
}).success(function(data){
$('#modal-reset-password').html(data);
$('#modal-reset-password').modal();
});
});
$(document).on('click','.btn-reset-password.forgotPasswordSuccess',function(){
var email = $('.txt-email-reset-password').val();
var token = $('input[name="reset_password_token"]').val();
$('.reset-password-msg').html('');
$('.reset-password-msg').removeClass('reset-password-msg-success');
$.ajax({
url : urlConfig('auth/get-password'),
data : {
email : email,
reset_password_token: token
},
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST'
}).success(function(data){
if(data.email){
$('.reset-password-msg').html(data.email.toString());
return false;
}else{
$('.reset-password-msg').html('');
}
if(!data.email ){
$('.reset-password-msg').addClass('reset-password-msg-success');
$('.txt-email-reset-password').val('');
$('.reset-password-msg').html(data);
}
});
});
$(document).on('keypress','#sign-in-email, #sign-in-password',function(e){
if(e.keyCode == 13){
$( ".modal-sign-in-button-create" ).trigger( "click" );
}
});
$(document).on('click','.modal-sign-in-button-create.button-active',function(){
var email = $('#sign-in-email').val();
var password = $('#sign-in-password').val();
var curUrl = $('#current-url').val();
if(curUrl == undefined){
curUrl = "";
}
$('[data-toggle="tooltip"]').tooltip('hide');
$.ajax({
url : urlConfig('auth/signin'),
data : {
email : email,
password : password,
rememberPass : 1,
curUrl: curUrl
},
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST'
}).success(function(data){
if(data.length > 2000){
$('body').append(data);
$('#modal-login-system').modal('hide');
$('#register-msg-modal').modal();
}else{
if(data.email){
$('#sign-in-email').attr('title', data.email.toString());
$('#sign-in-email').attr('data-original-title', data.email.toString());
$('#sign-in-email').tooltip('show');
$('[data-toggle="tooltip"]').tooltip();
}
if(data.password){
$('#sign-in-password').attr('title', data.password.toString());
$('#sign-in-password').attr('data-original-title', data.password.toString());
$('#sign-in-password').tooltip('show');
$('[data-toggle="tooltip"]').tooltip();
}
if(!data.email && !data.password){
if(data[0] != "success"){
$('#sign-in-email').attr('title', data);
$('#sign-in-email').attr('data-original-title', data);
$('#sign-in-email').tooltip('show');
$('[data-toggle="tooltip"]').tooltip();
}else{
$('#modal-login-system').modal('hide');
if(data[1].indexOf("http") > -1){
window.location.href = data[1];
}else{
window.location.href = urlConfig(data[1]);
}
}
}
}
});
});
$(document).on('keypress','#sign-up-email, #sign-up-password, #sign-up-name',function(e){
if(e.keyCode == 13){
$( ".modal-sign-up-button-create" ).trigger( "click" );
}
});
//register system
$(document).on('click','.modal-sign-up-button-create.button-active',function(){
var registerToken = $('input[name="register_token"]').val();
var email = $('#sign-up-email').val();
var password = $('#sign-up-password').val();
var name = $('#sign-up-name').val();
var agree = 1;
var curUrl = $('#current-url').val();
if(curUrl == undefined){
curUrl = "";
}
$('[data-toggle="tooltip"]').tooltip('hide');
$.ajax({
url : urlConfig('auth/signup'),
data : {
email : email,
password : password,
full_name : name,
register_token: registerToken,
curUrl : curUrl
},
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST'
}).success(function(data){
$('#sign-up-password').val('');
if(data.email){
$('#sign-up-email').attr('title', data.email.toString());
$('#sign-up-email').attr('data-original-title', data.email.toString());
$('#sign-up-email').tooltip('show');
$('[data-toggle="tooltip"]').tooltip();
}
if(data.password){
$('#sign-up-password').attr('title', data.password.toString());
$('#sign-up-password').attr('data-original-title', data.password.toString());
$('#sign-up-password').tooltip('show');
$('[data-toggle="tooltip"]').tooltip();
}
if(!data.email && !data.password){
if(data[0] != "success"){
$('#sign-up-email').attr('title', data.toString());
$('#sign-up-email').attr('data-original-title', data.toString());
$('#sign-up-email').tooltip('show');
$('[data-toggle="tooltip"]').tooltip();
}else{
if(data[1] == ""){
window.location.href = urlConfig('my-library');
}else{
window.location.href = urlConfig(data[1]);
}
}
}
});
});
});
$(function () {
$('[data-toggle="tooltip"]').tooltip();
});
function checkRegisterName(name){
if(name.length >= 3 && name.length < 255){
return true;
}else{
return false;
}
}
function checkRegisterEmail(email){
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function checkRegisterPassword(password){
if(password.length >= 5 && password.length < 255){
return true;
}else{
return false;
}
}
function isFunction(functionToCheck) {
return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';
}
$(document).ready(function(){
/**begin menu tab mobile**/
$('.view-more-menu').click(function(){
$('.left-menu-mobile').animate({
'left': 0
},function(){
$('body').addClass('left-menu-mobile-open');
$('.left-menu-mobile-ovelay').fadeIn();
});
});
$('.left-menu-mobile-ovelay').click(function(){
$('body').removeClass('left-menu-mobile-open');
$('.left-menu-mobile-ovelay').fadeOut();
$('.left-menu-mobile').animate({
'left': '-250px'
},function(){
});
});
$('.left-menu-mobile-libray').click(function(){
$('.left-menu-mobile-libray-item').slideToggle();
});
/**end menu tab mobile**/
$('.main-header-menu .link.link-question-answer').mouseenter(function(){
$(this).find('ul').fadeIn();
});
$('.main-header-menu .link.link-question-answer').mouseleave(function(){
$(this).find('ul').fadeOut();
});
});