var MOCA_HOME_ID = 0; var MOCA_BASE_URL = 'http://www.precisiontracking.co.nz/'; var MOCA_HOME_URL = 'http://www.precisiontracking.co.nz/'; // Default table listing row bg colour var MOCA_TABLE_BG_DEFAULT = 'transparent'; // Used to stripe listing tables for readability var MOCA_TABLE_BG = 'transparent'; var MOCA_TABLE_BG_BLUE = '#eceff5'; var MOCA_TABLE_BG_DARK = '#B3B3B3'; // Highlight record being edited var MOCA_TABLE_HIGHLIGHT = '#ffc'; // Highlight just-created field var MOCA_TABLE_NEW_ROW = 'pink'; // Global ajax error handler: /* $.ajaxSetup({'error':function(req,msg,err){ mocaAlert("

" + req.responseText + "
Error: " + msg + '

', 'AJAX Error' );}}); */ $.ajaxSetup({ error:function(x,e){ if(x.status==0){ mocaAlert('No network found', 'AJAX Error'); }else if(x.status==404){ mocaAlert('Requested url not found', 'AJAX Error'); }else if(x.status==500){ mocaAlert('Internel server error', 'AJAX Error'); }else if(e=='parsererror'){ mocaAlert('Parsing JSON request failed', 'AJAX Error'); }else if(e=='timeout'){ mocaAlert('Request time out', 'AJAX Error'); }else { mocaAlert('Unknown Ajax Error:\\n'+x.responseText, 'AJAX Error'); } } }); // Click status messages to dismiss: $(document).ready(function(){ $('#statusMessage').bind('click',function(){$('#statusMessage').html('');}); $('#statusCell').bind('click',function(){$('#statusMessage').html('');}); }); // Populated by MocaForm::initJavascript() var Help = {}; // External stylesheet to be used by fck_editor. Initialised // as required in MocaForm->initJavascript() var MocaFckStyles = ''; function logout(){ window.location.href = MOCA_BASE_URL + 'sitemgr/logout.php'; } function highlightRows(table_id, no_header_row,skip){ /* Given the ID of a table element, set every alternate row's background colour to MOCA_TABLE_BG colour. Unless no_header_row is set, the first row will be left untouched. Apply the class 'nonList' to any rows you want skipped */ var odd = false; var first = true; $('TABLE#' + table_id + ' TR:not(.nonList)').map( function(){ if(!no_header_row && first){skip--;first = false;return;} if(skip){odd=true;skip--;return;} if($(this).css('display')!='none'){ $('TD',$(this)).map(function(){this.style.backgroundColor = odd ? MOCA_TABLE_BG : '';}); odd = !odd; } }) } function highlightOptions(select_id,colour ){ /* Given the ID of a select element, set every alternate option's background colour to given colour.MOCA_TABLE_BG colour. */ colour = colour ? colour : MOCA_TABLE_BG; var odd = false; $('SELECT#' + select_id + ' OPTION:not(.nonList)').map( function(){ if($(this).css('display')!='none'){ this.style.backgroundColor = odd ? colour : ''; odd = !odd; } }) } function ckeditorInit(){ // Called by page onLoad MocaForm.initJavascript(): change internal // stylesheet to that initialised by moca.form if(MocaFckStyles){ CKEDITOR.on( 'instanceReady', function( ev ) { ev.editor.config.contentsCss = MocaFckStyles; ev.editor.setData(ev.editor.getData());}); } } function deleteFromListing(frm,ids){ // Delete records from listing page - ids is either array or // comma-separated string of ids. Form is DOM element frm.id_list.value = typeof ids == 'string' ? ids : ids.join(','); frm.func.value = 'delete'; frm.submit(); } // Convenience func for use in mocaConfirm & ilk function goto(href){window.location.href=href;} function showHelp(id){ if((Help == undefined) || !Help[id]){return;} mocaAlert(Help[id],'Help'); } function mocaConfirm(str,func,title){ title = arguments[2] ? arguments[2] : 'Please Confirm'; switch('jquidialog'){ case 'jquidialog': str = str.indexOf('<')>-1 ? str : '

' + str + '

