Разработка сайта по составлению комплектации компьютера

Создание удобного сайта, где можно заказать все нужные устройства для сборки компьютера. Реализация методики тестирования программного продукта. Отладка программы. Модификация кода программы с целью улучшения ее эффективности. Руководство пользователя.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.03.2022
Размер файла 3,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

remix: function(arg){

return this.each(function(){

var config = this.config,

$t = $(this);

config.origOrder = [];

$t.find(config.targetSelector).each(function(){

var $th = $(this);

$th.addClass('mix_all');

config.origOrder.push($th);

});

if(!config.mixing && typeof arg !== 'undefined'){

$(config.filterSelector).removeClass('active');

$(config.filterSelector+'[data-filter="'+arg+'"]').addClass('active');

goMix(arg, null, null, $t, config);

};

});

}

};

// DECLARE PLUGIN

$.fn.mixitup = function(method, arg){

if (methods[method]) {

return methods[method].apply( this, Array.prototype.slice.call(arguments,1));

} else if (typeof method === 'object' || ! method){

return methods.init.apply( this, arguments );

};

};

/* ==== THE MAGIC ==== */

function goMix(filter, sortby, order, $cont, config){

// WE ARE NOW MIXING

clearInterval(config.failsafe);

config.mixing = true;

// APPLY ARGS TO CONFIG

config.filter = filter;

// FIRE "ONMIXSTART" CALLBACK

if(typeof config.onMixStart == 'function') {

var output = config.onMixStart.call(this, config);

// UPDATE CONFIG IF DATA RETURNED

config = output ? output : config;

};

// SHORT LOCAL VARS

var speed = config.transitionSpeed;

// REBUILD TRANSITION AND PERSPECTIVE OBJECTS

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

config.transition[a+'transition'] = 'all '+speed+'ms linear';

config.transition[a+'transform'] = a+'translate3d(0,0,0)';

config.perspective[a+'perspective'] = config.perspectiveDistance+'px';

config.perspective[a+'perspective-origin'] = config.perspectiveOrigin;

};

// CACHE TARGET ELEMENTS FOR QUICK ACCESS

var mixSelector = config.targetSelector,

$targets = $cont.find(mixSelector);

// ADD DATA OBJECT TO EACH TARGET

$targets.each(function(){

this.data = {};

});

// RE-DEFINE CONTAINER INCASE NOT IMMEDIATE PARENT OF TARGET ELEMENTS

var $par = $targets.parent();

// ADD PERSPECTIVE TO CONTAINER

$par.css(config.perspective);

// SETUP EASING

config.easingFallback = 'ease-in-out';

if(config.easing == 'smooth')config.easing = 'cubic-bezier(0.25, 0.46, 0.45, 0.94)';

if(config.easing == 'snap')config.easing = 'cubic-bezier(0.77, 0, 0.175, 1)';

if(config.easing == 'windback'){

config.easing = 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',

config.easingFallback = 'cubic-bezier(0.175, 0.885, 0.320, 1)'; // Fall-back for old webkit, with no values > 1 or < 1

};

if(config.easing == 'windup'){

config.easing = 'cubic-bezier(0.6, -0.28, 0.735, 0.045)',

config.easingFallback = 'cubic-bezier(0.6, 0.28, 0.735, 0.045)';

};

// USE LIST SPECIFIC EFFECTS IF DECLARED

var effectsOut = config.layoutMode == 'list' && config.listEffects != null ? config.listEffects : config.effects;

// BUILD EFFECTS STRINGS & SKIP IF IE8

if (Array.prototype.indexOf){

config.fade = effectsOut.indexOf('fade') > -1 ? '0' : '';

config.scale = effectsOut.indexOf('scale') > -1 ? 'scale(.01)' : '';

config.rotateZ = effectsOut.indexOf('rotateZ') > -1 ? 'rotate(180deg)' : '';

config.rotateY = effectsOut.indexOf('rotateY') > -1 ? 'rotateY(90deg)' : '';

config.rotateX = effectsOut.indexOf('rotateX') > -1 ? 'rotateX(90deg)' : '';

config.blur = effectsOut.indexOf('blur') > -1 ? 'blur(8px)' : '';

config.grayscale = effectsOut.indexOf('grayscale') > -1 ? 'grayscale(100%)' : '';

};

// DECLARE NEW JQUERY OBJECTS FOR GROUPING

var $show = $(),

$hide = $(),

filterArray = [],

multiDimensional = false;

// BUILD FILTER ARRAY(S)

if(typeof filter === 'string'){

// SINGLE DIMENSIONAL FILTERING

filterArray = buildFilterArray(filter);

} else {

// MULTI DIMENSIONAL FILTERING

multiDimensional = true;

$.each(filter,function(i){

filterArray[i] = buildFilterArray(this);

});

};

// "OR" LOGIC (DEFAULT)

if(config.filterLogic == 'or'){

if(filterArray[0] == '') filterArray.shift(); // IF FIRST ITEM IN ARRAY IS AN EMPTY SPACE, DELETE

// IF NO ELEMENTS ARE DESIRED THEN HIDE ALL VISIBLE ELEMENTS

if(filterArray.length < 1){

$hide = $hide.add($cont.find(mixSelector+':visible'));

} else {

// ELSE CHECK EACH TARGET ELEMENT FOR ANY FILTER CATEGORY:

$targets.each(function(){

var $t = $(this);

if(!multiDimensional){

// IF HAS ANY FILTER, ADD TO "SHOW" OBJECT

if($t.is('.'+filterArray.join(', .'))){

$show = $show.add($t);

// ELSE IF HAS NO FILTERS, ADD TO "HIDE" OBJECT

} else {

$hide = $hide.add($t);

};

} else {

var pass = 0;

// FOR EACH DIMENSION

$.each(filterArray,function(i){

if(this.length){

if($t.is('.'+this.join(', .'))){

pass++

};

} else if(pass > 0){

pass++;

};

});

// IF PASSES ALL DIMENSIONS, SHOW

if(pass == filterArray.length){

$show = $show.add($t);

// ELSE HIDE

} else {

$hide = $hide.add($t);

};

};

});

};

} else {

// "AND" LOGIC

// ADD "MIX_SHOW" CLASS TO ELEMENTS THAT HAVE ALL FILTERS

$show = $show.add($par.find(mixSelector+'.'+filterArray.join('.')));

// ADD "MIX_HIDE" CLASS TO EVERYTHING ELSE

$hide = $hide.add($par.find(mixSelector+':not(.'+filterArray.join('.')+'):visible'));

};

