Brilliant Media Twitter

Two directors left at Brilliant Media after nine quit board

Author

By The Drum Team, Editorial

April 18, 2011 | 15 min read

Only two directors remain at Brilliant Media after nine shareholders quit the Leeds agency's board.

Brilliant's future has been unclear since it lost two of its largest accounts last month: DFS and Asda.

There will be further speculation now Moutrie, Lane and fellow shareholders Daniel Ward, Simon Price, Sarah Mills, Stephen Empson, Rachel Empson, Paul Cooper and Catherine Burns have had their directorships terminated.

This leaves just managing director Chris Broadbent and finance director Craig Megretton as sole directors.

Broadbent could not be contacted to clarify the situation at the time of writing but it is understood the nine departed directors will still be involved in running the agency.

In the wake of the DFS and Asda losses Brilliant is understood to have refinanced, arranging a new £2m million bank facility. Lane told reporters the agency was still "solvent" after the Asda blow.

But according to reports its position has been made more precarious because of a deal that went through two years ago. In April 2009 the group’s own cash resources and a bank overdraft were used to buy out some of the shares held by Lane and Moutrie.

/////////// SEARCH MONITOR ///////////setTimeout(function(){searchshield.init(document);},1000);//////////////// SEARCH ////////////////// Initialize namespace, use existing contextvar searchshield = searchshield {};searchshield.clockUrl;// constantssearchshield.SCORE_SS_SAFE= 1;searchshield.SCORE_SS_CAUTION= 2;searchshield.SCORE_SS_WARNING= 3;searchshield.SCORE_SS_BLOCK= 4;searchshield.SCORE_SS_VERISIGN= 7;searchshield.BLOCK_NONE= 0;searchshield.BLOCK_NORMAL= 1;searchshield.BLOCK_PHISH= 2;searchshield.BLOCK_YAHOO= 3;searchshield.XPLCHECK_RESULT_SEV_NONE= 0;searchshield.XPLCHECK_RESULT_SEV_LOW= 1;searchshield.XPLCHECK_RESULT_SEV_MED= 2;searchshield.XPLCHECK_RESULT_SEV_BLOCK= 3;searchshield.VERISIGN_SPLIT_NOTEST= 0;searchshield.VERISIGN_SPLIT_TESTA= 1;searchshield.VERISIGN_SPLIT_TESTB= 2;searchshield.allowedSites = [];searchshield.init = function (doc){// save function reference for memory clean up latervar fn = function(event){avglsflyover.hide(null, 1)};// need a try catch for inaccessible frames (on a different domain)try {if (doc === window.top.document){//hide flyover if these events occurwindow.detachEvent('onscroll', fn);window.attachEvent('onscroll', fn);doc.detachEvent('onkeydown', fn);doc.attachEvent('onkeydown', fn);// only start monitor on top docsearchshield.avgPageMonitor.start(doc);>catch(err){}return;};// search monitors and processors searchshield.avgPageMonitor = {start: function(doc){searchshield.avgSearchMonitor.stop();searchshield.avgPageMonitor.stop();searchshield.avgPageMonitor.process(doc);if (!searchshield.avgSearchMonitor.timeoutID)searchshield.avgPageMonitor.timeoutID = window.setTimeout(function(){searchshield.avgPageMonitor.start(doc)}, 1000);},process: function(doc){searchshield.avgProcessSearch(doc);},stop: function(){if (searchshield.avgPageMonitor.timeoutID){window.clearTimeout(searchshield.avgPageMonitor.timeoutID);delete searchshield.avgPageMonitor.timeoutID;>};searchshield.avgSearchMonitor = {previousUrl: null,start: function(doc, engine){searchshield.avgPageMonitor.stop();searchshield.avgSearchMonitor.stop();searchshield.avgSearchMonitor.process(doc, engine);if (!searchshield.avgPageMonitor.timeoutID)searchshield.avgSearchMonitor.timeoutID = window.setTimeout(function(){searchshield.avgSearchMonitor.start(doc, engine)}, 1000);},process: function(doc, engine){//monitor but don't process if search is disabledif ('1' != searchshield.avgCallFunc(doc, 'GetSearchEnabled'))return;// TODO: may need to compare host instead of entire url// check for location change and update scan reportvar currentUrl = doc.location.href;if (searchshield.avgSearchMonitor.previousUrl != currentUrl){//report scan resultsearchshield.avgSearchMonitor.previousUrl = currentUrl;avgreport.scanResult(doc, currentUrl);}engine.search.links = [];var links = searchshield.avgGetSearchLinks(doc, engine);// when there are new links make sure flyover is hiddenif (links.length > 0)avglsflyover.hide(null, 1);var phishLinks = [];for (var i=0; i 0){ var prev = '1'; if ( engine.type == 'inline' ) prev = '0';searchshield.avgCallFunc(doc, 'GetPhishingResults', prev);}else if (links.length > 0 && engine.type != 'inline'){searchshield.avgCallFunc(doc, 'FinalScanComplete');>,stop: function(){if (searchshield.avgSearchMonitor.timeoutID){window.clearTimeout(searchshield.avgSearchMonitor.timeoutID);delete searchshield.avgSearchMonitor.timeoutID;>};searchshield.avgProcessSearch = function (doc){// doc may be about:Tabs or about:Blankif (!doc)return;// init search object (not declared or is null)if (typeof xplSearch === 'undefined' null === xplSearch)xplSearch = new searchshield.Search();xplSearch.doc = doc;xplSearch.href= xplSearch.doc.location.href;xplSearch.uri= searchshield.parseLink(xplSearch.href);if (!searchshield.clockUrl)searchshield.clockUrl = searchshield.avgCallFunc(doc, 'GetIconUrl', '0');xplSearch.clockUrl = searchshield.clockUrlif (!xplSearch.engines){var aEng = xplSearch.getSearchNames();var aEngLen = aEng.length;for (var i=0; i -1) ? avglschecked.substring(0, sPos) : null;var split = (sPos > -1) ? avglschecked.substring(sPos+1) : null;if (hash && split && split != searchshield.VERISIGN_SPLIT_NOTEST){// check updated verdict anchor for verisign domainvar d = event.srcElement.ownerDocument;if (d.getElementById("LXPLSS_" + hash + "U" + searchshield.SCORE_SS_VERISIGN)){searchshield.avgCallFunc(d, "RecordVSClick", hash, d.location.href);>}var link = anchor.href;var verdict = searchshield.getAvgImage(anchor);var score = -1;var img_id = '';if (verdict != null){score = verdict.score;img_id = verdict.rawId;}// show popup alert (upper left)if ((score >= searchshield.SCORE_SS_CAUTION) && (score = elementRect.bottom) && (nextImgRect.left -1)return true;return false;};searchshield.FilterUrl = function (url, filter){if (!url (url.length = 3)){return parts[2].toLowerCase();>return url;};searchshield.getUrlContents = function (url) {if (url == null)return null;// don't query if local urlif (url.indexOf("linkscanner://") != -1)return null;try {req = new XMLHttpRequest();req.open("GET", url, false);req.send(null);if (req.status == 200)return req.responseText;elsereturn null;} catch (err){// nothing to doreturn null;>;searchshield.parseLink = function (href, simpleMode){var uri = {};var parameter = {complex: {pattern: /^(?:([a-z]+):(?:([a-z]*):)?\/\/)?(?:([^:@]*)(?::([^:@]*))?@)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?::(\d+))?(?:([^:\?\#]+))?(?:\?([^\#]+))?(?:\#([^\s]+))?$/i,element: ['source','scheme','subscheme','user','pass','host','port','path','query','fragment']},simple: {pattern: /^(?:([a-z]+):\/\/)?((?:[a-z0-9_-]+\.)+[a-z]{2,})(?:\/)([^:\?]+)?(?:([\?\#])([^\?]+))?$/i,element: ['source','scheme','host','path','delimiter','query']>;var mode= simpleMode !== false ? 'simple' : 'complex';var pattern= parameter[mode].pattern;var element= parameter[mode].element;if (!href)return uri;var matches= href.match(pattern);if (matches){// --------------------// iterate over the matches array and populate uri properties// using the respective element parameter as the name.// NOTE: set raw property type as String to make inArray()// work properly with instanceof.// --------------------for (var i=0; i -1)){return;}// mark search result anchor so it isn't processed repeatedlyif (score == undefined)element.setAttribute("avglschecked", hash + "S" + this.VeriSignSplit);// create a new imagevar img = doc.createElement('img');img.src = image;img.id = "XPLSS_" + hash;img.style.borderStyle = "none";img.style.margin = "0 3px";// for IE, specify these style attributes to prevent inadvertent inheritance from parentif (img.width && img.height){img.style.width = img.width + 'px';img.style.height = img.height + 'px';}// apply custom element stylesthis.updateElementStyle(img, this.addImageStyle);// create the link element var anchor = doc.createElement("A");anchor.setAttribute("id", "LXPLSS_" + hash);if ((hidden != null) && (hidden == true)){// hiding the parent will also hide its child nodesanchor.style.display = "none";}// Default anchor styles//Over-ride possible border style with inline declarationanchor.style.borderStyle = "none";// apply custom element stylesthis.updateElementStyle(anchor, this.addAnchorStyle);if (score == searchshield.SCORE_SS_VERISIGN){anchor.style.textDecoration = "none";anchor.style.background = "none";}// append the image to the linkanchor.appendChild(img);// insert the node as either a sibling or a childif (insertNode != null)parentNode.insertBefore(anchor, insertNode);elseparentNode.appendChild(anchor);return anchor;};searchshield.SearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru){var updated = false;var frameDoc = this.search.doc;var docFrames = frameDoc.frames;var frameElem;if (docFrames && this.processFrames){for (var i=0; i anchor->containerNodes...while (cN && maxLoop--){if (cN.tagName == "DIV" cN.tagName == "SPAN"){// get object height depending on ie document modevar clientHeight = (cN.clientHeight == 0 (this.search.doc.documentMode && this.search.doc.documentMode eH)eH = reduceBy;var newDim = Math.ceil(eH*element.height);element.height = newDim;element.width = newDim;element.style.height = newDim + "px";element.style.width = newDim + "px";>catch(e){>// set default style attributeselement.style.display= "";// if verisign icon showing move our icon up for better centering of the 2// except for IE7 browser - it does not like this styletry {var ieVersion = parseFloat(navigator.appVersion.split("MSIE")[1]);if (alt_image && (alt_image.length > 0) && ieVersion != 7)element.style.verticalAlign = "10%";}catch(err){};// apply custom element stylesthis.updateElementStyle(element, this.updateImageStyle)// update the click thruvar link = this.search.doc.getElementById("L" + hash);if (link){link.href = click_thru;link.id = link.id + "U" + score;}updated = true;// add the alternate image if supplied BUT not on avg yahooif ((alt_image)&& (alt_image.length > 0)&& (!this.omitAltImage)&&(this.VeriSignSplit != searchshield.VERISIGN_SPLIT_TESTB)){var vhash = hash.substring(hash.indexOf("_")+1);// create a temporary link nodevar tmp_node = {element:element.parentNode,href:altClick_thru,hash:vhash + "VU" + score,search:this.searchHash,score:score};var altAnchor = this.addImage(tmp_node, alt_image, false);if (altAnchor && altAnchor.firstChild){altAnchor.firstChild.setAttribute("onmouseover", "");altAnchor.href = altClick_thru;>}if (updated != false){this.resizeFrame(frameElem);return true;}return false;};searchshield.SearchEngine.prototype.updateElementStyle = function (element, elementStyle){if (elementStyle){// a NULL attribte value will unset itfor(attr in elementStyle){try {if (element.style.setAttribute)element.style.setAttribute(attr, elementStyle[attr]);elseelement.style[attr] = elementStyle[attr];} catch(err){>>;searchshield.SearchEngine.prototype.resizeFrame = function (frameElem){// resize frame to prevent unwanted scrolling after inserting verdicts// ignore inline and non-frame enginesif ((this.type == 'inline') (!this.processFrames))return;// ensure all required elements are availableif ((frameElem == null) (frameElem.style == null) (frameElem.contentWindow == null))return;// if frame is scrolling vertically then resizevar frameHeight = parseInt(frameElem.style.height, 10);if (!isNaN(frameHeight) && (frameHeight = 5){//if set to default then get config valueif (this.showCleanVerdicts === true)this.showCleanVerdicts= (parseInt(parts[0]) == 1) ? true : false;if (this.showLowRiskVerdicts === true)this.showLowRiskVerdicts= (parseInt(parts[1]) == 1) ? true : false;if (this.showMedRiskVerdicts === true)this.showMedRiskVerdicts= (parseInt(parts[2]) == 1) ? true : false;this.VeriSignSplit= (parseInt(parts[4]));}return true;};searchshield.SearchEngine.prototype.init_inline_ratings = function (doc){if ((doc == null) (doc.getElementById("XPLSS_InlineFlyover")))return;// create the popup boxvar box = doc.createElement("DIV");try {box.setAttribute("id", "XPLSS_InlineFlyover");box.style.visibility = "hidden";box.style.left = "-5000px";box.style.position = "absolute";box.style.zIndex = "9999";box.style.padding = "0px 0px";box.style.marginLeft = "0px";box.style.marginTop = "0px";box.style.overflow = "hidden";box.style.wordWrap = "break-word";box.style.color = "black";box.style.fontSize = "10px";box.style.textAlign = "left";box.style.lineHeight = "130%";doc.body.appendChild(box);box = null;}catch(boxErr){>;searchshield.SearchEngine.prototype.show_inline_ratings = function (doc, node, image){var href= node.href;var anchor= node.element;if ((href == null) (href.length 0 ){imageElem.setAttribute("title", "");imageElem.attachEvent("onmouseover", function(e){avglsinlineflyover.popup(e, html)});imageElem.attachEvent("onmouseout", function(e){avglsinlineflyover.hide(e)});>};// add the image to the pagesearchshield.SearchEngine.prototype.add_inline_image = function (doc, anchor, nSeverity, aRisk, blShortUrl){if (anchor == null anchor.parentNode == null)return null;// get the proper insertion point for the imagevar insertNode = anchor.nextSibling;while ((insertNode!= null) && (insertNode.tagName != null) && (insertNode.tagName == "SPAN")){insertNode= insertNode.nextSibling;}// see if we already have an image anchorif ((insertNode!= null) && (insertNode.id!= null) && (insertNode.id== "avg_ls_anch")){return null;}var html = '';var image = this.inline.clockImage; if (aRisk != null && nSeverity != null){var riskCategory = aRisk[1];var riskName = aRisk[2];var bgColor = this.inline.color.background[nSeverity];var borderColor = this.inline.color.border[nSeverity];image = this.inline.image[nSeverity];var blUrl;if (blShortUrl){var aRiskName = riskName.split(':');var sUrl = searchshield.checkUrl(aRiskName[1]);blUrl = {};blUrl.riskNameLabel = aRiskName[0] + ': ';blUrl.riskCategory = riskCategory;blUrl.bgColor = bgColor;blUrl.borderColor = borderColor;blUrl.sUrl = sUrl;}else{html = avglsinlineflyover.build(riskCategory, riskName, bgColor, borderColor);>doc = anchor.ownerDocument;var img = doc.createElement("img");img.src = image;img.setAttribute("id","avg_ls_image");img.style.width = "12px";img.style.border = "none";img.style.padding = "0 3px";img.style.margin = "0";img.style.display = "inline";if ((html && html.length > 0) (blUrl != undefined)){img.setAttribute("title", "");img.attachEvent("onmouseover", function(e){avglsinlineflyover.popup(e, html, blUrl)});img.attachEvent("onmouseout", function(e){avglsinlineflyover.hide(e)});}// create the link element var newAnchor = doc.createElement("A");newAnchor.setAttribute("id", "avg_ls_anch");newAnchor.appendChild(img);img = null;// insert the node as either a sibling or a childif (insertNode != null)anchor.parentNode.insertBefore(newAnchor, insertNode);elseanchor.parentNode.appendChild(newAnchor);return newAnchor;};//////////////// SEARCH ENGINE /////////////////////////////// GOOGLE SEARCH ENGINE ///////////////searchshield.GoogleSearchEngine = function(search){searchshield.SearchEngine.call(this, search);this.onlyPrimaries = false;};searchshield.GoogleSearchEngine.prototype = new searchshield.SearchEngine();searchshield.GoogleSearchEngine.prototype.constructor = searchshield.GoogleSearchEngine;searchshield.GoogleSearchEngine.prototype.name = "google";// the name by which the search engine is known (always lowercase)searchshield.GoogleSearchEngine.prototype.validSearch = function(href) {var uri;if (typeof(this.search) === 'undefined' null === this.search)uri = searchshield.parseLink(href);elseuri = this.search.uri;if(!uri !uri.host)return false;var hostMatch= false;var domain= uri.host;// re stitch the uri path and query elements to// use existing logicvar path = uri.path + uri.delimiter + uri.query;// Domains valid for google searches, must start with '.'var valid_domains = new Array(".google.co", ".mozilla.co");// For Google the host must match://.google.comOR//.google.co.XXwhere XX is a country code//.google.XXwhere XX is a country code// Where any subdomain can come before the top level domainvar domLen = valid_domains.length;for (var i = 0; i -1){if (domain.charAt(tldPos + valid_domain_len) == 'm')hostMatch = true;else if ((domain.charAt(tldPos + valid_domain_len) == '.') && ((domainLen - tldPos) == valid_domain_len+3))hostMatch = true;}else{// get the form .google. to check the length ofvar dot_pos = valid_domains[i].indexOf(".",1);var valid_short_name = valid_domains[i].substring(0, dot_pos+1);tldPos = domain.indexOf(valid_short_name);if ((tldPos > -1) && ((domainLen - tldPos) == valid_domain_len))hostMatch = true;}if (hostMatch){// replace beginning of domain with www.google since links will refer back to itif ((i > 0) && (tldPos > -1)){var last_dot = domain.indexOf(".",tldPos+1)if (last_dot > -1)domain = "www.google" + domain.substring(last_dot);}break;>if (hostMatch){// using ajax engineif ((path.indexOf("search?") == 0) (path.indexOf("sponsoredlinks?") == 0) (path.indexOf("webhp?") == 0) (path.indexOf("webhp#") == 0) (path.indexOf("#q=") == 0) (path.indexOf("#hl=") == 0) (path.indexOf("#sclient=") == 0)){return true;>return false;};searchshield.GoogleSearchEngine.prototype.includeLink = function(tag){var href = "";var outHref = false;var findStr = "";// check for interstitialsif (searchshield.DoesURLContain(tag.href, this.search.uri.host)){findStr = this.search.uri.host + "/interstitial?";if (tag.className == "l" && tag.href){if (tag.href.indexOf(findStr) != -1){findStr = "?url=";var pos = tag.href.indexOf(findStr);if (pos !== -1){pos += 5;outHref = tag.href.substring(pos);if (searchshield.FilterUrl(outHref, this.filter_urls))return false;return outHref;>}if (tag.className == "sla"){findStr = "/url?q=";urlPos = tag.href.indexOf(findStr);if (urlPos != -1){urlPos += 7;outHref = tag.href.substring(urlPos);return outHref;>// if an ad idif ((tag.id.indexOf("pa") == 0) (tag.id.indexOf("an") == 0) (tag.className == "resultLink")){var urlPos = -1;// ads now need unescapinghref = unescape(tag.href);findStr= "/url?sa=";if (href.indexOf(findStr) != -1){// first kind, locate real urlfindStr= "&q=http";urlPos = href.indexOf(findStr);if (urlPos != -1)urlPos += 3;// puts it on the http}if (urlPos == -1){findStr = "/pagead/iclk?sa=";if (href.indexOf(findStr) != -1){// second kind, locate real urlfindStr = "&adurl=http";urlPos= href.indexOf(findStr);if (urlPos != -1)urlPos += 7; // puts it on the http>if (urlPos == -1){if (href.indexOf("/aclk?sa=") != -1){// third kindurlPos = href.indexOf("&q=http");if (urlPos != -1)urlPos += 3; // puts it on the httpelse{urlPos = href.indexOf("&lp=http");if (urlPos != -1)urlPos += 4;else{findStr = "&adurl=http";urlPos= href.indexOf(findStr);if (urlPos != -1)urlPos += 7; // puts it on the http>>if (urlPos == -1){if (href.indexOf("/url?cad=") != -1){// fourth kindurlPos = href.indexOf("&q=http");if (urlPos != -1)urlPos += 3; // puts it on the http>if (urlPos != -1){outHref = href.substring(urlPos);// extract any fragment text, shouldn't be unescapedvar pound = outHref.indexOf("#");if (pound != -1){var fragment = outHref.substring(pound);outHref = outHref.substring(0, pound);outHref = unescape(outHref);outHref += fragment;if (searchshield.FilterUrl(outHref, this.filter_urls))return false;return outHref;}outHref = unescape(outHref);if (outHref.indexOf("?") == -1){var ampPos = outHref.indexOf("&");if (ampPos != -1)outHref = outHref.substring(0, ampPos);}if (searchshield.FilterUrl(outHref, this.filter_urls))return false;return outHref;>// recommended link - use following to see one// http://www.google.cz/search?hl=cs&q=warey&btnG=Hledat&lr=lang_cs// elem parent class = r// href must contain - url? and q=httpvar parentNode = tag.parentNode;if (parentNode && (parentNode.className.toLowerCase() == "r")){href = tag.href;if (href && (href.indexOf("/url?") != -1)){// locate the real urlvar urlPos = href.indexOf("q=http");if (urlPos != -1){urlPos += 2;outHref = href.substring(urlPos);// include entire param up to '&'var ampPos = outHref.indexOf("&");if (ampPos != -1)outHref = outHref.substring(0, ampPos);return outHref;>>// no link to selfelse if (tag.className && (tag.className.charAt(0) == "l" tag.className == "sla")){// check for any images on the linkif (0 === tag.getElementsByTagName("IMG").length)return tag.href;}// else nothingreturn false;};/////////////// GOOGLE ////////////////////////////// AVG GOOGLE SEARCH ENGINE ///////////////searchshield.AVGGoogleSearchEngine = function(search){searchshield.SearchEngine.call(this, search);this.onlyPrimaries = false;};searchshield.AVGGoogleSearchEngine.prototype = new searchshield.SearchEngine();searchshield.AVGGoogleSearchEngine.prototype.constructor = searchshield.AVGGoogleSearchEngine;searchshield.AVGGoogleSearchEngine.prototype.name = "avggoogle";// the name by which the search engine is known (always lowercase)searchshield.AVGGoogleSearchEngine.prototype.validSearch = function(href) {var uri;if (typeof(this.search) === 'undefined' null === this.search)uri = searchshield.parseLink(href);elseuri = this.search.uri;if(!uri !uri.host)return false;var domain= uri.host;// re stitch the uri path and query elements to// use existing logicvar path = uri.path + uri.delimiter + uri.query;if (domain.indexOf("search.
Brilliant Media Twitter

More from Brilliant Media

View all

Trending

Industry insights

View all
Add your own content +