'; $('BODY').append('
' + str + '
'); $('#mocaDialog').dialog({ 'close':function(){$('#mocaDialog').remove();}, 'buttons': { 'Ok': function() {func(); $(this).dialog("close");}, 'Cancel': function() {$(this).dialog("close");} } }); break; case 'jqalert': return jAlert(str,title); break; default: return alert(str); break; } } function mocaAlert(str){ /* Custom alert. First arg is message string. Second is title. Third is function to be executed on close. Only the first is mandatory */ var title = arguments[1] ? arguments[1] : ''; var func = arguments[2] ? arguments[2] : null; switch('jquidialog'){ case 'jquidialog': str = str.indexOf('<')>-1 ? str : '

' + str + '

'; $('BODY').append('
' + str + '
'); $('#mocaDialog').dialog({ 'close':function(){if(func){func();}else{$(this).remove();}}, 'buttons': { 'Ok': function() { if(func){func();} else {$(this).remove();} } } }); if(jQuery().easydrag){ $('.ui-dialog').easydrag(); } break; case 'jqalert': return jAlert(str,title); break; default: return alert(str); break; } } function is_numeric(el){ return (typeof(el) === 'number' || typeof(el) === 'string') && el !== '' && !isNaN(el); } function plural(num){ return num==1 ? '' : 's'; } String.prototype.mocaPluralise = function(num){ return this + (num==1? '' : 's'); }; String.prototype.mocaStartsWithVowel = function(){ return this.match(/^[aeiou]/i) }; String.prototype.mocaCamelCase = function(){ var s = $.trim( this.toLowerCase() ); return s.replace( / ([a-z])/g, function(t,b) { return b.toUpperCase(); } ); }; String.prototype.mocaCapitalize = function(){ return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } ); }; String.prototype.mocaZeroPad = function(){ return this.length==1 ? ('0'+this) : this; }; Array.prototype.mocaRemove = function(x) { var pos = -1; for(var i=0; imax){max=this[i];} } return max; }; Date.prototype.mocaToString=function() { // 03-12-2010 var d = String(this.getDate());var m = String(this.getMonth()+1); var y = String(this.getYear()+1900); return d.mocaZeroPad() + '-' + m.mocaZeroPad() + '-' + y; }; $(document).ready(function(){ (function($){ $.fn.positionCenter = function(options) { var pos = { sTop : function() { return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop; }, wHeight : function() { return window.innerHeight || document.documentElement && document.documentElement.clientHeight || document.body.clientHeight; } }; return this.each(function(index) { if (index == 0) { var $this = $(this); var elHeight = $this.outerHeight(); var elTop = pos.sTop() + (pos.wHeight() / 2) - (elHeight / 2); $this.css({ position: 'absolute', margin: '0', top: elTop, left: (($(window).width() - $this.outerWidth()) / 2) + 'px' }); } }); }; })(jQuery); }) var MocaCookiesEnabled = false; function clientCookieCheck(){ // Call in form pages reliant on sessions setCookie('test_name','test_value',0); var ck = getCookie('test_name'); if(!ck || (ck != 'test_value')) { return mocaAlert('Your browser and/or network is not configured '+ 'to use "cookies". To use this site you must be able to send and receive cookies '+ 'from our server. Until you can do so you will not be able to continue.'); } else { MocaCookiesEnabled = true; deleteCookie('test_name'); } } function setCookie(name, value, expires // in X days ){ /* OPTIONAL PARAMS: path - where valid, usually '/' domain - all crossing of subdomain secure */ var today = new Date(); today.setTime( today.getTime() ); var expires_date = new Date( today.getTime() + (expires ? expires*1000*60*60*24 : 0) ); document.cookie = name+'='+escape( value ) + (expires ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString() (arguments[3]? ';path=' + arguments[3] : '' ) + (arguments[4]? ';domain=' + arguments[4] : '' ) + (arguments[5]? ';secure' : '' ); } function getCookie(name) { var start = document.cookie.indexOf( name + "=" ); var len = start + name.length + 1; if (!start && name != document.cookie.substring( 0, name.length )) {return null;} if (start == -1) {return null;} var end = document.cookie.indexOf( ';', len ); if ( end == -1 ) end = document.cookie.length; return unescape( document.cookie.substring( len, end ) ); } function deleteCookie(name){ if (getCookie(name)){ document.cookie = name + '=' + (arguments[1] ? ';path=' + arguments[1] : '') + (arguments[2] ? ';domain=' + arguments[2] : '' ) + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; } } // DEV tool function dump(obj){ var str=''; for(p in obj){ str = str + p + ' = ' + obj[p] + "\n"; } return str; }