// GET TOTAL NUMBER OF ELEMENTS TO SHOW

var total = $show.length;

// DECLARE NEW JQUERY OBJECTS

var $tohide = $(),

$toshow = $(),

$pre = $();

// FOR ELEMENTS TO BE HIDDEN, IF NOT ALREADY HIDDEN THEN ADD TO OBJECTS "TOHIDE" AND "PRE"

// TO INDICATE PRE-EXISTING ELEMENTS TO BE HIDDEN

$hide.each(function(){

var $t = $(this);

if($t.css('display') != 'none'){

$tohide = $tohide.add($t);

$pre = $pre.add($t);

};

});

// IF ALL ELEMENTS ARE ALREADY SHOWN AND THERE IS NOTHING TO HIDE, AND NOT PERFORMING A LAYOUT CHANGE OR SORT:

if($show.filter(':visible').length == total && !$tohide.length && !sortby){

if(config.origLayout == config.layoutMode){

// THEN CLEAN UP AND GO HOME

resetFilter();

return false;

} else {

// IF ONLY ONE ITEM AND CHANGING FORM GRID TO LIST, MOST LIKELY POSITION WILL NOT CHANGE SO WE'RE DONE

if($show.length == 1){

if(config.layoutMode == 'list'){

$cont.addClass(config.listClass);

$cont.removeClass(config.gridClass);

$pre.css('display',config.targetDisplayList);

} else {

$cont.addClass(config.gridClass);

$cont.removeClass(config.listClass);

$pre.css('display',config.targetDisplayGrid);

};

// THEN CLEAN UP AND GO HOME

resetFilter();

return false;

}

};

};

// GET CONTAINER'S STARTING HEIGHT

config.origHeight = $par.height();

// IF THERE IS SOMETHING TO BE SHOWN:

if($show.length){

// REMOVE "FAIL CLASS" FROM CONTAINER IF EXISTS

$cont.removeClass(config.failClass);

// FOR ELEMENTS TO BE SHOWN, IF NOT ALREADY SHOWN THEN ADD TO OBJECTS "TOSHOW" ELSE ADD CLASS "MIX_PRE"

// TO INDICATE PRE-EXISTING ELEMENT

$show.each(function(){

var $t = $(this);

if($t.css('display') == 'none'){

$toshow = $toshow.add($t)

} else {

$pre = $pre.add($t);

};

});

// IF NON-ANIMATED LAYOUT MODE TRANSITION:

if((config.origLayout != config.layoutMode) && config.animateGridList == false){

// ADD NEW DISPLAY TYPES, CLEAN UP AND GO HOME

if(config.layoutMode == 'list'){

$cont.addClass(config.listClass);

$cont.removeClass(config.gridClass);

$pre.css('display',config.targetDisplayList);

} else {

$cont.addClass(config.gridClass);

$cont.removeClass(config.listClass);

$pre.css('display',config.targetDisplayGrid);

};

resetFilter();

return false;

};

// IF IE, FUCK OFF, AND THEN CLEAN UP AND GO HOME

if(!window.atob){

resetFilter();

return false;

};

// OVERRIDE ANY EXISTING TRANSITION TIMING FOR CALCULATIONS

$targets.css(config.clean);

// FOR EACH PRE-EXISTING ELEMENT, ADD STARTING POSITION TO 'ORIGPOS' ARRAY

$pre.each(function(){

this.data.origPos = $(this).offset();

});

// TEMPORARILY SHOW ALL ELEMENTS TO SHOW (THAT ARE NOT ALREADY SHOWN), WITHOUT HIDING ELEMENTS TO HIDE

// AND ADD/REMOVE GRID AND LIST CLASSES FROM CONTAINER

if(config.layoutMode == 'list'){

$cont.addClass(config.listClass);

$cont.removeClass(config.gridClass);

$toshow.css('display',config.targetDisplayList);

} else {

$cont.addClass(config.gridClass);

$cont.removeClass(config.listClass);

$toshow.css('display',config.targetDisplayGrid);

};

// FOR EACH ELEMENT NOW SHOWN, ADD ITS INTERMEDIATE POSITION TO 'SHOWINTERPOS' ARRAY

$toshow.each(function(){

this.data.showInterPos = $(this).offset();

});

// FOR EACH ELEMENT TO BE HIDDEN, BUT NOT YET HIDDEN, AND NOW MOVED DUE TO SHOWN ELEMENTS,

// ADD ITS INTERMEDIATE POSITION TO 'HIDEINTERPOS' ARRAY

$tohide.each(function(){

this.data.hideInterPos = $(this).offset();

});

// FOR EACH PRE-EXISTING ELEMENT, NOW MOVED DUE TO SHOWN ELEMENTS, ADD ITS POSITION TO 'PREINTERPOS' ARRAY

$pre.each(function(){

this.data.preInterPos = $(this).offset();

});

// SET DISPLAY PROPERTY OF PRE-EXISTING ELEMENTS INCASE WE ARE CHANGING LAYOUT MODE

if(config.layoutMode == 'list'){

$pre.css('display',config.targetDisplayList);

} else {

$pre.css('display',config.targetDisplayGrid);

};

// IF A SORT ARGUMENT HAS BEEN SENT, RUN SORT FUNCTION SO OBJECTS WILL MOVE TO THEIR FINAL ORDER

if(sortby){

sort(sortby, order, $cont, config);

};

// IF VISIBLE SORT ORDER IS THE SAME (WHICH WOULD NOT TRIGGER A TRANSITION EVENT)

if(sortby && compareArr(config.origSort, config.checkSort)){

// THEN CLEAN UP AND GO HOME

resetFilter();

return false;

};

// TEMPORARILY HIDE ALL SHOWN ELEMENTS TO HIDE

$tohide.hide();

// FOR EACH ELEMENT TO SHOW, AND NOW MOVED DUE TO HIDDEN ELEMENTS BEING REMOVED,

// ADD ITS POSITION TO 'FINALPOS' ARRAY

$toshow.each(function(i){

this.data.finalPos = $(this).offset();

});

// FOR EACH PRE-EXISTING ELEMENT NOW MOVED DUE TO HIDDEN ELEMENTS BEING REMOVED,

// ADD ITS POSITION TO 'FINALPREPOS' ARRAY

$pre.each(function(){

this.data.finalPrePos = $(this).offset();

});

// SINCE WE ARE IN OUT FINAL STATE, GET NEW HEIGHT OF CONTAINER

config.newHeight = $par.height();

// IF A SORT ARGUMENT AS BEEN SENT, RUN SORT FUNCTION 'RESET' TO MOVE ELEMENTS BACK TO THEIR STARTING ORDER

if(sortby){

sort('reset', null, $cont, config);

};

// RE-HIDE ALL ELEMENTS TEMPORARILY SHOWN

$toshow.hide();

// SET DISPLAY PROPERTY OF PRE-EXISTING ELEMENTS BACK TO THEIR

// ORIGINAL PROPERTY, INCASE WE ARE CHANGING LAYOUT MODE

$pre.css('display',config.origDisplay);

// ADD/REMOVE GRID AND LIST CLASSES FROM CONTAINER

if(config.origDisplay == 'block'){

$cont.addClass(config.listClass);

$toshow.css('display', config.targetDisplayList);

} else {

$cont.removeClass(config.listClass);

$toshow.css('display', config.targetDisplayGrid);

};

// IF WE ARE ANIMATING CONTAINER, RESET IT TO ITS STARTING HEIGHT

if(config.resizeContainer)$par.css('height', config.origHeight+'px');

// ADD TRANSFORMS TO ALL ELEMENTS TO SHOW

var toShowCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

toShowCSS[a+'transform'] = config.scale+' '+config.rotateX+' '+config.rotateY+' '+config.rotateZ;

toShowCSS[a+'filter'] = config.blur+' '+config.grayscale;

};

