File: /home/mycamden.co.uk/public_html/ext_iframe/v2/resources/js/core.js
/* GLOBAL VARS */
var onloadFuncs = new Array();
/*
* EXTENDING STRING OBJECT
*/
// Trim routines
String.prototype.ltrim = function () {
return this.replace(/^(\s|\t)*/g, '');
}
String.prototype.rtrim = function () {
return this.replace(/(\s|\t)*$/g, '');
}
String.prototype.trimSpaces = function () {
return this.replace(/\s{2,}/g, ' ');
}
String.prototype.trim = function () {
return this.ltrim().rtrim().trimSpaces();
}
// Splits a 'number' string to ranged parts, delimited with commas (12345678 -> 12,345,678)
String.prototype.toRanges = function () {
var temp = this.trim();
if (temp.match(/\./)) {
var temparray = temp.split('.')
temp = temparray[0];
var fraction = temparray[1];
}
if (temp.length < 4) {
if (fraction) temp += '.'+ fraction;
return temp;
}
if (window.opera) {
var result = '';
var spool = new Array();
for (var i=temp.length; i>=0;) {
if (result.length > 2) {
spool[spool.length] = result;
result = '';
}
result += temp.charAt(i--);
}
if (result.length) {
spool[spool.length] = result;
result = '';
}
temp = spool.join();
for (var i=temp.length; i>=0;) {
result += temp.charAt(i--);
}
if (fraction) result += '.'+ fraction;
return result;
} else {
while (temp.match(/(\d{4})/)) {
temp=temp.replace(/(\d)(\d{3})((,\d{3})*)?$/, '$1,$2$3');
}
if (fraction) temp += '.'+ fraction;
return temp;
}
}
// if we have simple number -- we can create ranged one : '1234.5' --> '1,234.50' (if i==2)
Number.prototype.makeRanged = function (i) {
var nr = this.toFixed(i);
nr = nr.toString();
nr = nr.toRanges();
return nr;
}
// Makes fomatted (ranged) numbers in whole document if they're included in <span class="fmt_nr"></span>
function mass_to_ranges() {
var mass = document.getElementsByTagName('span');
for (var i=0; 'object' == typeof mass[i]; i++) {
var m = mass[i];
if (m.className == 'fmt_nr') {
if (m.firstChild && 3 == m.firstChild.nodeType) {
var tmp = parseInt(m.firstChild.nodeValue);
if ('number' == typeof tmp && tmp>999) m.firstChild.nodeValue = tmp.makeRanged();
}
}
}
}
addOnload('mass_to_ranges()');
/*
* MISCELLANEOUS FUNCTIONS
*/
// Returns an object with get-variables as keys
function populateGet() {
if (!location.search) {
return null;
}
var request = new Object();
var pairs = unescape(location.search.substr(1)).split('&');
for (var i=0; i<pairs.length; i++) {
if (pairs[i]) {
var pair = pairs[i].split('=');
request[pair[0]]=pair[1];
}
}
return request;
}
// Strips antispammers substring from address
function deMail (s) {
return s.replace(/^jobs/,'');
}
/*
* MORE DOMBASED FUNCTIONS
*/
// Just flips two nodes
function flipNodes(a, b) {
if (!a || !b) {
return false;
}
a.parentNode.insertBefore(b, a);
return true;
}
/*
* HANDLING FORMS ELEMENTS
*/
// Produce new Option item
function produceOption(data) {
var valid = typeof data=='object' && typeof data.text!='undefined' && typeof data.value!='undefined';
return new Option (valid? data.text:data, valid? data.value:data);
}
// Activate some option with 'value' in the 'select' box
function activateOption(select, value) {
if (!select || typeof select.options=='undefined' || typeof value=='undefined' || select.options.length==0) {
return false;
}
for (var i=0; i<=select.options.length; i++) {
if (select.options[i] && select.options[i].value==value) {
select.selectedIndex=i;
}
}
}
// Fills select box with options (array of... or single var: an object[text,value] or mixed-type var)
function fillSelect(select, data, offset) {
if (!select || typeof select.options=='undefined' || typeof data=='undefined') {
return false;
}
var offset = typeof offset=='undefined' ? select.options.length : 1*offset;
if (typeof data.sort!='undefined') {
for (var i in data) {
if (typeof data[i]!='function' && i!='length' ){
select.options[offset++]=produceOption(data[i]);
}
}
}
else if (typeof data!='function'){
select.options[offset]=produceOption(data);;
}
return true;
}
// Fills element value with cookie value
function fillControlFromCookie(control, cookie) {
if (control) {
if (control.type=='checkbox') {
if (getCookie(cookie)!=false) {
control.checked=true;
}
return true;
}
else if (typeof control.value!='undefined') {
control.value=getCookie(cookie);
return true;
}
return false;
}
return false;
}
// Provides global touchpoints to the all of named elements of form
// :todo: rewrite elements name handling
function populateElements(form) {
if (!form) {
return false;
}
for (var i=0; i<form.length; i++) {
var name=form.elements[i].name;
if (name) {
eval(name+'_touchpoint=form.'+name+';');
}
}
return true;
}
// Checks if cookies are on for any form. Default - header login form
function cookies_must_be_on(form,validation) {
var f = form ? form : document.login;
var valid = validation ? validation(f) : validateLogin(f);
if (navigator.cookieEnabled == false) {
parent.location = "/stuff/no_cookies.shtml";
return false;
} else {
if (valid == true) {
f.submit();
return true;
} else {
return false;
}
}
}
// proceed
function proceed(message, url) {
if (window.confirm(message)) document.location.href = url;
}
// show and hide routines
function show_block(id) {
document.getElementById(id).style.display = 'block';
}
function hide_block(id) {
document.getElementById(id).style.display = 'none';
}
// class routines
function addClass(elm, cname) {
var cnameRE = makeClassnameRE(cname);
if ( !checkClasses(elm, cnameRE) ) {
elm.className += ' '+ cname;
} else {
return false;
}
}
function removeClass(elm, cname) {
var cnameRE = makeClassnameRE(cname);
if ( checkClasses(elm, cnameRE) ) {
elm.className = elm.className.replace(cnameRE, '').trim();
} else {
return false;
}
}
function checkClasses(elm, cnameRE) {
if ( elm.className.match(cnameRE) )
return true;
else
return false;
}
function makeClassnameRE(cname) {
var tmp = new RegExp('\s?'+ cname +'\s?', 'g');
return tmp;
}
// log funcs
function generateHash(count) {
var hasher = new String();
for (i=0; i<count; i++) {
hasher += Math.floor(Math.random()*10);
}
return hasher;
}
function logSearch(sId) {
searchLogger.src = '/cgi-bin/user.cgi?module=vacancy_search&task=mark_search_as_viewed&search_id='+ sId;
}
function logPermalink(id) {
permalinkLogger.src = '/cgi-bin/user.cgi?module=vacancy_search&task=log_permalink_view&id='+ id;
}
function logClick(id, sId, type) {
var sIdLink = sId ? '&search_id='+ sId : '';
var typeLink = type ? '&type='+ type : '';
clickLogger.src = '/cgi-bin/user.cgi?module=vacancy_search&task=log_click&vacancy_id='+ id + sIdLink + typeLink +'&h='+ generateHash(5);
}
function logClickTypeOnly(id, type) {
var typeLink = type ? '&type='+ type : '';
clickLogger.src = '/cgi-bin/user.cgi?module=vacancy_search&task=log_click&vacancy_id='+ id + typeLink +'&h='+ generateHash(5);
}
function logView(msId) {
viewLogger.src = '/cgi-bin/user.cgi?module=company_profile&task=log_view&id='+ msId;
}
// window.onload multiplier
function addOnload(func) {
onloadFuncs[onloadFuncs.length] = func;
}
window.onload = function () {
for (var i=0; i<onloadFuncs.length; i++) {
eval(onloadFuncs[i]);
}
}