/* Handling the communication between php processing server and local ajax engine */ /* Databap class */ var databap = { /* Constants defined with PHP * - pages * - vars.serv_name * - consts.opt_type_text * - consts.opt_type_select * - consts.max_size * - consts.authorized_exts * - consts.mask_folder */ //on load init init: function (defaultPage) { //Global constants this.consts.default_page = this.pages.chat; this.consts.process_url = 'index.php'; this.consts.app_image_folder = 'images/'; this.consts.add_code_text = 'Copier le code ici.'; this.consts.search_box_text = 'Recherche...'; this.consts.versionHtml = '
() •
'; this.consts.maxHeight = $(window).height(); this.consts.maxWidth = $(window).width(); this.consts.time = (new Date()).getTime(); //Global variables this.vars.$main = $('#main'); this.vars.$menu = $('#menu'); this.initVar('tmp', 'object'); this.initVar('loading', 'boolean'); this.initVar('pageIcon', 'string'); this.initVar('current_page', 'string'); this.initVar('current_user', 'object'); this.initVar('profile_user', 'string'); this.initVar('code', 'integer'); this.initVar('proc_id', 'integer'); this.initVar('doc_id', 'integer'); this.initVar('phrase', 'string'); this.initVar('code_container', 'string'); this.initVar('focus', 'boolean', true); this.initVar('disconnected', 'boolean'); this.initVar('mode', 'string', ''); this.initVar('search_words', 'string'); this.initVar('initLoaded', 'boolean'); this.initVar('chans_list', 'object'); //shortcuts this.$main = this.vars.$main; this.$menu = this.vars.$menu; this.consts.pageMaxHeight = databap.$main.height(); this.consts.pageMaxWidth = databap.$main.width(); //Global Events Listeners this.initSearch(); $('#form_header').submit(function(event){event.preventDefault();}); //Left menu this.initMenu(); //Events handler this.initEventHandlers(); $(document).keyup(function(e){databap.onKeyUp(e);}); $(document).keydown(function(e){databap.onKeyDown(e);}); $(document).mouseenter(function(){databap.onMouveEnter();}); $(document).mouseleave(function(){databap.onMouveLeave();}); $(window).unload(function(){databap.onQuit();}); //window.onbeforeunload = databap.onQuit; $(window).resize(databap.resizeMain); $(window).resize(); //load default page defaultPage = databap.pages[(defaultPage in databap.pages)?defaultPage:'error']; databap.switchPage(defaultPage, {}, true); }, initVar: function(varName, type, defaultValue, bForceValue) { if(typeof databap.vars[varName] === 'undefined' || bForceValue) { switch(type) { case 'boolean' :databap.vars[varName] = false;break; case 'string' :databap.vars[varName] = '';break; case 'integer' :databap.vars[varName] = 0;break; case 'array' :databap.vars[varName] = [];break; case 'object' :databap.vars[varName] = {};break; default:databap.vars[varName] = ''; } if(defaultValue) { databap.vars[varName] = defaultValue; } } }, tmp: function(sVarName, sType, oValue) { //Get if(typeof sType === 'undefined') { return (typeof databap.vars.tmp[sVarName] !== 'undefined')?databap.vars.tmp[sVarName]:'error'; } //Init else if(sType && typeof databap.vars.tmp[sVarName] === 'undefined') { switch(sType) { case 'boolean' :databap.vars.tmp[sVarName] = false;break; case 'string' :databap.vars.tmp[sVarName] = '';break; case 'integer' :databap.vars.tmp[sVarName] = 0;break; case 'array' :databap.vars.tmp[varName] = [];break; case 'object' :databap.vars.tmp[sVarName] = {};break; default:databap.vars.tmp[sVarName] = ''; } if(oValue) { databap.vars.tmp[sVarName] = oValue; } return databap.vars.tmp[sVarName]; } //Set else if(typeof sType !== 'undefined' && typeof databap.vars.tmp[sVarName] !== 'undefined') { databap.vars.tmp[sVarName] = sType; return databap.vars.tmp[sVarName]; } return null; }, initEventHandlers: function() { //Reset specific pages event catchers databap.onResize = function(){}; databap.resetSize = function(){}; databap.onKeyUp = function(e){}; databap.onKeyDown = function(e){}; databap.onMouveEnter = function(){}; databap.onMouveLeave = function(){}; databap.onQuit = function(){}; }, initSearch: function() { $SearchInputBox = $('#form_header :input#query'); $SearchInputBox.val(databap.consts.search_box_text); $SearchInputBox.css('color', databap.vars.search_words==''?'#D9E5F2':'#04357B'); $SearchInputBox.focus ( function() { if($(this).val()==databap.consts.search_box_text) $(this).val('').css('color', '#04357B'); } ); $SearchInputBox.blur ( function() { if($(this).val()=='') $(this).val(databap.consts.search_box_text).css('color', '#D9E5F2');; } ); $SearchInputBox.keyup(function(e){databap.loadSearchPage();}); $('#form_header :input#search_btn_submit').click(function(){databap.loadSearchPage();}); }, initMenu: function() { databap.$menu.hover ( databap.openMenu, function() { //if(typeof closeMenu == 'undefined' || closeMenu != true) //{ closeMenu = true; if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer); oMenuTimer = setTimeout(databap.closeMenu, 1000); //} } ); databap.$menu.find('#add_ln').click(function(){databap.loadAddPage();}); databap.$menu.find('#procedure_ln').click(function(){databap.loadProcedurePage();}); databap.$menu.find('#list_ln').click(function(){databap.loadListPage();}); databap.$menu.find('#profile_ln').click(function(){databap.loadProfilePage();}); databap.$menu.find('#chat_ln').click(function(){databap.loadChatPage();}); databap.$menu.find('#options_ln').click(function(){databap.loadOptionsPage();}); databap.$menu.find('#doc_ln').click(function(){databap.loadDocPage();}); databap.$menu.find('#log_me_out_ln').click(function(){databap.logMeOut();}); //Close menu on click databap.$menu.find('li').click(function(){closeMenu=true;if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);databap.closeMenu();}); //databap.$menu.click(function(){closeMenu=true;if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer);databap.closeMenu();}); }, openMenu: function() { //Disable closing closeMenu = false; if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer); //If not already opened / about to open if(typeof openedMenu == 'undefined' || openedMenu != true) { openedMenu = true; databap.$menu.find('#menu_title').hide(); //Main shadow databap.$main.fadeTo('fast', 0.5); //Switch useless button databap.$menu.find('.useless_button').removeClass('round').addClass('tiny_top_right'); //Move menu items var iVPos = Math.max(0, $(window).scrollTop() - 46 - 46); databap.$menu.find('#menu_items').css('margin-top', iVPos); //Expand menu databap.$menu .stop() .animate ( {width:'300px'/*, borderWidth:'10px'*/}, 'fast', function() { databap.$menu.find('#menu_box').show('fast'); } ); } }, closeMenu: function() { if(closeMenu == true) { if(typeof oMenuTimer != "undefined") clearTimeout(oMenuTimer); //Switch uselecc button databap.$menu.find('.useless_button').removeClass('tiny_top_right').addClass('round'); //Main shadow databap.$main.fadeTo('fast', 1); //Reduce menu databap.$menu .stop() .animate ( {width:'20px'/*, borderWidth:'0'*/}, 'fast', function() { databap.$menu.find('#menu_box').hide ( 'fast', function() { databap.$menu.find('#menu_title').show('fast'); } ); } ); openedMenu = false; closeMenu = false; } }, setInitEnd: function(bEnded, bAddScrollBar) { //debug('initLoaded='+bEnded); databap.vars.initLoaded = bEnded; if(databap.vars.initLoaded===true) { //this.resizeMain(); debug('resizing from setInitEnd'); databap.onResize(); //setTimeout(databap.onResize, 500); } }, addDefaultValue: function($elem, sDefaultValue) { $elem.val(sDefaultValue).css('color', '#D9E5F2'); $elem.focus ( function() { if($(this).val()==sDefaultValue) $(this).val('').css('color', '#04357B'); } ); $elem.blur ( function() { if($(this).val()=="") $(this).val(sDefaultValue).css('color', '#D9E5F2');; } ); }, getMainElem:function(elem) { return databap.$main.find(elem); }, logMeOut:function() { databap.getInfo('log_me_out', function(){document.location='';}); }, //switch to a new page with animation, without processing image switchPage: function(sNextPage, vars, bNoFade) { switch_page = true; //Init's Start databap.setInitEnd(false); if(vars===undefined) { vars = {}; } databap.vars.loading = true; $.get ( databap.getPagePath(sNextPage), vars, function(data) { databap.vars.loading = false; if(databap.vars.current_page!='') databap.onQuit(); databap.vars.current_page = sNextPage; databap.setTitle(); databap.switchContent(data, bNoFade); } ); }, switchContent: function(sContent, bNoFade) { if(bNoFade === undefined) { //fadeout every elements index=1; var $elems = databap.$main.children(); var count = $elems.size(); $elems.fadeOut ( 'fast', function() { $(this).remove(); if(index==count) { $(sContent).appendTo(databap.$main); databap.loadInit(); } else index++; } ); } else if (bNoFade == true) { databap.$main.html(sContent); databap.loadInit(); } switch_page = false; }, loadInit: function() { //save page icon this.vars.pageIcon = this.pageIcon(); //Reset specific pages event catchers this.initEventHandlers(); //Reset specific page variables this.initVar('tmp', 'object', {}, true); //Page specific Actions this.pageInit(); }, pageIcon: function(pageIcon, comment) { var $title = this.getMainElem('h1'); if ($title.size() > 0) { if(!pageIcon) { var url = $title.css('backgroundImage'); var image = url.slice(url.lastIndexOf('/')); image = image.substr(1, image.lastIndexOf(')') - 1); if(image.substr(image.length-1, 1)=='"') image=image.substr(0, image.length - 1); //bug chrome return image; } else { $title.css('backgroundImage', databap.getImagePath(pageIcon)); if(typeof comment !== undefined) { $title.attr('title', comment); } } } }, addBufferIcon: function() { this.pageIcon('processing_48.gif', 'Processing...'); }, addSuccessIcon: function() { this.pageIcon('yes_48.png', 'Opération réussie'); setTimeout('databap.resetIcon()', 2000); }, addFailIcon: function(sMsg) { if(!sMsg) sMsg = 'Echec de connexion. Essaie de refresh la page'; this.pageIcon('no_48.png', sMsg); setTimeout('databap.resetIcon()', 5000); }, resetIcon: function() { this.pageIcon(this.vars.pageIcon, ''); }, resizeMain: function() { //Back to the minimal size //databap.$main.height('auto'); //databap.resetSize(); //debug('Resize Main triggered'); //Maximize main div height to fill up the page var iPageHeight = $('body').outerHeight(true); var iWindowHeight = $(window).outerHeight(true); var iDelta = iWindowHeight - iPageHeight; if(iDelta != 0) { databap.$main.height('+='+iDelta); databap.vars.$menu.height(databap.$main.height()); } //Update size databap.consts.maxHeight = $(window).height(); databap.consts.maxWidth = $(window).width(); databap.consts.pageMaxHeight = databap.$main.height(); databap.consts.pageMaxWidth = databap.$main.width(); //Page event debug('resizing from resizeMain'); databap.onResize(); }, saveForm: function(action, $form, fOnSuccess, bProcessIcon, dataType) { var sFormVars = $form.serialize(); if(typeof bProcessIcon != 'undefined') databap.addBufferIcon(); if(!dataType) dataType = 'text'; databap.vars.loading = true; $.ajax ( { type: 'POST', url: this.getActionLink(action), data: sFormVars, success:function(result) { databap.vars.loading = false; databap.vars.disconnected = false; if(typeof bProcessIcon != 'undefined') databap.resetIcon(); fOnSuccess(result); }, error: function(jqXHR, textStatus, errorThrown) { databap.vars.loading = false; databap.vars.disconnected = true; debug('Error handler.js 331'); databap.showError(textStatus); }, dataType: dataType } ); }, getInfo: function(action, fOnSuccess, vars, type, fOnError, bProcessIcon) { if(!vars) vars = {}; if(!type) type = 'html'; if(typeof bProcessIcon != 'undefined') databap.addBufferIcon(); vars['a'] = action; databap.vars.loading = true; $.ajax ( { url: databap.consts.process_url, data: vars, success:function(result) { if(result==databap.consts.disconnected) databap.goTo(databap.vars.current_page); else if((result==databap.consts.error || typeof result.success != 'undefined' && result.success==databap.consts.error) && typeof fOnError !== 'undefined') fOnError(); else { databap.vars.loading = false; databap.vars.disconnected = false; if(typeof bProcessIcon != 'undefined') databap.resetIcon(); fOnSuccess(result); } }, error: function(jqXHR, textStatus, errorThrown) { if(jqXHR.responseText==databap.consts.disconnected) databap.goTo(databap.vars.current_page); databap.vars.loading = false; databap.vars.disconnected = true; debug('Error handler.js 361'); if(typeof bProcessIcon != 'undefined') databap.resetIcon(); if(!fOnError) { databap.showError(textStatus); debug(textStatus+' '+errorThrown); } else fOnError(textStatus); }, dataType: type } ); }, getSyncInfo: function(action, vars) { if(!vars) vars = {}; vars['a'] = action; return $.ajax ( { url: databap.consts.process_url, type: "GET", data: vars, dataType: "html", async:false, success: function(r){debug('getSyncInfo: Ok');} } ).responseText; }, showError: function(textStatus) { //debug('ERROR : '+textStatus); databap.addFailIcon(); }, getUserInfo: function(fOnSuccess) { if(typeof databap.vars.current_user.name == 'undefined') { databap.getInfo ( 'user_info', function(user) { databap.vars.current_user = user; fOnSuccess(user); }, {}, 'json' ); } else fOnSuccess(this.vars.current_user); }, /* Loading Pages */ loadProfilePage: function() { databap.vars.profile_user = ''; databap.switchPage(databap.pages.profile); }, loadChatPage: function() { databap.switchPage(databap.pages.chat); }, loadOptionsPage: function() { databap.switchPage(databap.pages.options); }, loadProcedurePage: function(iProcId) { //Reset display databap.vars.mode = ''; this.vars.proc_id = 0; //load new page if(iProcId && iProcId>0) { this.vars.proc_id = iProcId; } databap.switchPage(databap.pages.procedure); }, loadDocPage: function() { databap.vars.doc_id = 0; databap.switchPage(databap.pages.doc); }, loadAddPage: function () { databap.switchPage(databap.pages.add_code); }, loadListPage: function() { databap.switchPage(databap.pages.list); }, loadReadPage: function(idCode) { databap.vars.code = idCode; databap.switchPage(databap.pages.read_code); }, loadSearchPage: function () { if(databap.vars.current_page != databap.pages.search) { searchedWords = ''; databap.switchPage(databap.pages.search); } else { databap.search(); } }, search:function() { //search words var searchWords = $.trim($('#query').val()); //check already searched words if((window.searchedWords === undefined || searchedWords!=searchWords) && searchWords.length > 2) { //filter requests to not flood the server if(window.tempWords !== undefined && tempWords == searchWords && !databap.vars.loading) { //debug('launching search for : '+searchWords); //saving searched words searchedWords = searchWords; databap.addBufferIcon(); databap.getInfo ( 'search', function(asItems) { $Container = databap.$main.find('#list_container'); $Container.empty(); if(asItems.length==0) { $Container.append('Aucun résultat trouvé.'); } else { for(iRankId in asItems) databap.appendItem(asItems[iRankId], $Container); } databap.addSuccessIcon(); }, {keywords:searchWords}, 'json' ); } else { //debug('delayed for checking : '+searchWords); tempWords = searchWords; setTimeout('databap.loadSearchPage()', 500); } } //else debug('same words'); }, appendItem: function(asItemInfo, $Container) { //Filling up the item line $verHtml = $(databap.consts.versionHtml); $verHtml.find('#description').html(asItemInfo.description); $verHtml.find('#author_name').html(asItemInfo.name); $verHtml.find('#author_company').html(asItemInfo.company); $verHtml.find('#led').html(asItemInfo.led); //Link var sItemLink = databap.getExternalLink(asItemInfo.type, asItemInfo.id_item); $verHtml.find('#item_link').attr('href', sItemLink).attr('title', 'Lien vers '+sItemLink); $verHtml = databap.setElemTags($verHtml, asItemInfo.id_item, false, asItemInfo.type); //Display $verHtml.hide().appendTo(databap.getMainElem('#list_container')).slideDown('fast'); }, getCodeLink: function(code) { return databap.getExternalLink('code', code); }, getProcLink: function(nb) { return databap.getExternalLink('proc', nb); }, getExternalLink: function(page, id) { return databap.vars.serv_name+page+'-'+escape($.trim(id)); }, appendCode: function(codeBox, info) { databap.vars.code = info.id_code; databap.vars.phrase = (!info.phrase)?info.id_code:info.phrase; //#code_reader $codeBox = databap.setElemTags($(codeBox), [databap.vars.code]); //About code databap.getMainElem('#'+databap.getElemTag('code_lines', databap.vars.code)).html(info.code); databap.getMainElem('#'+databap.getElemTag('description', databap.vars.code)).html(info.description); //About author databap.getMainElem('#'+databap.getElemTag('author_name', databap.vars.code)).text(info.name); databap.getMainElem('#'+databap.getElemTag('author_company', databap.vars.code)).text(info.company); databap.getMainElem('#'+databap.getElemTag('led', databap.vars.code)).text(info.led); }, setElemTags: function($CodeBox, aiIds, bUpdate, sType) { databap.setElemTag($CodeBox, aiIds, bUpdate, sType); $CodeBox.find('[id]').each(function(){databap.setElemTag($(this), aiIds, bUpdate, sType);}); return $CodeBox; }, setElemTag: function($Tag, aiIds, bUpdate, sType) { var sCurTagId = $Tag.attr('id'); //Replace only ids existing in aiIds, keep the others if(bUpdate) { var aiCurTagIds = this.getElemIds(sCurTagId); for(i in aiIds) { aiCurTagIds[i] = aiIds[i]; } aiIds = aiCurTagIds; } var sNewTagId = databap.getElemTag(databap.stripElemIds(sCurTagId), aiIds, sType); $Tag.attr('id', sNewTagId); if($Tag.attr('name') != undefined) $Tag.attr('name', sNewTagId); }, getElemTag: function(sTag, aiIds, sType) { if(!sType) sType = 'c'; if(typeof aiIds != 'object') aiIds = [aiIds]; return sType+implode(databap.consts.id_sep, aiIds)+databap.consts.id_sep+sTag; }, getFirstElemId: function(sTag) { var aiIds = this.getElemIds(sTag); return aiIds[0]; }, getElemIds: function(sTag) { return array_filter(explode(databap.consts.id_sep, sTag.substr(1)), isNumeric); }, stripElemIds: function(sTag) { //var sPattern = 'c\\d+'+databap.consts.id_sep; var sType = sTag.substr(0, 1); var sPattern = this.getElemTag('', '\\d+', sType); if(this.checkRegExMatch(sPattern, sTag)) { sTag = sTag.substr(this.getElemTag('', this.getElemIds(sTag), sType).length); } return sTag; }, checkRegExMatch: function(sPattern, sText) { var oRegEx = new RegExp(sPattern, 'i'); return sText.match(oRegEx); }, setCodeContainer: function(fOnSuccess, containerId) { if(typeof databap.vars.code_container === 'undefined' || databap.vars.code_container == '') { databap.getInfo ( 'code_block', function(code_block) { databap.vars.code_container = code_block; if(containerId) databap.appendContainer(containerId); fOnSuccess(); } ); } else { if(containerId) databap.appendContainer(containerId); fOnSuccess(); } }, appendContainer: function(containerId, codeId) { if(containerId != '') { if(!codeId) { codeBoxId = 'code_reader'; container = databap.vars.code_container; } else { codeBoxId = databap.getElemTag('code_reader', codeId); container = databap.vars.code_container.replace('id="code_reader"', 'id="'+codeBoxId+'"'); } databap.getMainElem(containerId).append(container); return codeBoxId; } else { return false; } }, getImagePath: function(imageName) { return 'url("'+databap.consts.app_image_folder+imageName+'")'; }, getPagePath: function(sPageName) { return databap.consts.mask_folder+sPageName+'.html?'+databap.consts.time; }, addErrorBefore: function(msg, elem) { var msg = 'Erreur : '+msg+'.'; databap.addMsgBefore(msg, 'error', elem); }, addWarningBefore: function(msg, elem) { var msg = 'Attention : '+msg+'.'; databap.addMsgBefore(msg, 'warning', elem); }, addSuccessBefore: function(msg, elem) { var msg = 'Succès : '+msg+'.'; databap.addMsgBefore(msg, 'success', elem); }, addMsgBefore: function(msg, msgClass, elem) { var $msg = $('

'+msg+'

'); $msg.hide().insertBefore(elem).slideDown('fast').delay(5000).slideUp('fast', function(){$(this).remove();}); }, setTitle: function(extra) { if(!extra) { extra = ''; } else { extra = extra+' | '; } var page = ucwords(databap.vars.current_page.replace('_', ' ')); document.title = extra+'Databap '+chr('8226')+' '+page; }, goTo: function(page) { window.location = this.getPageLink(page); }, getPageLink: function(page) { return this.vars.serv_name+'?p='+page; }, getActionLink: function(sAction, oVars) { if(!oVars) oVars = {}; sVars = ''; for(i in oVars) { sVars += '&'+i+'='+oVars[i]; } return this.consts.process_url+'?a='+sAction+sVars; } }; /* general methods */ String.prototype.stripVowelAccent = function() { var sText = this; var rExps= [ {re:/[\xC0-\xC6]/g, ch:'A'}, {re:/[\xE0-\xE6]/g, ch:'a'}, {re:/[\xC8-\xCB]/g, ch:'E'}, {re:/[\xE8-\xEB]/g, ch:'e'}, {re:/[\xCC-\xCF]/g, ch:'I'}, {re:/[\xEC-\xEF]/g, ch:'i'}, {re:/[\xD2-\xD6]/g, ch:'O'}, {re:/[\xF2-\xF6]/g, ch:'o'}, {re:/[\xD9-\xDC]/g, ch:'U'}, {re:/[\xF9-\xFC]/g, ch:'u'}, {re:/[\xD1]/g, ch:'N'}, {re:/[\xF1]/g, ch:'n'} ]; for(var i=0, len=rExps.length; i 0; } function ucwords(text) { return (t = text + '').replace ( /^([a-z])|\s+([a-z])/g, function($1) { return $1.toUpperCase(); } ); } function getTimeString() { var currentTime = new Date(); var hours = currentTime.getHours(); var minutes = currentTime.getMinutes(); var secondes = currentTime.getSeconds(); hours = sprintf(hours, 2, '0'); minutes = sprintf(minutes, 2, '0'); secondes = sprintf(secondes, 2, '0'); return hours+':'+minutes+':'+secondes; } function sprintf(value, length, char) { var buffer = ''; missingCharsNb = Math.max(0, length - value.length); for(var i=0;i<=missingCharsNb;i++) { buffer += char; } return buffer+value; } function chr(codePt) { if (codePt > 0xFFFF) { return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF)); } return String.fromCharCode(codePt); } function explode(delimiter, string, limit) { var emptyArray = {0:''}; if(arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined') {return null;} if(delimiter === '' || delimiter === false || delimiter === null) {return false;} if(typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object') {return emptyArray;} if(delimiter === true) {delimiter = '1'; } if(!limit) {return string.toString().split(delimiter.toString());} else { // support for limit argument var splitted = string.toString().split(delimiter.toString()); var partA = splitted.splice(0, limit - 1); var partB = splitted.join(delimiter.toString()); partA.push(partB); return partA; } } function implode(glue, pieces) { var i = '', retVal = '', tGlue = ''; if(arguments.length === 1) { pieces = glue; glue = ''; } if(typeof(pieces) === 'object') { if(pieces instanceof Array) { return pieces.join(glue); } else { for (i in pieces) { retVal += tGlue + pieces[i]; tGlue = glue; } return retVal; } } else { return pieces; } } function file_exists(url) { var req = this.window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); if(!req) { throw new Error('XMLHttpRequest not supported'); } // HEAD Results are usually shorter (faster) than GET req.open('HEAD', url, false); req.send(null); if (req.status == 200) { return true; } return false; } function basename(path, suffix) { var b = path.replace(/^.*[\/\\]/g, ''); if (typeof(suffix) == 'string' && b.substr(b.length - suffix.length) == suffix) { b = b.substr(0, b.length - suffix.length); } return b; } /* //Queue element ( function($) { $.fn.delaying = function(delay, reloadAction, minLength) { var options={delay:delay, reload_action:reloadAction, min_length:minLength}; this.each ( function() { $(this).data('tsb',new Delayer($(this), options)); } ); return this; }; function Delayer(elem, options) { var self = this; var delays, min_length, previous_values, temp_values, reload_action, processing_requests; this.init = function() { delays = options.delay; min_length = options.min_length; previous_values = ''; temp_values = ''; reload_action = options.reload_action; processing_requests = false; }; this.request = function(val) { var requestOk = false; //Prevent from loading request with too few elements or twice the same request if(val.length > queue.min_length[id] && val != queue.previous_values[id]) { //Prevent from spamming server with requests and wait for value stabilization if(queue.processing_requests[id] == false && val == queue.temp_values[id]) { queue.previous_values[id] = val; requestOk = true; } else { queue.temp_values[id] = val; setTimeout(queue.reload_action[id], queue.delays[id]); } } return requestOk; }; } } ) (jQuery); */ function debug(text, bQuery) { if(window.console) console.log(text); }