$toshow.css(toShowCSS);

// FOR EACH PRE-EXISTING ELEMENT, SUBTRACT ITS INTERMEDIATE POSITION FROM ITS ORIGINAL POSITION

// TO GET ITS STARTING OFFSET

$pre.each(function(){

var data = this.data,

$t = $(this);

if ($t.hasClass('mix_tohide')){

data.preTX = data.origPos.left - data.hideInterPos.left;

data.preTY = data.origPos.top - data.hideInterPos.top;

} else {

data.preTX = data.origPos.left - data.preInterPos.left;

data.preTY = data.origPos.top - data.preInterPos.top;

};

var preCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

preCSS[a+'transform'] = 'translate('+data.preTX+'px,'+data.preTY+'px)';

};

$t.css(preCSS);

});

// ADD/REMOVE GRID AND LIST CLASSES FROM CONTAINER

if(config.layoutMode == 'list'){

$cont.addClass(config.listClass);

$cont.removeClass(config.gridClass);

} else {

$cont.addClass(config.gridClass);

$cont.removeClass(config.listClass);

};

// WRAP ANIMATION FUNCTIONS IN 10ms TIMEOUT TO PREVENT RACE CONDITION

var delay = setTimeout(function(){

// APPLY TRANSITION TIMING TO CONTAINER, AND BEGIN ANIMATION TO NEW HEIGHT

if(config.resizeContainer){

var containerCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

containerCSS[a+'transition'] = 'all '+speed+'ms ease-in-out';

containerCSS['height'] = config.newHeight+'px';

};

$par.css(containerCSS);

};

// BEGIN FADING IN/OUT OF ALL ELEMENTS TO SHOW/HIDE

$tohide.css('opacity',config.fade);

$toshow.css('opacity',1);

// FOR EACH ELEMENT BEING SHOWN, CALCULATE ITS TRAJECTORY BY SUBTRACTING

// ITS INTERMEDIATE POSITION FROM ITS FINAL POSITION.

// ALSO ADD SPEED AND EASING

$toshow.each(function(){

var data = this.data;

data.tX = data.finalPos.left - data.showInterPos.left;

data.tY = data.finalPos.top - data.showInterPos.top;

var toShowCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

toShowCSS[a+'transition-property'] = a+'transform, '+a+'filter, opacity';

toShowCSS[a+'transition-timing-function'] = config.easing+', linear, linear';

toShowCSS[a+'transition-duration'] = speed+'ms';

toShowCSS[a+'transition-delay'] = '0';

toShowCSS[a+'transform'] = 'translate('+data.tX+'px,'+data.tY+'px)';

toShowCSS[a+'filter'] = 'none';

};

$(this).css('-webkit-transition', 'all '+speed+'ms '+config.easingFallback).css(toShowCSS);

});

// FOR EACH PRE-EXISTING ELEMENT, IF IT HAS A FINAL POSITION, CALCULATE

