Offset Flashlight
![]() |
![]() NcStar 45 Degree Offset Flashlight Laser Weaver Mount MPR45 $12.69 Time Remaining: 10d 22h 33m Buy It Now for only: $12.69 |
![]() Daniel Defense Offset Flashlight Mount Picatinny 6001 DD6001 $40.00 Time Remaining: 3d 5h 57m |
![]() Tactical 1Diameter Ring Offset Flashlight Laser 45 Degree Side Mount Picatinny $11.95 Time Remaining: 16d 17h 31m Buy It Now for only: $11.95 |
![]() Tactical 1 Offset Flashlight Laser Mount 1913 Picatinny Black Rifle Tactical $11.47 Time Remaining: 2d 3h 4m Buy It Now for only: $11.47 |
![]() NcStar 1 Offset Mount 1 Flashlight Laser Ring Weaver MFL1 $12.39 Time Remaining: 10d 22h 33m Buy It Now for only: $12.39 |
![]() 1 OFFSET MOUNT FOR 1 FLASHLIGHT LASER $9.89 Time Remaining: 1d 20m Buy It Now for only: $9.89 |
![]() Olight M20 M21 M30 Warrior Flashlight Tactical Offset Mount Black Rifle Tactical $11.47 Time Remaining: 2d 3h 4m Buy It Now for only: $11.47 |
![]() Fenix 1 TK Flashlight Tactical Offset Mount Black Rifle Tactical USA $11.47 Time Remaining: 2d 3h 4m Buy It Now for only: $11.47 |
![]() 30mm Ring 20mm Picatinny Rail Aluminium 45 Degree Offset Flashlight Scope Mount $11.79 Time Remaining: 25d 13h Buy It Now for only: $11.79 |
![]() new Olight Jetbeam surefire Fenix Lumintop sunway 1 offset flashlight adaptor $9.85 Time Remaining: 14d 19h 41m Buy It Now for only: $9.85 |
![]() 45 Degree Offset Flashlight Mount For 20mm Rail MS421 $9.99 Time Remaining: 1d 4h 54m Buy It Now for only: $9.99 |
![]() 1 Inch Ring 20mm Rail 45 Degree Offset Weaver Flashlight Laser Scope Mount New $8.99 Time Remaining: 3d 9h 7m Buy It Now for only: $9.98 |
![]() Green Red Laser Flashlight Offset mount 1 For Rifle weaver or Quad rail $8.99 Time Remaining: 4d 2h 49m Buy It Now for only: $8.99 |
![]() NcStar 1 Offset Rail Mount Accessory Flashlight Laser Weaver MFL1 $15.89 Time Remaining: 1d 12h 29m Buy It Now for only: $15.89 |
![]() Tactical 25mm Flashlight Laser Offset Mount 20mm Rail $14.24 Time Remaining: 9d 21h 15m Buy It Now for only: $14.24 |
![]() Green Red Laser Flashlight Offset 1 Mount for Black Rifle Quad Rail System $11.47 Time Remaining: 2d 3h 4m Buy It Now for only: $11.47 |
![]() Daniel Defense Scope Laser Flashlight Offset 25mm Mount $20.99 Time Remaining: 22d 15h 40m Buy It Now for only: $20.99 |
![]() Tactical 30mm Offset Flashlight Laser Mount 1913 Picatinny Black Rifle Tactical $11.97 Time Remaining: 28d 17h 15m Buy It Now for only: $11.97 |
![]() 1 Offset Mount For 1 Flashlight Laser $12.50 Time Remaining: 11d 46m Buy It Now for only: $12.50 |
![]() UAG SHOTGUN PICATINNY OFFSET FLASHLIGHT LASER MOUNT 9D $18.95 Time Remaining: 8d 20h 33m Buy It Now for only: $18.95 |
![]() NcStar Rail Mount 45 Degree Offset Accessory Flashlight Laser Weaver MPR45 $14.95 Time Remaining: 1d 11h 10m Buy It Now for only: $14.95 |
![]() New 1 Inch Steel Ring Offset Weaver Rail Flashlight Laser Scope Tactical Mount $8.99 Time Remaining: 3d 9h 30m Buy It Now for only: $9.98 |
![]() 25mm Ring Offset Side 1 Flashlight Laser Scope Side Mount for 20mm Weaver Rail $13.99 Time Remaining: 13d 16h 56m Buy It Now for only: $13.99 |
![]() Offset Flashlight QD 1 25mm scope side mount 20mm rail $13.58 Time Remaining: 28d 12h 35m Buy It Now for only: $13.58 |
![]() Green Red Laser Flashlight Offset 30mm Mount for Black Rifle Quad Rail System $11.97 Time Remaining: 28d 17h 15m Buy It Now for only: $11.97 |
![]() VLTOR SM OCG Off Set Scout Flashlight Mount BLACK NEW $62.99 Time Remaining: 9d 3h 23m Buy It Now for only: $62.99 |
![]() NcStar 1 Off set Weaver Mount 1 Flashlight or Laser MFL1 $13.49 Time Remaining: 22d 9h 22m Buy It Now for only: $13.49 |
![]() Offset LED Flashlight Tri Rail Hand Guard GSG 5 GSG5SD $89.95 Time Remaining: 2d 21h 42m Buy It Now for only: $89.95 |
![]() NCSTAR 1 OFFSET MOUNT FOR 1 FLASHLIGHT LASER MFL1 $13.95 Time Remaining: 15d 23h 3m Buy It Now for only: $13.95 |
![]() Offset Flashlight Mount for Weaver 20mm rail 00680 $12.99 Time Remaining: 18d 10h 25m Buy It Now for only: $12.99 |
![]() Side Offset 30mm Ring Flashlight Laser Scope Mount for 20mm Weaver Rail $14.99 Time Remaining: 3d 17h 29m Buy It Now for only: $14.99 |
![]() 1 Inch Ring 20mm Rail Offset Weaver Flashlight Laser Scope Steel Tactical Mount $8.99 Time Remaining: 3d 9h 58m Buy It Now for only: $9.98 |
![]() new 30mm flashlight laser offset Weapon Mount on sale $14.99 Time Remaining: 26d 5h 45m Buy It Now for only: $14.99 |
![]() HOT NEW NcStar 1 Offset Mount 1 Flashlight Laser Ring Weaver MFL1 $15.95 Time Remaining: 1d 10h 1m Buy It Now for only: $15.95 |
![]() Surefire Flashlight 1 offset Weapon Mount $14.99 Time Remaining: 15d 17h 44m Buy It Now for only: $14.99 |
![]() 300 Lumens Xenon Flashlight Remote 1 Offset Mount Set $31.98 Time Remaining: 28d 20h 20m Buy It Now for only: $31.98 |
![]() 1 Flashlight Offset Ring Mount Picatinny 7 8 Weaver $12.80 Time Remaining: 22d 3h 9m Buy It Now for only: $12.80 |
![]() new olight ALl M series Flashlight 1 offset Weapon Mount fitM20 M21 M30 M3x $9.99 Time Remaining: 15d 19h 3m Buy It Now for only: $9.99 |
![]() new Tacticalmen 30mm flashlight laser offset Weapon Mount on sale $14.99 Time Remaining: 21d 3h 57m Buy It Now for only: $14.99 |
![]() 1 Offset Weaver Mount 1 Flashlight Laser Ring $12.95 Time Remaining: 10d 1h 5m Buy It Now for only: $12.95 |
![]() VLTOR Offset Scout Flashlight Mount Picatinny All Models Black SM OCG $61.17 Time Remaining: 5d 44m Buy It Now for only: $61.17 |
![]() 1 Inch Ring Picatinny Rail Offset Weaver Flashlight Laser Scope Tactical Mount $8.99 Time Remaining: 3d 10h 19m Buy It Now for only: $9.98 |
![]() Scope Laser Flashlight Offset 25mm Mount Ring $10.99 Time Remaining: 27d 19h 56m Buy It Now for only: $10.99 |
![]() 30mm Diameter Ring 20mm Rail Offset Flashlight Scope Aluminium Fe Tactical Mount $11.78 Time Remaining: 6d 39m Buy It Now for only: $11.78 |
![]() Daniel Defense OFFSET FLASHLIGHT MOUNT BLACK DD 6001 $49.99 Time Remaining: 1d 4h 31m Buy It Now for only: $49.99 |
![]() Daniel Defense Offset Flashlight Mount 6001 $58.99 Time Remaining: 20d 14h 1m Buy It Now for only: $58.99 |
![]() Surefire Flashlight 1 offset Weapon Mount $9.99 Time Remaining: 8d 1h 17m Buy It Now for only: $9.99 |
![]() new Fenix ALl TK series Flashlight 1 offset Weapon Mount new $9.99 Time Remaining: 15d 19h 1m Buy It Now for only: $9.99 |
![]() 45 Degree Flashlight Laser Offset Weaver Rail Mount $9.95 Time Remaining: 19d 8h 14m Buy It Now for only: $9.95 |
![]() PROMAG OFFSET TACTICAL FLASHLIGHT MOUNT PM139 $32.99 Time Remaining: 15d 14h 8m Buy It Now for only: $32.99 |
![]() QD 1 Offset Flashlight Laser Ring Weaver Rail Mount $9.95 Time Remaining: 16d 17h 44m Buy It Now for only: $9.95 |
![]() Steel 1 Inch Ring 20mm Rail Offset Weaver Flashlight Laser Scope Tactical Mount $8.99 Time Remaining: 3d 10h 46m Buy It Now for only: $9.98 |
![]() FLASH LIGHT LASER DUAL 45 DEGREE OFFSET RAIL MOUNT Z8 $17.95 Time Remaining: 14d 18h 12m Buy It Now for only: $17.95 |
![]() new 30mm flashlight laser offset Weapon Mount on sale $14.99 Time Remaining: 2d 2h 50m Buy It Now for only: $14.99 |
![]() NcStar 1 Offset Mount 1 Flashlight Laser Ring Weaver MFL1 $9.95 Time Remaining: 18d 6h 23m Buy It Now for only: $9.95 |
![]() NcStar 1in Off Set Mount For 1in Flashlight Laser MFL1 $9.00 Time Remaining: 23d 8h 25m Buy It Now for only: $9.00 |
![]() ArmsOK 1Tactical Diameter Ring Offset Flashlight Laser Side Mount Picatinny $14.99 Time Remaining: 23d 1h 43m Buy It Now for only: $14.99 |
![]() UAG PISTOL PICATINNY OFFSET FLASHLIGHT LASER MOUNT 9D $18.95 Time Remaining: 9d 14h 13m Buy It Now for only: $18.95 |
![]() 223 TACTICAL 1 INCH OFFSET RING LASER FLASHLIGHT MOUNT $12.95 Time Remaining: 23d 2h 34m Buy It Now for only: $12.95 |
![]() Brand New Olight M20 Off Set Tactical Flashlight Mount $18.29 Time Remaining: 25d 14h 34m Buy It Now for only: $18.29 |
![]() 1 Inch Ring 20mm Picatinny Rail 45Offset Weaver Flashlights Laser Scopes Mount $9.98 Time Remaining: 20d 16h 39m Buy It Now for only: $9.98 |
![]() 1 Inch Ring 20mm Rail 45 Degree Offset Weaver Flashlight Laser Scope Mount New $8.99 Time Remaining: 3d 11h 11m Buy It Now for only: $9.98 |
![]() Daniel Defense Offset Flashlight Mount Black Picatinny DD 6001 $49.95 Time Remaining: 26d 5h 32m Buy It Now for only: $49.95 |
![]() NcStar 1in Off Set Mount For 1in Flashlight Laser MFL1 $9.00 Time Remaining: 25d 19h 24m Buy It Now for only: $9.00 |
![]() 45 degree offset flashlight mount for 20mm rail MS421 $14.99 Time Remaining: 19d 10h 11m Buy It Now for only: $14.99 |
![]() Daniel Defense DD 6000 Offset Flashlight Mount PAK NEW $59.99 Time Remaining: 23d 21h 23m Buy It Now for only: $59.99 |
![]() 45 Degree Offset Flashlight Mount For 20mm Rail MS421 $9.99 Time Remaining: 6d 5h 2m Buy It Now for only: $9.99 |
![]() VLTOR SMQ OCG Off Set Scout QD Flashlight Mount BLACK NEW $87.99 Time Remaining: 10d 1h 48m Buy It Now for only: $87.99 |
![]() V Style Offset Mount Rail Dual LED Compact Flashlight $59.95 Time Remaining: 2d 20h 16m Buy It Now for only: $59.95 |
![]() Daniel Defense Offset Flashlight Mount Picatinny 6000 DD6000 $71.97 Time Remaining: 26d 19h 14m Buy It Now for only: $71.97 |
![]() Brand New 1 Offset Mount 1 Flashlight Laser Ring Weaver MFL1 $8.95 Time Remaining: 3d 8h 42m Buy It Now for only: $8.95 |
![]() GGG 1131 Offset Tactical Flashlight Mount Vertical Foregrip Surefire SWAT SEAL $1.99 (1 Bid) Time Remaining: 4d 30m |
![]() Vector Optics 30mm Laser Flashlight Offset Weaver Mount $14.99 Time Remaining: 5h 58m Buy It Now for only: $14.99 |
![]() 1 Inch Quick Detach Offset Mount Fits LF1 and Tac5 Flashlights $15.59 Time Remaining: 28d 21h 6m Buy It Now for only: $15.59 |
![]() Daniel Defense Offset Flashlight Mount Picatinny 6001 DD6001 $52.94 Time Remaining: 22d 5h 29m Buy It Now for only: $52.94 |
![]() 1 Inch Quick Detach Offset Mount Fits LF1 and Tac5 Flashlights $15.76 Time Remaining: 28d 21h 13m Buy It Now for only: $15.76 |
![]() NEW TACTICAL PICATINNY 1 OFFSET FLASHLIGHT LASER MOUNT $25.99 Time Remaining: 1d 51m Buy It Now for only: $25.99 |
![]() 1 Inch Quick Detach Offset Mount Fits LF1 and Tac5 Flashlights $15.76 Time Remaining: 28d 20h 49m Buy It Now for only: $15.76 |
![]() NEW NCSTAR 1 FLASHLIGHT LASER OFFSET MOUNT BLK WEAVER $16.99 Time Remaining: 15d 20h 26m Buy It Now for only: $16.99 |
![]() UltraFire CREE R2 LED Tactical Flashlight Off Set Mount $65.99 Time Remaining: 6d 11h 45m Buy It Now for only: $65.99 |
![]() MAKO FAB 1 Tactical Offset Flashlight light Side Mount $29.35 Time Remaining: 27d 20h 28m Buy It Now for only: $29.35 |
![]() GEAR SECTOR OFFSET FLASHLIGHT MOUNT FOR SUREFIRE 6P G2X SERIES DARK EARTH $45.00 Time Remaining: 4d 21h 52m |
![]() ONE INCH OFFSET FLASHLIGHT MOUNT FOR PICATINNY RAIL $24.99 Time Remaining: 11d 23h 44m Buy It Now for only: $24.99 |
![]() Daniel Defense Flashlight Mount mnt Black Offset Picatinny DD 6001 $51.93 Time Remaining: 29d 5h 52m Buy It Now for only: $51.93 |
![]() Offset Flashlight Mount for Weaver 20mm rail 00680 $12.99 Time Remaining: 4d 13h 2m Buy It Now for only: $12.99 |
![]() 45 Degree Offset Flashlight Mount For 20mm Rail MS421 $9.99 Time Remaining: 2d 4h 29m Buy It Now for only: $9.99 |
![]() Flashlight 1 Offset Picatinny Mount For Surefire Light $2.99 Time Remaining: 4d 9h 23m Buy It Now for only: $2.99 |
![]() Tactical 1 25mm Offset Flashlight Laser Scope Mount for Weaver Picatinny Rail $7.95 Time Remaining: 27d 19h 37m Buy It Now for only: $7.95 |
![]() 290LM LED Tactical Flashlight W 45Offset Mount 18650 $34.99 Time Remaining: 26d 5h 56m Buy It Now for only: $34.99 |
![]() Offset Flashlight Mount Black Hard Anodized Aluminum 20mm Picatinny Rail Airsoft $24.99 Time Remaining: 20d 23h 19m Buy It Now for only: $24.99 |
Offset Flashlight