// ITS TRAJETORY BY SUBTRACTING ITS INTERMEDIATE POSITION FROM ITS FINAL POSITION.

// ALSO ADD SPEED AND EASING

$pre.each(function(){

var data = this.data

data.tX = data.finalPrePos.left != 0 ? data.finalPrePos.left - data.preInterPos.left : 0;

data.tY = data.finalPrePos.left != 0 ? data.finalPrePos.top - data.preInterPos.top : 0;

var preCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

preCSS[a+'transition'] = 'all '+speed+'ms '+config.easing;

preCSS[a+'transform'] = 'translate('+data.tX+'px,'+data.tY+'px)';

};

$(this).css('-webkit-transition', 'all '+speed+'ms '+config.easingFallback).css(preCSS);

});

// BEGIN TRANSFORMS ON ALL ELEMENTS TO BE HIDDEN

var toHideCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

toHideCSS[a+'transition'] = 'all '+speed+'ms '+config.easing+', '+a+'filter '+speed+'ms linear, opacity '+speed+'ms linear';

toHideCSS[a+'transform'] = config.scale+' '+config.rotateX+' '+config.rotateY+' '+config.rotateZ;

toHideCSS[a+'filter'] = config.blur+' '+config.grayscale;

toHideCSS['opacity'] = config.fade;

};

$tohide.css(toHideCSS);

// ALL ANIMATIONS HAVE NOW BEEN STARTED, NOW LISTEN FOR TRANSITION END:

$par.bind('webkitTransitionEnd transitionend otransitionend oTransitionEnd',function(e){

if (e.originalEvent.propertyName.indexOf('transform') > -1 || e.originalEvent.propertyName.indexOf('opacity') > -1){

if(mixSelector.indexOf('.') > -1){

// IF MIXSELECTOR IS A CLASS NAME

if($(e.target).hasClass(mixSelector.replace('.',''))){

resetFilter();

};

} else {

// IF MIXSELECTOR IS A TAG

if($(e.target).is(mixSelector)){

resetFilter();

};

};

};

});

},10);

// LAST RESORT EMERGENCY FAILSAFE

config.failsafe = setTimeout(function(){

if(config.mixing){

resetFilter();

};

}, speed + 400);

} else {

// ELSE IF NOTHING TO SHOW, AND EVERYTHING TO BE HIDDEN

// IF WE ARE RESIZING CONTAINER, SET ITS STARTING HEIGHT

if(config.resizeContainer)$par.css('height', config.origHeight+'px');

// IF IE, FUCK OFF, AND THEN GO HOME

if(!window.atob){

resetFilter();

return false;

};

// GROUP ALL ELEMENTS TO HIDE INTO JQUERY OBJECT

$tohide = $hide;

// WRAP ANIMATION FUNCTIONS IN A 10ms DELAY TO PREVENT RACE CONDITION

var delay = setTimeout(function(){

// APPLY PERSPECTIVE TO CONTAINER

$par.css(config.perspective);

// APPLY TRANSITION TIMING TO CONTAINER, AND BEGIN ANIMATION TO NEW HEIGHT

if(config.resizeContainer){

var containerCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

containerCSS[a+'transition'] = 'height '+speed+'ms ease-in-out';

containerCSS['height'] = config.minHeight+'px';

};

$par.css(containerCSS);

};

// APPLY TRANSITION TIMING TO ALL TARGET ELEMENTS

$targets.css(config.transition);

// GET TOTAL NUMBER OF ELEMENTS TO HIDE

var totalHide = $hide.length;

// IF SOMETHING TO HIDE:

if(totalHide){

// BEGIN TRANSFORMS ON ALL ELEMENTS TO BE HIDDEN

var toHideCSS = {};

for(var i = 0; i<2; i++){

var a = i==0 ? a = config.prefix : '';

toHideCSS[a+'transform'] = config.scale+' '+config.rotateX+' '+config.rotateY+' '+config.rotateZ;

toHideCSS[a+'filter'] = config.blur+' '+config.grayscale;

toHideCSS['opacity'] = config.fade;

};

$tohide.css(toHideCSS);

// ALL ANIMATIONS HAVE NOW BEEN STARTED, NOW LISTEN FOR TRANSITION END:

$par.bind('webkitTransitionEnd transitionend otransitionend oTransitionEnd',function(e){

if (e.originalEvent.propertyName.indexOf('transform') > -1 || e.originalEvent.propertyName.indexOf('opacity') > -1){

$cont.addClass(config.failClass);

resetFilter();

};

});

} else {

// ELSE, WE'RE DONE MIXING

config.mixing = false;

};

}, 10);

};

// CLEAN UP AND RESET FUNCTION

function resetFilter(){

// UNBIND TRANSITION END EVENTS FROM CONTAINER

$par.unbind('webkitTransitionEnd transitionend otransitionend oTransitionEnd');

// IF A SORT ARGUMENT HAS BEEN SENT, SORT ELEMENTS TO THEIR FINAL ORDER

if(sortby){

sort(sortby, order, $cont, config);

};

// EMPTY SORTING ARRAYS

config.startOrder = [], config.newOrder = [], config.origSort = [], config.checkSort = [];

// REMOVE INLINE STYLES FROM ALL TARGET ELEMENTS AND SLAM THE BRAKES ON

$targets.removeStyle(

config.prefix+'filter, filter, '+config.prefix+'transform, transform, opacity, display'

).css(config.clean).removeAttr('data-checksum');

// BECAUSE IE SUCKS

if(!window.atob){

$targets.css({

display: 'none',

opacity: '0'

});

};

// REMOVE HEIGHT FROM CONTAINER ONLY IF RESIZING

var remH = config.resizeContainer ? 'height' : '';

// REMOVE INLINE STYLES FROM CONTAINER

$par.removeStyle(

config.prefix+'transition, transition, '+config.prefix+'perspective, perspective, '+config.prefix+'perspective-origin, perspective-origin, '+remH

);

// ADD FINAL DISPLAY PROPERTIES AND OPACITY TO ALL SHOWN ELEMENTS

// CACHE CURRENT LAYOUT MODE & SORT FOR NEXT MIX

if(config.layoutMode == 'list'){

$show.css({display:config.targetDisplayList, opacity:'1'});

config.origDisplay = config.targetDisplayList;

} else {

$show.css({display:config.targetDisplayGrid, opacity:'1'});

config.origDisplay = config.targetDisplayGrid;

};

config.origLayout = config.layoutMode;

var wait = setTimeout(function(){

// LET GO OF THE BRAKES

$targets.removeStyle(config.prefix+'transition, transition');

// WE'RE DONE MIXING

config.mixing = false;

// FIRE "ONMIXEND" CALLBACK

if(typeof config.onMixEnd == 'function') {

var output = config.onMixEnd.call(this, config);

// UPDATE CONFIG IF DATA RETURNED

config = output ? output : config;

};

});

};

};

// SORT FUNCTION

function sort(sortby, order, $cont, config){

// COMPARE BY ATTRIBUTE

function compare(a,b) {

var sortAttrA = isNaN(a.attr(sortby) * 1) ? a.attr(sortby).toLowerCase() : a.attr(sortby) * 1,

sortAttrB = isNaN(b.attr(sortby) * 1) ? b.attr(sortby).toLowerCase() : b.attr(sortby) * 1;

if (sortAttrA < sortAttrB)

return -1;

if (sortAttrA > sortAttrB)

return 1;

return 0;

};

// REBUILD DOM

function rebuild(element){

if(order == 'asc'){

$sortWrapper.prepend(element).prepend(' ');

} else {

$sortWrapper.append(element).append(' ');

};

};

// RANDOMIZE ARRAY

function arrayShuffle(oldArray){

var newArray = oldArray.slice();

var len = newArray.length;

var i = len;

while (i--){

var p = parseInt(Math.random()*len);

var t = newArray[i];

newArray[i] = newArray[p];

newArray[p] = t;

};

return newArray;

};

// SORT

$cont.find(config.targetSelector).wrapAll('<div class="mix_sorter"/>');

var $sortWrapper = $cont.find('.mix_sorter');

if(!config.origSort.length){

$sortWrapper.find(config.targetSelector+':visible').each(function(){

$(this).wrap('<s/>');

config.origSort.push($(this).parent().html().replace(/\s+/g, ''));

$(this).unwrap();

});

};

$sortWrapper.empty();

if(sortby == 'reset'){

$.each(config.startOrder,function(){

$sortWrapper.append(this).append(' ');

});

} else if(sortby == 'default'){

$.each(config.origOrder,function(){

rebuild(this);

});

} else if(sortby == 'random'){

if(!config.newOrder.length){

config.newOrder = arrayShuffle(config.startOrder);

};

$.each(config.newOrder,function(){

$sortWrapper.append(this).append(' ');

});

} else if(sortby == 'custom'){

$.each(order, function(){

rebuild(this);

});

} else {

// SORT BY ATTRIBUTE

if(typeof config.origOrder[0].attr(sortby) === 'undefined'){

console.log('No such attribute found. Terminating');

return false;

};

if(!config.newOrder.length){

$.each(config.origOrder,function(){

config.newOrder.push($(this));

});

config.newOrder.sort(compare);

};

$.each(config.newOrder,function(){

rebuild(this);

});

};

config.checkSort = [];

$sortWrapper.find(config.targetSelector+':visible').each(function(i){

var $t = $(this);

if(i == 0){

// PREVENT COMPARE RETURNING FALSE POSITIVES ON ELEMENTS WITH NO CLASS/ATTRIBUTES

$t.attr('data-checksum','1');

};

$t.wrap('<s/>');

config.checkSort.push($t.parent().html().replace(/\s+/g, ''));

$t.unwrap();

});

$cont.find(config.targetSelector).unwrap();

};

// FIND VENDOR PREFIX

function prefix(el) {

var prefixes = ["Webkit", "Moz", "O", "ms"];

for (var i = 0; i < prefixes.length; i++){

if (prefixes[i] + "Transition" in el.style){

return prefixes[i];

};

};

return "transition" in el.style ? "" : false;

};

// REMOVE SPECIFIC STYLES

$.fn.removeStyle = function(style){

return this.each(function(){

var obj = $(this);

style = style.replace(/\s+/g, '');

var styles = style.split(',');

$.each(styles,function(){

var search = new RegExp(this.toString() + '[^;]+;?', 'g');

obj.attr('style', function(i, style){

if(style) return style.replace(search, '');

});

});

});

};

// COMPARE ARRAYS

function compareArr(a,b){

if (a.length != b.length) return false;

for (var i = 0; i < b.length; i++){

if (a[i].compare) {

if (!a[i].compare(b[i])) return false;

};

if (a[i] !== b[i]) return false;

};

return true;

};

// BUILD FILTER ARRAY(S)

function buildFilterArray(str){

// CLEAN FILTER STRING

str = str.replace(/\s{2,}/g, ' ');

// FOR EACH PEROID SEPERATED CLASS NAME, ADD STRING TO FILTER ARRAY

var arr = str.split(' ');

// IF ALL, REPLACE WITH MIX_ALL

$.each(arr,function(i){

if(this == 'all')arr[i] = 'mix_all';

});

if(arr[0] == "")arr.shift();

return arr;

};

})(jQuery);

if (typeof Object.create !== "function") {

Object.create = function (obj) {

function F() {}

F.prototype = obj;

return new F();

};

}