Light Bars LED helping our first responders to keep us safe
The one thing that helps emergency service personnel go about their duties safely and securely is the Light Bars LED. The lighting ensures they are highly visible at all times and in all conditions. Light Bars LED are especially good for first response vehicles as they help maximize the first responder's safety and also keep us safe. When we see any flashing Light Bars LED we immediately react to that, which is an early warning to danger or hazard. Our first responder's job is never easy. They risk life and limb on a daily basis so maintaining their safety is crucial.
Many first response vehicles now have a double tier bank of Light Bars LED, which is difficult to miss. The Light Bars LED are used when they are responding to an emergency call and they help clear the path through traffic and also warn and advise traffic at a scene. LED lighting is popular because it's extremely bright and the new generation of LED bulbs, can be seen from a great distance in all weather and lighting conditions. Most of the newer Light Bars LED units are fully encapsulated, and this means they are virtually corrosion free, which ensures reliability.
When selecting your supplier of Light Bars LED it's worth looking around. A good retailers would offer a one year electronic parts warranty along with a five year bulb replacement warranty, which proves just how confident they are in their products. Light Bars LED will cause virtually no drain on battery power. They have no filaments to burn out and they can be used for lengthy periods of time. This makes the lights ideal for emergency vehicles.
When purchasing your Light Bars LED it could be worth trying for recommendations from other departments or services. Tried and tested retailers are better than unknown ones in any circumstances, for whatever you are buying. Some suppliers work with police and fire departments to design and manufacture Light Bars LED that are specific for their requirements. If you could find such a supplier, you would be in good company and have Light Bars LED that suits your requirements perfectly.
Emergency first responders need Light Bars LED to warn pedestrians and road users of their approach or that they are stationary in attendance at a scene. Safety is vital to first responders. They must maintain safety at all times. Emergency vehicles need to be highly visible and the new generation of Light Bars LED helps with that visibility. Of course, we must play our part in maintaining safety on our highways and city streets by being alert and aware of what is going on around us at all times. The use of lighting and sirens on first response vehicles help keep us safe and forewarned.
Extreme Tactical Dynamics is a one-stop shop for a Light bars LED unit and many other items like Flashlights, Dash Lights, Deck Lights, etc. Please visit the site for more details of various items available - http://www.extremetacticaldynamics.com/
<input id="gwProxy" type="hidden" /><input id="jsProxy">
<!-- Top iFrame --> <!-- Bottom iFrame -->
[removed]// <![CDATA[ var LEO_HIGHLIGHTS_INFINITE_LOOP_COUNT = 300; var LEO_HIGHLIGHTS_MAX_HIGHLIGHTS = 50; var LEO_HIGHLIGHTS_IFRAME_TOP_ID = "leoHighlights_top_iframe"; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID = "leoHighlights_bottom_iframe"; var LEO_HIGHLIGHTS_IFRAME_DIV_ID = "leoHighlights_iframe_modal_div_container"; var LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_WIDTH = 520; var LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_HEIGHT = 391; var LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_WIDTH = 520; var LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_HEIGHT = 665; var LEO_HIGHLIGHTS_IFRAME_TOP_POS_X = 0; var LEO_HIGHLIGHTS_IFRAME_TOP_POS_Y = 0; var LEO_HIGHLIGHTS_IFRAME_TOP_WIDTH = 520; var LEO_HIGHLIGHTS_IFRAME_TOP_HEIGHT = 294; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_POS_X = 96; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_POS_Y = 294; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_WIDTH = 425; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_HEIGHT = 97; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_WIDTH = 425; var LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_HEIGHT = 371; var LEO_HIGHLIGHTS_SHOW_DELAY_MS = 300; var LEO_HIGHLIGHTS_HIDE_DELAY_MS = 750; var LEO_HIGHLIGHTS_SHOW_DELAY_NO_UNDER_MS = 850; var LEO_HIGHLIGHTS_BACKGROUND_STYLE_DEFAULT = "transparent none repeat scroll 0% 0%"; var LEO_HIGHLIGHTS_BACKGROUND_STYLE_HOVER = "rgb(245, 245, 0) none repeat scroll 0% 0%"; var LEO_HIGHLIGHTS_ROVER_TAG = "711-36858-13496-14"; createInlineScriptElement("var LEO_HIGHLIGHTS_DEBUG = false;
var LEO_HIGHLIGHTS_DEBUG_POS = false; var _leoHighlightsPrevElem = null;
var _leoHighlightsSnoozed = false; /** * Checks if the passed in class exists * @param c * @return */
function _leoHighlightsClassExists(c) { return typeof(c) == "function" && typeof(c.prototype) == "object" ? true : false;
} /** * Checks if the firebug console is available * @param c * @return */
function _leoHighlightsFirebugConsoleAvailable(c) { try { if(_leoHighlightsClassExists(_FirebugConsole) && window.console && console.log && (console instanceof _FirebugConsole)) { return true; } } catch(e){} return false;
} /** * General method used to debug exceptions * * @param location * @param e * @return */
function _leoHighlightsReportExeception(location,e)
{ try { if(_leoHighlightsFirebugConsoleAvailable() ||LEO_HIGHLIGHTS_DEBUG) { var logString=location+": "+e+"nt"+e.name+"nt"+ (e.number&0xFFFF;)+"nt"+e.description; if(_leoHighlightsFirebugConsoleAvailable()) { console.error(logString); console.trace(); } } if(LEO_HIGHLIGHTS_DEBUG) alert(logString); } catch(e){}
} /** * This will log a string to the firebug console * * @param str * @return */
function _leoHighlightsDebugLog(str)
{ try { if(_leoHighlightsFirebugConsoleAvailable()) { console.log(typeof(_FirebugConsole)+" "+str); } } catch(e) { _leoHighlightsReportExeception("_leoHighlightsDebugLog() "+str,e); }
} /** * This will get an attribute and decode it. * * @param elem * @param id * @return */
function _leoHighlightsGetAttrib(elem,id)
{ try { var val=elem.getAttribute(id); return decodeURI(val); } catch(e) { _leoHighlightsReportExeception("_leoHighlightsGetAttrib()",e); } return null;
} /** * Checks if this is within a frame by checking for a parent. * * @return */
function _leoHighlightsIsFrame()
{ try { return (window!=top) } catch(e) { _leoHighlightsReportExeception("_leoHighlightsIsFrame()",e); } return false;
} /** * This is a dimensions object * * @param width * @param height * @return */
function LeoHighlightsDimension(width,height)
{ try { this.width=width; this.height=height; this.toString=function() { return ("("+this.width+","+this.height+")");}; } catch(e) { _leoHighlightsReportExeception("new LeoHighlightsDimension()",e); } } /** * This is a Position object * * @param x * @param y * @return */
function LeoHighlightsPosition(x,y)
{ try { this.x=x; this.y=y; this.toString=function() { return ("("+this.x+","+this.y+")");}; } catch(e) { _leoHighlightsReportExeception("new LeoHighlightsPosition()",e); } } var LEO_HIGHLIGHTS_ADJUSTMENT = new LeoHighlightsPosition(3,3);
var LEO_HIGHLIGHTS_IFRAME_TOP_SIZE = new LeoHighlightsDimension(LEO_HIGHLIGHTS_IFRAME_TOP_WIDTH,LEO_HIGHLIGHTS_IFRAME_TOP_HEIGHT);
var LEO_HIGHLIGHTS_IFRAME_BOTTOM_HOVER_SIZE = new LeoHighlightsDimension(LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_WIDTH,LEO_HIGHLIGHTS_IFRAME_BOTTOM_COLLAPSED_HEIGHT);
var LEO_HIGHLIGHTS_IFRAME_BOTTOM_CLICK_SIZE = new LeoHighlightsDimension(LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_WIDTH,LEO_HIGHLIGHTS_IFRAME_BOTTOM_EXPANDED_HEIGHT); var LEO_HIGHLIGHTS_DIV_HOVER_SIZE = new LeoHighlightsDimension(LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_WIDTH,LEO_HIGHLIGHTS_IFRAME_TOTAL_COLLAPSED_HEIGHT);
var LEO_HIGHLIGHTS_DIV_CLICK_SIZE = new LeoHighlightsDimension(LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_WIDTH,LEO_HIGHLIGHTS_IFRAME_TOTAL_EXPANDED_HEIGHT); /** * Sets the size of the passed in element * * @param elem * @param dim * @return */
function _leoHighlightsSetSize(elem,dim)
{ try { // Set the popup location elem.style.width = dim.width + "px"; if(elem.width) elem.width=dim.width; elem.style.height = dim.height + "px"; if(elem.height) elem.height=dim.height; } catch(e) { _leoHighlightsReportExeception("_leoHighlightsSetSize()",e); } } /** * This can be used for a simple one argument callback * * @param callName * @param argName * @param argVal * @return */
function _leoHighlightsSimpleGwCallBack(callName,argName, argVal)
{ try { var gwObj = new Gateway(); if(argName) gwObj.addParam(argName,argVal); gwObj.callName(callName); } catch(e) { _leoHighlightsReportExeception("_leoHighlightsSimpleGwCallBack() "+callName,e); }
} /** * This gets a url argument from the current document. * * @param url * @return */
function _leoHighlightsGetUrlArg(url, name )
{ name = name.replace(/[[]/,"[").replace(/[]]/,"]"); var regexS = "[?&]"+name+"=([^]*)"; var regex = new RegExp( regexS ); var results = regex.exec(url); if( results == null ) return ""; else return results[1];
} /** * This allows to redirect the top window to the passed in url * * @param url * @return */
function _leoHighlightsRedirectTop(url)
{ try { top.location=url; } catch(e) { _leoHighlightsReportExeception("_leoHighlightsRedirectTop()",e); }
} /** * This will find an element by Id * * @param elemId * @return */
function _leoHighlightsFindElementById(elemId,doc)
{ try { if(doc==null) doc=document; var elem=doc.getElementById(elemId); if(elem) return elem; /* This is the handling for IE */ if(doc.all) { elem=doc.all[elemId]; if(elem) return elem; for ( var i = (document.all.length-1); i >= 0; i--) { elem=doc.all[i]; if(elem.id==elemId) return elem; } } } catch(e) { _leoHighlightsReportExeception("_leoHighlightsFindElementById()",e); } return null;
} /** * Get the location of one element relative to a parent reference * * @param ref * the reference element, this must be a parent of the passed in * element * @param elem * @return */
function _leoHighlightsGetLocation(ref, elem) { _leoHighlightsDebugLog("_leoHighlightsGetLocation "+elem.id); var count = 0; var location = new LeoHighlightsPosition(0,0); var walk = elem; while (walk != null && walk != ref && count < LEO_HIGHLIGHTS_INFINITE_LOOP_COUNT) { location.x += walk.offsetLeft; location.y += walk.offsetTop; walk = walk.offsetParent; count++; } _leoHighlightsDebugLog("Location is: "+elem.id+" - "+location); return location;
} /** * This is used to update the position of an element as a popup * * @param IFrame * @param anchor * @return */
function _leoHighlightsUpdatePopupPos(iFrame,anchor)
{ try { // Gets the scrolled location for x and y var scrolledPos=new LeoHighlightsPosition(0,0); if( self.pageYOffset ) { scrolledPos.x = self.pageXOffset; scrolledPos.y = self.pageYOffset; } else if( document.documentElement && document.documentElement.scrollTop ) { scrolledPos.x = document.documentElement.scrollLeft; scrolledPos.y = document.documentElement.scrollTop; } else if( document.body ) { scrolledPos.x = document.body.scrollLeft; scrolledPos.y = document.body.scrollTop; } /* Get the total dimensions to see what scroll bars might be active */ var totalDim=new LeoHighlightsDimension(0,0) if (document.all && document.documentElement && document.documentElement.clientHeight&&document;.documentElement.clientWidth) { totalDim.width = document.documentElement.scrollWidth; totalDim.height = document.documentElement.scrollHeight; } else if (document.all) { /* This is in IE */ totalDim.width = document.body.scrollWidth; totalDim.height = document.body.scrollHeight; } else { totalDim.width = document.width; totalDim.height = document.height; } // Gets the location of the available screen space var centerDim=new LeoHighlightsDimension(0,0); if(self.innerWidth && self.innerHeight ) { centerDim.width = self.innerWidth-(totalDim.height>self.innerHeight?16:0); // subtracting scroll bar offsets for firefox centerDim.height = self.innerHeight-(totalDim.width>self.innerWidth?16:0); // subtracting scroll bar offsets for firefox } else if( document.documentElement && document.documentElement.clientHeight ) { centerDim.width = document.documentElement.clientWidth; centerDim.height = document.documentElement.clientHeight; } else if( document.body ) { centerDim.width = document.body.clientWidth; centerDim.height = document.body.clientHeight; } // Get the current dimension of the popup element var iFrameDim=new LeoHighlightsDimension(iFrame.offsetWidth,iFrame.offsetHeight) if (iFrameDim.width <= 0) iFrameDim.width = iFrame.style.width.substring(0, iFrame.style.width.indexOf('px')); if (iFrameDim.height <= 0) iFrameDim.height = iFrame.style.height.substring(0, iFrame.style.height.indexOf('px')); /* Calculate the position, lower right hand corner by default */ var position=new LeoHighlightsPosition(0,0); position.x=scrolledPos.x+centerDim.width-iFrameDim.width-LEO_HIGHLIGHTS_ADJUSTMENT.x; position.y=scrolledPos.y+centerDim.height-iFrameDim.height-LEO_HIGHLIGHTS_ADJUSTMENT.y; if(anchor!=null) { //centerDim in relation to the anchor element if available var topOrBottom = false; var anchorPos=_leoHighlightsGetLocation(document.body, anchor); var anchorScreenPos = new LeoHighlightsPosition(anchorPos.x-scrolledPos.x,anchorPos.y-scrolledPos.y); var anchorDim=new LeoHighlightsDimension(anchor.offsetWidth,anchor.offsetHeight) if (anchorDim.width <= 0) anchorDim.width = anchor.style.width.substring(0, anchor.style.width.indexOf('px')); if (anchorDim.height <= 0) anchorDim.height = anchor.style.height.substring(0, anchor.style.height.indexOf('px')); // Check if the popup can be shown above or below the element if (centerDim.height - anchorDim.height - iFrameDim.height - anchorScreenPos.y > 0) { // Show below, formula above calculates space below open iFrame position.y = anchorPos.y + anchorDim.height; topOrBottom = true; } else if (anchorScreenPos.y - anchorDim.height - iFrameDim.height > 0) { // Show above, formula above calculates space above open iFrame position.y = anchorPos.y - iFrameDim.height - anchorDim.height; topOrBottom = true; } _leoHighlightsDebugLog("_leoHighlightsUpdatePopupPos() - topOrBottom: "+topOrBottom); if (topOrBottom) { // We attempt top attach the window to the element position.x = anchorPos.x - iFrameDim.width / 2; if (position.x < 0) position.x = 0; else if (position.x + iFrameDim.width > scrolledPos.x + centerDim.width) position.x = scrolledPos.x + centerDim.width - iFrameDim.width; _leoHighlightsDebugLog("_leoHighlightsUpdatePopupPos() - topOrBottom: "+position); } else { // Attempt to align on the right or left hand side if (centerDim.width - anchorDim.width - iFrameDim.width - anchorScreenPos.x > 0) position.x = anchorPos.x + anchorDim.width; else if (anchorScreenPos.x - anchorDim.width - iFrameDim.width > 0) position.x = anchorPos.x - anchorDim.width; else // default to below position.y = anchorPos.y + anchorDim.height; _leoHighlightsDebugLog("_leoHighlightsUpdatePopupPos() - sideBottom: "+position); } } /* Make sure that we don't go passed the right hand border */ if(position.x+iFrameDim.width>centerDim.width-20) position.x=centerDim.width-(iFrameDim.width+20); // Make sure that we didn't go passed the start if(position.x<0) position.x=0; if(position.y<0) position.y=0; _leoHighlightsDebugLog("Popup info id: " +iFrame.id+" - "+anchor.id + "nscrolled " + scrolledPos + "ncenter/visible " + centerDim + "nanchor (absolute) " + anchorPos + "nanchor (screen) " + anchorScreenPos + "nSize (anchor) " + anchorDim + "nSize (popup) " + iFrameDim + "nResult pos " + position); // Set the popup location iFrame.style.left = position.x + "px"; iFrame.style.top = position.y + "px"; } catch(e) { _leoHighlightsReportExeception("_leoHighlightsUpdatePopupPos()",e); }
} /** * This will show the passed in element as a popup * * @param anchorId * @param size * * @return */
function _leoHighlightsShowPopup(anchorId,size)
{ try { if(_leoHighlightsSnoozed) return false; var popup=new LeoHighlightsPopup(anchorId,size); popup.show(); } catch(e) { _leoHighlightsReportExeception("_leoHighlightsShowPopup()",e); } } /** * This will transform the passed in url to a rover url * * @param url * @return */
function _leoHighlightsGetRoverUrl(url)
{ var rover=LEO_HIGHLIGHTS_ROVER_TAG; var roverUrl="http://rover.ebay.com/rover/1/"+rover+"/4?&mpre;="+encodeURI(url); return roverUrl;
} /** * Sets the size of the bottom windown part * * @param size * @return */
function _leoHighlightsSetBottomSize(size,clickId)
{ /* Get the elements */ var iFrameBottom=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID); var iFrameDiv=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_DIV_ID); /* Figure out the correct sizes */ var iFrameBottomSize=(size==1)?LEO_HIGHLIGHTS_IFRAME_BOTTOM_CLICK_SIZE:LEO_HIGHLIGHTS_IFRAME_BOTTOM_HOVER_SIZE; var divSize=(size==1)?LEO_HIGHLIGHTS_DIV_CLICK_SIZE:LEO_HIGHLIGHTS_DIV_HOVER_SIZE; /* Refresh the iFrame's url, by removing the size arg and adding it again */ leoHighlightsUpdateUrl(iFrameBottom,size,clickId); /* Clear the hover flag, if the user shows this at full size */ _leoHighlightsPrevElem.hover=size==1?false:true; _leoHighlightsSetSize(iFrameBottom,iFrameBottomSize); _leoHighlightsSetSize(iFrameDiv,divSize);
} /** * Class for a Popup * * @param anchorId * @param size * * @return */
function LeoHighlightsPopup(anchorId,size)
{ try { _leoHighlightsDebugLog("LeoHighlightsPopup() "); this.anchorId=anchorId; this.anchor=_leoHighlightsFindElementById(this.anchorId); this.topIframe=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_TOP_ID); this.bottomIframe=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID); this.iFrameDiv=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_DIV_ID); this.topIframe.src=unescape(this.anchor.getAttribute('leoHighlights_url_top'));; this.bottomIframe.src=unescape(this.anchor.getAttribute('leoHighlights_url_bottom'));; _leoHighlightsDebugLog("1) LeoHighlightsPopup() ("+this.topIframe.style.top+", "+this.topIframe.style.left+")"); _leoHighlightsDebugLog("2) LeoHighlightsPopup() ("+this.bottomIframe.style.top+", "+this.bottomIframe.style.left+")"); leoHighlightsSetSize(size); this.updatePos=function() { _leoHighlightsUpdatePopupPos(this.iFrameDiv,this.anchor);}; this.show=function() { this.updatePos(); this.iFrameDiv.style.visibility = "visible"; this.iFrameDiv.style.display = "block"; this.updatePos(); _leoHighlightsDebugLog("3) LeoHighlightsPopup() ("+this.topIframe.style.top+", "+this.topIframe.style.left+")"); _leoHighlightsDebugLog("4) LeoHighlightsPopup() ("+this.bottomIframe.style.top+", "+this.bottomIframe.style.left+")"); }; this.scroll=function() { this.updatePos();}; } catch(e) { _leoHighlightsReportExeception("new LeoHighlightsPopup()",e); }
} /** * updates the url for the iFrame * * @param iFrame * @param size * @param clickId * @return */
function leoHighlightsUpdateUrl(iFrame,size,clickId,destUrl)
{ try { _leoHighlightsDebugLog("leoHighlightsUpdateUrl() "+destUrl); var url=iFrame.src; var idx=url.indexOf("&size;="); if(idx>=0) url=url.substring(0,idx); // size=1; _leoHighlightsDebugLog("leoHighlightsUpdateUrl() size="+size+" "+url); if(size!=null) url+=("&size;="+size); if(clickId!=null) url+=("&clickId;="+clickId); if(destUrl!=null) url+=("&url;="+destUrl); _leoHighlightsDebugLog("leoHighlightsUpdateUrl() "+url); iFrame.src=url; } catch(e) { _leoHighlightsReportExeception("leoHighlightsUpdateUrl()",e); }
} /**
*
* This can be used to close an iframe
*
* @param id
* @return
*/
function leoHighlightsSetSize(size,clickId)
{ try { /* Get the element */ var iFrameTop=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_TOP_ID); /* Figure out the correct sizes */ var iFrameTopSize=LEO_HIGHLIGHTS_IFRAME_TOP_SIZE; /* Refresh the iFrame's url, by removing the size arg and adding it again */ leoHighlightsUpdateUrl(iFrameTop,size,clickId); _leoHighlightsSetSize(iFrameTop,iFrameTopSize); _leoHighlightsSetBottomSize(size,clickId); /* Clear the hover flag, if the user shows this at full size */ if(size==1&&_leoHighlightsPrevElem) _leoHighlightsPrevElem.hover=false; } catch(e) { _leoHighlightsReportExeception("leoHighlightsSetSize()",e); }
} /** * Start the popup a little bit delayed. * Somehow IE needs some time to find the element by id. * * @param anchorId * @param size * * @return */
function leoHighlightsShowPopup(anchorId,size)
{ try { if(_leoHighlightsSnoozed) return false; var elem=_leoHighlightsFindElementById(anchorId); if(_leoHighlightsPrevElem&&(_leoHighlightsPrevElem!=elem)) _leoHighlightsPrevElem.shown=false; elem.shown=true; _leoHighlightsPrevElem=elem; _leoHighlightsDebugLog("leoHighlightsShowPopup() "+_leoHighlightsPrevElem); /* FF needs to find the element first */ _leoHighlightsFindElementById(anchorId); setTimeout("_leoHighlightsShowPopup('"+anchorId+"','"+size+"');",10); } catch(e) { _leoHighlightsReportExeception("leoHighlightsShowPopup()",e); } } /**
*
* This can be used to close an iframe
*
* @param id
* @return
*/
function leoHighlightsHideElem(id)
{ try { /* Get the appropriate sizes */ var elem=_leoHighlightsFindElementById(id); if(elem) elem.style.visibility="hidden"; /* Clear the page for the next run through */ var iFrame=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_TOP_ID); if(iFrame) iFrame.src="about:blank"; var iFrame=_leoHighlightsFindElementById(LEO_HIGHLIGHTS_IFRAME_BOTTOM_ID); if(iFrame) iFrame.src="about:blank"; if(_leoHighlightsPrevElem) { _leoHighlightsPrevElem.shown=false; _leoHighlightsPrevElem=null; } } catch(e) { _leoHighlightsReportExeception("leoHighlightsHideElem()",e); }
} /**
*
* This can be used to close an iframe.
* Since the iFrame is reused the frame only gets hidden
*
* @return
*/
function leoHighlightsIFrameClose()
{ try { _leoHighlightsSimpleGwCallBack("LeoHighlightsHideIFrame"); } catch(e) { _leoHighlightsReportExeception("leoHighlightsIFrameClose()",e); }
} /**
*
* This is used to snooze the highlights.
*
* @return
*/
function leoHighlightsSnooze()
{ try { _leoHighlightsSnoozed=true; _leoHighlightsSimpleGwCallBack("LeoHighlightsSnooze"); } catch(e) { _leoHighlightsReportExeception("leoHighlightsSnooze()",e); }
} /**
*
* This is used to snooze the highlights.
* This gets fired into the top frame.
*
* @return
*/
function leoHighlightsSnoozeTop(id)
{ try { _leoHighlightsSnoozed=true; leoHighlightsHideElem(id); } catch(e) { _leoHighlightsReportExeception("leoHighlightsSnoozeTop()",e); }
} /** * This should handle the click events * * @param anchorId * @return */
function leoHighlightsHandleClick(anchorId)
{ try { if(_leoHighlightsSnoozed) return false; if(_leoHighlightsIsFrame()) return false; var anchor=_leoHighlightsFindElementById(anchorId); anchor.hover=false; if(anchor.startTimer) clearTimeout(anchor.startTimer); /* Report the click event */ leoHighlightsReportEvent("clicked", window.document.domain, _leoHighlightsGetAttrib(anchor,'leohighlights_keywords'),null, _leoHighlightsGetAttrib(anchor,'leohighlights_accept'), _leoHighlightsGetAttrib(anchor,'leohighlights_reject')); leoHighlightsShowPopup(anchorId,1); return false; } catch(e) { _leoHighlightsReportExeception("leoHighlightsHandleClick()",e); } } /** * This should handle the hover events * * @param anchorId * @return */
function leoHighlightsHandleHover(anchorId)
{ try { if(_leoHighlightsSnoozed) return false; if(_leoHighlightsIsFrame()) return false; var anchor=_leoHighlightsFindElementById(anchorId); anchor.hover=true; /* Report the hover event */ leoHighlightsReportEvent("hovered", window.document.domain, _leoHighlightsGetAttrib(anchor,'leohighlights_keywords'),null, _leoHighlightsGetAttrib(anchor,'leohighlights_accept'), _leoHighlightsGetAttrib(anchor,'leohighlights_reject')); leoHighlightsShowPopup(anchorId,0); return false; } catch(e) { _leoHighlightsReportExeception("leoHighlightsHandleHover()",e); } } /** * This will handle the mouse over setup timers for the appropriate timers * * @param id * @return */
function leoHighlightsHandleMouseOver(id)
{ try { if(_leoHighlightsSnoozed) return; if(_leoHighlightsIsFrame()) return; var anchor=_leoHighlightsFindElementById(id); /* Clear the end timer if required */ if(anchor.endTimer) clearTimeout(anchor.endTimer); anchor.endTimer=null; anchor.style.background=LEO_HIGHLIGHTS_BACKGROUND_STYLE_HOVER; var underline=_leoHighlightsGetAttrib(anchor,"leohighlights_underline")=='true'; /* The element is already showing we are done */ if(anchor.shown) return; /* Setup the start timer if required */ anchor.startTimer=setTimeout(function(){ leoHighlightsHandleHover(anchor.id); anchor.hover=true; },underline?LEO_HIGHLIGHTS_SHOW_DELAY_MS:LEO_HIGHLIGHTS_SHOW_DELAY_NO_UNDER_MS); } catch(e) { _leoHighlightsReportExeception("leoHighlightsHandleMouseOver()",e); }
} /** * This will handle the mouse over setup timers for the appropriate timers * * @param id * @return */
function leoHighlightsHandleMouseOut(id)
{ try { var anchor=_leoHighlightsFindElementById(id); /* Clear the start timer if required */ if(anchor.startTimer) clearTimeout(anchor.startTimer); anchor.startTimer=null; anchor.style.background=LEO_HIGHLIGHTS_BACKGROUND_STYLE_DEFAULT; if(!anchor.shown||!anchor.hover) return; /* Setup the start timer if required */ anchor.endTimer=setTimeout(function(){ leoHighlightsHideElem(LEO_HIGHLIGHTS_IFRAME_DIV_ID); anchor.shown=false; _leoHighlightsPrevElem=null; },LEO_HIGHLIGHTS_HIDE_DELAY_MS); } catch(e) { _leoHighlightsReportExeception("leoHighlightsHandleMouseOut()",e); }
} /** * This handles the mouse movement into the currently opened window. * Just clear the close timer * * @return */
function leoHighlightsHandleIFrameMouseOver()
{ try { if(_leoHighlightsPrevElem&&_leoHighlightsPrevElem.endTimer) clearTimeout(_leoHighlightsPrevElem.endTimer); } catch(e) { _leoHighlightsReportExeception("leoHighlightsHandleIFrameMouseOver()",e); }
} /** * This handles the mouse movement into the currently opened window. * Just clear the close timer * * @param id * @return */
function leoHighlightsHandleIFrameMouseOut()
{ try { if(_leoHighlightsPrevElem) leoHighlightsHandleMouseOut(_leoHighlightsPrevElem.id); } catch(e) { _leoHighlightsReportExeception("leoHighlightsHandleIFrameMouseOut()",e); }
}
/** * This is a method is used to make the javascript within IE runnable */
var leoHighlightsRanUpdateDivs=false;
function leoHighlightsUpdateDivs()
{ try { /* Check if this is an IE browser and if divs have been updated already */ if(document.all&&!leoHighlightsRanUpdateDivs&&!_leoHighlightsIsFrame()) { leoHighlightsRanUpdateDivs=true; // Set early to prevent running twice for(var i=0;i0) url=url.substring(0,idx); /* Append the text to the end */ url+="#"+encodeURI(txt); /* Set the iframe with the new url that contains the hash tag */ topIFrame.src=url; } catch(e) { _leoHighlightsReportExeception("leoHighlightsSetExpandTxt()",e); }
} /*----------------------------------------------------------------------*/
/* Methods provided to the highlight providers... */
/*----------------------------------------------------------------------*/ /** * This will set the expand text for the Top window */
function leoHL_SetExpandTxt(txt)
{ try { _leoHighlightsDebugLog("leoHL_SetExpandTxt() "+txt); _leoHighlightsSimpleGwCallBack("LeoHighlightsSetExpandTxt","expandTxt",txt); } catch(e) { _leoHighlightsReportExeception("leoHL_SetExpandTxt()",e); }
} /** * This will redirect the top window to the passed in url * * @param url * @param parentId * @return */
function leoHL_RedirectTop(url,parentId)
{ try { try{ var domain=_leoHighlightsGetUrlArg(window.document.URL,"domain") var keywords=_leoHighlightsGetUrlArg(window.document.URL,"keywords") var vendorId=_leoHighlightsGetUrlArg(window.document.URL,"vendorId") leoHighlightsReportEvent("clickthrough", domain,keywords, vendorId); }catch(e){ _leoHighlightsReportExeception("leoHL_RedirectTop()",e); } _leoHighlightsRedirectTop(url); } catch(e) { _leoHighlightsReportExeception("leoHL_RedirectTop()",e); }
} /** * This will redirect the top window to the passed in url * * @param url * @param parentId * @return */
function LeoHL_RedirectTop(url,parentId)
{ leoHL_RedirectTop(url,parentId);
} /** * This will redirect the top window to the passed in url * * @param url * @param parentId * @return */
function leoHL_RedirectTopAd(url,parentId)
{ try { try{ var domain=_leoHighlightsGetUrlArg(window.document.URL,"domain") var keywords=_leoHighlightsGetUrlArg(window.document.URL,"keywords") var vendorId=_leoHighlightsGetUrlArg(window.document.URL,"vendorId") leoHighlightsReportEvent("advertisement.click", domain,keywords, vendorId); }catch(e){ _leoHighlightsReportExeception("leoHL_RedirectTopAd()",e); } _leoHighlightsRedirectTop(url); } catch(e) { _leoHighlightsReportExeception("leoHL_RedirectTopAd()",e); }
} /** * This will set the size of the iframe * * @param url * @param parentId * * @return */
function leoHl_setSize(size,url)
{ try { /* Get the clickId */ var clickId=_leoHighlightsGetUrlArg( url,"clickId") var gwObj = new Gateway(); gwObj.addParam("size",size); if(clickId) gwObj.addParam("clickId",clickId+"_blah"); gwObj.callName("LeoHighlightsSetSize"); } catch(e) { _leoHighlightsReportExeception("leoHl_setSize()",e); }
} /** * This will toggle the size of the window * * @return */
function leoHl_ToggleSize()
{ try { var gwObj = new Gateway(); gwObj.callName("LeoHighlightsToggleSize"); } catch(e) { _leoHighlightsReportExeception("leoHl_ToggleSize()",e); }
} ");
]]>[removed]
About the Author
I am a Microsoft Certified Professional. I conduct Training and Certification Guidance for Microsoft .Net Certification Courses through my training institute-Sierra Infotech. I also own and manage a SEO Company and article Directory
.
FAB 1 inch offset Rail Mounted Tactical Flashlight holder from Zahal.org


























































