(function ($, window, document) {

var Carousel = {

init : function (options, el) {

var base = this;

base.$elem = $(el);

base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options);

base.userOptions = options;

base.loadContent();

},

loadContent : function () {

var base = this, url;

function getData(data) {

var i, content = "";

if (typeof base.options.jsonSuccess === "function") {

base.options.jsonSuccess.apply(this, [data]);

} else {

for (i in data.owl) {

if (data.owl.hasOwnProperty(i)) {

content += data.owl[i].item;

}

}

base.$elem.html(content);

}

base.logIn();

}

if (typeof base.options.beforeInit === "function") {

base.options.beforeInit.apply(this, [base.$elem]);

}

if (typeof base.options.jsonPath === "string") {

url = base.options.jsonPath;

$.getJSON(url, getData);

} else {

base.logIn();

}

},

logIn : function () {

var base = this;

base.$elem.data("owl-originalStyles", base.$elem.attr("style"));

base.$elem.data("owl-originalClasses", base.$elem.attr("class"));

base.$elem.css({opacity: 0});

base.orignalItems = base.options.items;

base.checkBrowser();

base.wrapperWidth = 0;

base.checkVisible = null;

base.setVars();

},

setVars : function () {

var base = this;

if (base.$elem.children().length === 0) {return false; }

base.baseClass();

base.eventTypes();

base.$userItems = base.$elem.children();

base.itemsAmount = base.$userItems.length;

base.wrapItems();

base.$owlItems = base.$elem.find(".owl-item");

base.$owlWrapper = base.$elem.find(".owl-wrapper");

base.playDirection = "next";

base.prevItem = 0;

base.prevArr = [0];

base.currentItem = 0;

base.customEvents();

base.onStartup();

},

onStartup : function () {

var base = this;

base.updateItems();

base.calculateAll();

base.buildControls();

base.updateControls();

base.response();

base.moveEvents();

base.stopOnHover();

base.owlStatus();

if (base.options.transitionStyle !== false) {

base.transitionTypes(base.options.transitionStyle);

}

if (base.options.autoPlay === true) {

base.options.autoPlay = 5000;

}

base.play();

base.$elem.find(".owl-wrapper").css("display", "block");

if (!base.$elem.is(":visible")) {

base.watchVisibility();

} else {

base.$elem.css("opacity", 1);

}

base.onstartup = false;

base.eachMoveUpdate();

if (typeof base.options.afterInit === "function") {

base.options.afterInit.apply(this, [base.$elem]);

}

},

eachMoveUpdate : function () {

var base = this;

if (base.options.lazyLoad === true) {

base.lazyLoad();

}

if (base.options.autoHeight === true) {

base.autoHeight();

}

base.onVisibleItems();

if (typeof base.options.afterAction === "function") {

base.options.afterAction.apply(this, [base.$elem]);

}

},

updateVars : function () {

var base = this;

if (typeof base.options.beforeUpdate === "function") {

base.options.beforeUpdate.apply(this, [base.$elem]);

}

base.watchVisibility();

base.updateItems();

base.calculateAll();

base.updatePosition();

base.updateControls();

base.eachMoveUpdate();

if (typeof base.options.afterUpdate === "function") {

base.options.afterUpdate.apply(this, [base.$elem]);

}

},

reload : function () {

var base = this;

window.setTimeout(function () {

base.updateVars();

}, 0);

},

watchVisibility : function () {

var base = this;

if (base.$elem.is(":visible") === false) {

base.$elem.css({opacity: 0});

window.clearInterval(base.autoPlayInterval);

window.clearInterval(base.checkVisible);

} else {

return false;

}

base.checkVisible = window.setInterval(function () {

if (base.$elem.is(":visible")) {

base.reload();

base.$elem.animate({opacity: 1}, 200);

window.clearInterval(base.checkVisible);

}

}, 500);

},

wrapItems : function () {

var base = this;

base.$userItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>");

base.$elem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">");

base.wrapperOuter = base.$elem.find(".owl-wrapper-outer");

base.$elem.css("display", "block");

},

baseClass : function () {

var base = this,

hasBaseClass = base.$elem.hasClass(base.options.baseClass),

hasThemeClass = base.$elem.hasClass(base.options.theme);

if (!hasBaseClass) {

base.$elem.addClass(base.options.baseClass);

}

if (!hasThemeClass) {

base.$elem.addClass(base.options.theme);

}

},

updateItems : function () {

var base = this, width, i;

if (base.options.responsive === false) {

return false;

}

if (base.options.singleItem === true) {

base.options.items = base.orignalItems = 1;

base.options.itemsCustom = false;

base.options.itemsDesktop = false;

base.options.itemsDesktopSmall = false;

base.options.itemsTablet = false;

base.options.itemsTabletSmall = false;

base.options.itemsMobile = false;

return false;

}

width = $(base.options.responsiveBaseWidth).width();

if (width > (base.options.itemsDesktop[0] || base.orignalItems)) {

base.options.items = base.orignalItems;

}

if (base.options.itemsCustom !== false) {

//Reorder array by screen size

base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; });

for (i = 0; i < base.options.itemsCustom.length; i += 1) {

if (base.options.itemsCustom[i][0] <= width) {

base.options.items = base.options.itemsCustom[i][1];

}

}

} else {

if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) {

base.options.items = base.options.itemsDesktop[1];

}

if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) {

base.options.items = base.options.itemsDesktopSmall[1];

}

if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) {

base.options.items = base.options.itemsTablet[1];

}

if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) {

base.options.items = base.options.itemsTabletSmall[1];

}

if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) {

base.options.items = base.options.itemsMobile[1];

}

}

//if number of items is less than declared

if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) {

base.options.items = base.itemsAmount;

}

},

response : function () {

var base = this,

smallDelay,

lastWindowWidth;

if (base.options.responsive !== true) {

return false;

}

lastWindowWidth = $(window).width();

base.resizer = function () {

if ($(window).width() !== lastWindowWidth) {

if (base.options.autoPlay !== false) {

window.clearInterval(base.autoPlayInterval);

}

window.clearTimeout(smallDelay);

smallDelay = window.setTimeout(function () {

lastWindowWidth = $(window).width();

base.updateVars();

}, base.options.responsiveRefreshRate);

}

};

$(window).resize(base.resizer);

},

updatePosition : function () {

var base = this;

base.jumpTo(base.currentItem);

if (base.options.autoPlay !== false) {

base.checkAp();

}

},

appendItemsSizes : function () {

var base = this,

roundPages = 0,

lastItem = base.itemsAmount - base.options.items;

base.$owlItems.each(function (index) {

var $this = $(this);

$this

.css({"width": base.itemWidth})

.data("owl-item", Number(index));

if (index % base.options.items === 0 || index === lastItem) {

if (!(index > lastItem)) {

roundPages += 1;

}

}

$this.data("owl-roundPages", roundPages);

});

},

appendWrapperSizes : function () {

var base = this,

width = base.$owlItems.length * base.itemWidth;

base.$owlWrapper.css({

"width": width * 2,

"left": 0

});

base.appendItemsSizes();

},

calculateAll : function () {

var base = this;

base.calculateWidth();

base.appendWrapperSizes();

base.loops();

base.max();

},

calculateWidth : function () {

var base = this;

base.itemWidth = Math.round(base.$elem.width() / base.options.items);

},

max : function () {

var base = this,

maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1;

if (base.options.items > base.itemsAmount) {

base.maximumItem = 0;

maximum = 0;

base.maximumPixels = 0;

} else {

base.maximumItem = base.itemsAmount - base.options.items;

base.maximumPixels = maximum;

}

return maximum;

},

min : function () {

return 0;

},

loops : function () {

var base = this,

prev = 0,

elWidth = 0,

i,

item,

roundPageNum;

base.positionsInArray = [0];

base.pagesInArray = [];

for (i = 0; i < base.itemsAmount; i += 1) {

elWidth += base.itemWidth;

base.positionsInArray.push(-elWidth);

if (base.options.scrollPerPage === true) {

item = $(base.$owlItems[i]);

roundPageNum = item.data("owl-roundPages");

if (roundPageNum !== prev) {

base.pagesInArray[prev] = base.positionsInArray[i];

prev = roundPageNum;

}

}

}

},

buildControls : function () {

var base = this;

if (base.options.navigation === true || base.options.pagination === true) {

base.owlControls = $("<div class=\"owl-controls\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem);

}

if (base.options.pagination === true) {

base.buildPagination();

}

if (base.options.navigation === true) {

base.buildButtons();

}

},

buildButtons : function () {

var base = this,

buttonsWrapper = $("<div class=\"owl-buttons\"/>");

base.owlControls.append(buttonsWrapper);

base.buttonPrev = $("<div/>", {

"class" : "owl-prev",

"html" : base.options.navigationText[0] || ""

});

base.buttonNext = $("<div/>", {

"class" : "owl-next",

"html" : base.options.navigationText[1] || ""

});

buttonsWrapper

.append(base.buttonPrev)

.append(base.buttonNext);

buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) {

event.preventDefault();

});

buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) {

event.preventDefault();

if ($(this).hasClass("owl-next")) {

base.next();

} else {

base.prev();

}

});

},

buildPagination : function () {

var base = this;

base.paginationWrapper = $("<div class=\"owl-pagination\"/>");

base.owlControls.append(base.paginationWrapper);

base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) {

event.preventDefault();

if (Number($(this).data("owl-page")) !== base.currentItem) {

base.goTo(Number($(this).data("owl-page")), true);

}

});

},

updatePagination : function () {

var base = this,

counter,

lastPage,

lastItem,

i,

paginationButton,

paginationButtonInner;

if (base.options.pagination === false) {

return false;

}

base.paginationWrapper.html("");

counter = 0;

lastPage = base.itemsAmount - base.itemsAmount % base.options.items;

for (i = 0; i < base.itemsAmount; i += 1) {

if (i % base.options.items === 0) {

counter += 1;

if (lastPage === i) {

lastItem = base.itemsAmount - base.options.items;

}

paginationButton = $("<div/>", {

"class" : "owl-page"

});

paginationButtonInner = $("<span></span>", {

"text": base.options.paginationNumbers === true ? counter : "",

"class": base.options.paginationNumbers === true ? "owl-numbers" : ""

});

paginationButton.append(paginationButtonInner);

paginationButton.data("owl-page", lastPage === i ? lastItem : i);

paginationButton.data("owl-roundPages", counter);

base.paginationWrapper.append(paginationButton);

}

}

base.checkPagination();

},

checkPagination : function () {

var base = this;

if (base.options.pagination === false) {

return false;

}

base.paginationWrapper.find(".owl-page").each(function () {

if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) {

base.paginationWrapper

.find(".owl-page")

.removeClass("active");

$(this).addClass("active");

}

});

},

checkNavigation : function () {

var base = this;

if (base.options.navigation === false) {

return false;

}

if (base.options.rewindNav === false) {

if (base.currentItem === 0 && base.maximumItem === 0) {

base.buttonPrev.addClass("disabled");

base.buttonNext.addClass("disabled");

} else if (base.currentItem === 0 && base.maximumItem !== 0) {

base.buttonPrev.addClass("disabled");

base.buttonNext.removeClass("disabled");

} else if (base.currentItem === base.maximumItem) {

base.buttonPrev.removeClass("disabled");

base.buttonNext.addClass("disabled");

} else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) {

base.buttonPrev.removeClass("disabled");

base.buttonNext.removeClass("disabled");

}

}

},

updateControls : function () {

var base = this;

base.updatePagination();

base.checkNavigation();

if (base.owlControls) {

if (base.options.items >= base.itemsAmount) {

base.owlControls.hide();

} else {

base.owlControls.show();

}

}

},

destroyControls : function () {

var base = this;

if (base.owlControls) {

base.owlControls.remove();

}

},

next : function (speed) {

...


Подобные документы

  • Выбор инструментальных и программных средств для создания сайта. Структура программного продукта. Создание сайта при помощи программы WordPress. Тестирование разработанной программы. Разработка структуры и дизайна сайта. Наполнение сайта контентом.

    курсовая работа [1,0 M], добавлен 09.01.2014

  • Исследование классификации, средств реализации и разработки сайтов. Сравнительная характеристика конструкторов сайтов. Руководство пользователя. Заполнение материалом и отладка работы страниц. Травмирующие и вредные факторы для пользователя компьютера.

    дипломная работа [2,6 M], добавлен 22.01.2015

  • Разработка структуры базы данных сайта. Установка и настройка требуемого программного обеспечения. Анализ интерфейса программы. Создание формы обратной связи. Формирование дизайна, соответствующего требованиям заказчика. Выбор методики тестирования.

    дипломная работа [2,0 M], добавлен 22.03.2018

  • Основные требования к составу и параметрам технических средства. Верификация программного продукта. Расширение функционала программы и его реализация. Отладка и тестирование программного продукта. Тестирование программы в граничных и реальных условиях.

    курсовая работа [1,3 M], добавлен 29.12.2014

  • Понятие web-сайта и его типы. Обзор программ для создание web-сайта. Описание конструктора Jimdo. Алгоритм создания сайта для ОАО "Каменск-Уральский литейный завод" с целью уведомления посетителей о выпускаемой продукции. Руководство пользователя.

    курсовая работа [3,8 M], добавлен 05.06.2015

  • Характеристика структуры, программного обеспечения и основных бизнес–процессов ЗАГСа. Разработка базы данных и структуры сайта для молодоженов. Управление аккаунтом пользователя, описание страниц сайта. Расчёт экономических затрат на создание сайта.

    дипломная работа [448,5 K], добавлен 14.01.2013

  • Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.

    курсовая работа [501,4 K], добавлен 07.12.2016

  • Создание Web-сайта "Расчет коммунальных услуг ЖКХ", факторы, определяющие принятое решение. Математический алгоритм программного продукта, техническое обеспечение. Результаты тестирования сайта gkh-tariff.ru для учета затрат ЖКХ, внедрение в Интернет.

    курсовая работа [147,6 K], добавлен 01.03.2013

  • Проектирование информационной системы для удобного ведения учета товара. Функциональная модель предметной области. Обоснование выбора языка программирования. Описание программы, руководство пользователя. Протокол тестирования программного продукта.

    курсовая работа [537,6 K], добавлен 18.09.2014

  • Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.

    дипломная работа [1,5 M], добавлен 12.06.2009

  • Разработка и программная реализация сайта и базы данных, наполнение базы данных тестовой информацией о товарах. Инструментальные средства создания сайта. Организация тестирования сайта, модуль визуализации интерфейса. Создание запросов в базе данных SQL.

    курсовая работа [1,4 M], добавлен 24.12.2012

  • Общее описание разрабатываемого веб-сайта. Создание модуля учета средств для разработки программного продукта. Разработка дизайна. Редактирование веб-сайта в CMS Worspress. Разработка методических указаний для продукта. Система управления базами данных.

    дипломная работа [1,8 M], добавлен 10.07.2017

  • Понятие web-сайта и их типы. Программы для создания web-сайта. Описание структуры проекта. Алгоритм создания сайта. Описание конструктора Jimdo. Языки программирования серверного выполнения. Создание полнофункционального веб-сайта для ОАО "КУЛЗ".

    курсовая работа [3,5 M], добавлен 05.06.2015

  • Теоретические основы разработки web-сайта. Сбор и анализ данных для качественной реализации программного продукта. Разработка модели сайта магазина детских игрушек. Графическое оформление страниц. Выбор средств и технологий, тестирование и отладка.

    курсовая работа [349,2 K], добавлен 09.04.2015

  • Формулировка требований к разработке и оформлению информационного сайта предприятия. Описание архитектуры сайта, меню навигации и алгоритма работы, листинг программного кода. Выбор серверной части и процесс отладки. Методы продвижения сайта в Интернете.

    курсовая работа [4,6 M], добавлен 18.01.2014

  • Выбор средства реализации программного продукта. Разработка программного комплекса (ПК). Руководство администратору и пользователю к нему. CMS Joomla - программа, включающая в себя различные инструменты для изготовления веб-сайта. Обработка ошибок в ПК.

    курсовая работа [695,6 K], добавлен 19.06.2010

  • Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.

    курсовая работа [606,7 K], добавлен 19.01.2012

  • Структура и внутреннее содержание разрабатываемого сайта, основные требования к нему, потребители и целевая аудитория, дизайн и стилистика. Создание прототипа сайта консалтинговой компании "Финанс-консалт" с помощью программного продукта Axure RP PRo.

    контрольная работа [1,1 M], добавлен 10.01.2016

  • Сравнение языка Php с другими языками программирования web-приложений. Язык разметки гипертекстовых страниц Html. Технология Macromedia Flash, её преимущества и недостатки. Этапы создания флеш-сайта, руководство пользователя и листинг программы.

    дипломная работа [2,3 M], добавлен 04.10.2013

  • Определение целевой аудитории и схема логической связи между страницами, анализ персонального сайта Джима Керри. Создание собственного сайта с целью самопрезентации, его дизайн и план тестирования. Выбор программных средств для реализации проекта.

    дипломная работа [6,5 M], добавлен 15.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.