/*[DOCLIX Suite 1]*/
/*[check string]*/
String.prototype.has = function (s) {
	var x;
	this.indexOf(s) != -1 ? x = true : x = false;
	return x;
};
String.prototype.is = function (s) {
	var x;
	this == s ? x = true : x = false;
	return x;
};
/*[reverse string]*/
String.prototype.reverse = function () {
var r = '';
	for (var i = this.length-1; i>=0; i--) {
		r += this.charAt(i);
	}
return r;
};
/*[inflate array]*/
Array.prototype.inflate = function (n, i) {
	var j = i || 0;
	while (this.length > 0 && this.length < n) {
		this.push(this[j]);
		j++;
	}
};

if (typeof doclix == 'undefined')
	doclix = {
		/*[environment data (user agent and quirks mode)]*/
		env : {
			loaded : false,
			ua : {
				ie : {
					all : false,
					v8 : false,
					v7 : false,
					old : false
				},
				ffox : false,
				safari : false,
				chrome : false,
				nn : false,
				opera : false
			},/*[end user agent]*/
			quirks : false
		},/*[end env]*/
		//debug : true,
		info : true,
		pins : 0,
		place : {
				find : function () { var dx = doclix;
					dx.place.parents = []; dx.place.scope = '|';
					var ss = dx.get.tav('script', 'src', 'doclix_synd.js');
					for (var i=0; i < ss.length; i++) {
						dx.place.parents.push(ss[i].parentNode);
					}
					for (var j=0; j < dx.place.parents.length; j++) {
						dx.place.scope += dx.place.parents[j].nodeName+'|';
					} dx.pins = ss.length;
				}
			},/*[end placement]*/
		ads : {
			/*[services: called|matched|served]*/
			domain : document.location.protocol+'//ads.doclix.com/',
			links : 0,
			count : 0,
			cap : 2
		},
		/*[common get element(s) by methods]*/
		get : {
			id : function (s) {
				var el, d = document, id = 'getElementById';
				d[id](s) ? el = d[id](s) : el = false; return el;
			},
			tn : function (s, obj) {
				var els = [], tn = 'getElementsByTagName';
				s = s || '*'; obj = obj || document; els = obj[tn](s);
				return els;
			},
			cn : function (s_cn, s_tn, obj) {
				var els = [], c_els = [], tn = 'getElementsByTagName', cN ='className';
				s_tn = s_tn || '*'; obj = obj || document; els = obj[tn](s_tn);
				for (var i=0; i<els.length; i++) {
					if (els[i][cN].has(s_cn)) {
						c_els.push(els[i]);
					}
				}
				return c_els;
			},
			tav : function (s_tn, s_an, s_av, obj) {
				var dx = doclix, els = [], a_els = [], tn = 'getElementsByTagName', gA ='getAttribute', r = 'replace';
				s_tn = s_tn || '*'; obj = obj || document; els = obj[tn](s_tn);
				if (dx.env.ua.ie.all) {s_an == 'class' ? s_an = 'className' : s_an = s_an;} /*[special case for IE]*/
				for (var i=0; i<els.length; i++) {
					if (s_an && s_av) {
						if (els[i][gA](s_an)) {
							if (s_an == 'style') {/*[Firefox rearranges CSS styles, so it is safer to check for each rule separately]*/
								if (!dx.env.ua.ie.all || (dx.env.ua.ie.all && els[i][gA](s_an).cssText != '')) {/*[IE thinks that every tag has a style object attached to it, so we only check those which are not empty]*/
									var	css = s_av[r](/\b0pt|0px\b/gi, '0');/*[FF treats "0" as "0pt", IE treats "0" as "0px"...]*/
										css = css[r](/;$/, '');/*[remove trailing ";"]*/
										css = css[r](/\s{2,}/g, ' ');
										css = css[r](/\:|,|\(|\)/g, ' ');
										css = css[r](/\s/g, '[\\s\\:\\(\\),]+');
									var a_av = css.split(';');
									var css_matches = 0;
									for (var j = 0; j < a_av.length; j++) {
										if (a_av[j] != '') {
											var re = new RegExp(a_av[j], 'i');
											if (dx.env.ua.ie.all) {/*[special case for IE style object]*/
												if (re.test(els[i][gA](s_an).cssText[r](/\b0pt|0px\b/gi, '0'))) {
													css_matches++;
												}
											} else {
												if (re.test(els[i][gA](s_an)[r](/\b0pt|0px\b/gi, '0'))) {
													css_matches++;
												}
											}
										}
									}
									if (css_matches == a_av.length) {
										a_els.push(els[i]);
									}
								}
							} else {
								/*["contains" vs. "is"]*/
								if (els[i][gA](s_an).has(s_av)) {
									a_els.push(els[i]);
								}
							}
						}
					} else if (s_an && !s_av) {
						if (els[i][gA](s_an)) {
							a_els.push(els[i]);
						}
					} else if (!s_an) {
						a_els.push(els[i]);
					}
				}
				return a_els;
			},
			css : function (obj, css_s, css_s_ie) { /*[read CSS properties]*/
				var w = window, gcs = 'getComputedStyle', cs = 'currentStyle';
				if (w[gcs]) {
					return w[gcs](obj, null).getPropertyValue(css_s);
				} else if (obj[cs]) {
					return obj[cs][css_s_ie];
				}
			}
		},/*[end get by]*/
		/*[common create methods]*/
		make : {
			el : function (s) {
				return document.createElement(s);
			},
			txt : function (s) {
				return document.createTextNode(s);
			}
		},/*[end make]*/
		/*[common clear methods]*/
		x : {
			i : function (n) {
				if (n > 0) window.clearInterval(n);
			},
			t : function (n) {
				if (n > 0) window.clearTimeout(n);
			}
	
		},/*[end clear]*/
		/*[common functions]*/
		add : {
			event : function (obj, et, fcall, capture) {
				var add = 'addEventListener', att = 'attachEvent';
				if (obj[add]) {
					obj[add](et, fcall, capture); 
				} else if (obj[att]) { 
					obj[att]('on' + et, fcall);
				} else { 
					et = 'on' + et;
					if (typeof obj[et] == 'function') {
						var oe = obj[et]; 
						obj[et] = function () {
							oe(); return fcall(); 
						} 
					} else { 
						obj[et] = fcall; 
					}
				}
			},
			load : function (fcall) {
				var w = window, o = 'onload';
				var wload = w[o];
				if (typeof w[o] != 'function') {
					w[o] = fcall;
				} else {
					w[o] = function () {
						if (wload) wload();
						fcall();
					}
				}
			}
		},
		load : {
			file : function (fsrc, ftype, force, chset) {
				var dx = doclix, ef = '', sA = 'setAttribute', aC = 'appendChild';
				typeof dx.load.efs == 'undefined' ? dx.load.efs = '' : dx.load.efs = dx.load.efs;
				if (!dx.load.efs.has(fsrc) || force == true)	{ /*[check to see if this object has not already been added to page before proceeding, or force reload]*/
					if (ftype == 'script' || (!ftype && fsrc.has('.js'))) {
						ef = dx.make.el('script');
						ef[sA]('type', 'text/javascript');
						ef[sA]('src', fsrc);
						ef[sA]('defer', 'defer');
						if (chset) {
							ef[sA]('charset', chset);
						}
					} else if (ftype == 'style' || (!ftype && fsrc.has('.css')))	{
						ef = dx.make.el('link');
						ef[sA]('rel', 'stylesheet');
						ef[sA]('type', 'text/css');
						ef[sA]('href', fsrc);
					}
				}
				if (ef != '')	{
					if (dx.get.tn('head').length > 0) {
						dx.get.tn('head')[0][aC](ef); /*[if there is no head, most browsers create one, except Safari and Opera, those will throw an error.]*/				
					} else {
						document[aC](ef);
					} dx.load.efs += fsrc + ' '; /*[remember this object as being already added to page]*/
				}
			}
		},
		idle : function (ms) { /*[reserved]*/
			var o = new Date(), n = 0;
			do { n = new Date();} while (n - o < ms);
		}
	};

if (typeof doclix.ads.called == 'undefined') doclix.ads.called = false;
if (typeof doclix.ads.matched == 'undefined') doclix.ads.matched = false;
if (typeof doclix.ads.served == 'undefined') doclix.ads.served = false;

/*[START]*/
(function () {
	var dx = doclix;
	/*[find placement]*/
	dx.place.find();
	if (typeof dx.state == 'undefined') { /*[only run once]*/
		dx.state = 'synd';
		var d = document, cm = 'compatMode';
		/*[quirks mode?]*/
		d[cm] && d[cm] == 'BackCompat' ? dx.env.quirks = true : dx.env.quirks = false;
		/*[browser?]*/
		var n = navigator, ua = 'userAgent', an = 'appName';
		var v = -1;
		if (n[an] == 'Microsoft Internet Explorer') {
			dx.env.ua.ie.all = true;
			var re = new RegExp('MSIE ([0-9]{1,}[\.0-9]{0,})');
			if (re.exec(n[ua]) != null) {
				v = parseFloat(RegExp.$1);
			}
			if (v >= 8.0) {
				dx.env.ua.ie.v8 = true;
			} else if (v >= 7.0 && v < 8.0) {
				dx.env.ua.ie.v7 = true;
			} else if (v < 7.0) {
				dx.env.ua.ie.old = true;
			}
		} else if (n[an] == 'Opera') {
			dx.env.ua.opera = true;
		} else {
			if (n[ua].has('Firefox') && !n[ua].has('Navigator')) dx.env.ua.ffox = true;
			if (n[ua].has('Safari')) dx.env.ua.safari = true;
			if (n[ua].has('Chrome')) dx.env.ua.chrome = true;
			if (n[ua].has('Navigator')) dx.env.ua.nn = true;
		}
		/*[add onload marker]*/		
		dx.add.load(function(){
			dx.env.loaded = true;
			dx.dev.timer('doclix.env.loaded: ' + dx.env.loaded);
		});
	}
})();
	

doclix_onDOM = function (fcall) { /*[v. 1.3]*/
	if (doclix.env.loaded || typeof ifrmCount != 'undefined') {
		fcall();
	} else {
		var fn = doclix_onDOM, n = navigator, ua = 'userAgent', d = document, de = 'documentElement', w = window, fs = 'doclix_onDOM', e = 'addEventListener', dom = 'DOMContentLoaded', o = 'opera', r = 'readyState', s = '<scr'.concat('ipt defer src="//:" on', r, 'change="if(this.', r, '==\'complete\'){this.parentNode.removeChild(this);', fs, '.', fs, '();}"></scr', 'ipt>');
		fn[fs] = (function (ocall) {
			return function () {	fn[fs] = function () {};
				for (a = arguments.callee; !a.done; a.done = true) {
					if (d[de].doScroll) {try {d[de].doScroll('left');} catch (e) {setTimeout(a, 50);return;}}
					fcall(ocall ? ocall() : ocall);
				}
			}
		})(fn[fs]);
		if (d[e]) d[e](dom, fn[fs], false);
		if (/WebKit|Khtml/i.test(n[ua]) || (w[o] && parseInt(w[o].version()) < 9)) 
			(function(){
				/loaded|complete/.test(d[r]) ? fn[fs]() : setTimeout(arguments.callee, 1)
			})();
		else if (/MSIE/i.test(n[ua])) d.write(s);
	}
}

/**********************************************************************************/
/*[development scripts]*/
if (doclix.debug) {
	if (typeof doclix.dev == 'undefined') {
		doclix.start = new Date().getTime()/1000;
		doclix.dev = {
			build : function () {
				devdiv = doclix.make.el('div');
				devdiv.id = 'doclix_devdiv';
				doclix.env.ua.ie.old || (doclix.env.ua.ie.all && doclix.env.quirks) ? devdiv.style.position = 'absolute' : devdiv.style.position = 'fixed';
				devlist = doclix.make.el('ol');
			},
			append : function () {
				devdiv.appendChild(devlist);
				document.body.appendChild(devdiv);
			},
			show : function (s) {
				nli = doclix.make.el('li');
		        nli.innerHTML = s;
		        devlist.appendChild(nli);
		    },
			start : doclix.start,
			timer : function (s) {
				!s ? s = 'time' : s = s;
				var time = new Date();
				var lapse = time.getTime()/1000 - doclix.dev.start;
				doclix.dev.show(s+': <b>'+lapse.toFixed(4)+'</b> sec');
			}
		};
	doclix.dev.build();
	};
} else {
	doclix.dev = {append: function () {}, show: function () {}, timer: function () {}}
}
doclix.dev.timer('doclix.state: '+doclix.state+' (start) pins: '+doclix.pins);
/*[end development scripts]*/
/*********************************************************************************/

/*[temporary replacenment functions]*/
doclix.ad = {
	activate : function () { /*[placeholder]*/ }
};

/*[AdSide Scripts]*/

if (typeof doclix_pid == 'undefined')
	doclix_pid = 0;

doclix.dev.show('doclix_pid: '+doclix_pid);

if (typeof doclix_demo_mode == 'undefined')
	doclix_demo_mode = false;
	
if (typeof doclix_home_mode == 'undefined')
	doclix_home_mode = false;

if (doclix_demo_mode && document.location.protocol == 'https:') {/*[turn absolute links into relative for running under the "https://" protocol]*/
	doclix.ads.domain = '/';
}

if (typeof doclix_category == 'undefined')
	doclix_category = '';

/*[call services]*/
(function () {
	var dx = doclix, rS = 'readyState', dom = 'DOMContentLoaded';
	doclix_onDOM(function () {
		dx.domcall = true;
		dx.load.file(doclix.ads.domain + 'adserver/serve/js/doclix_init.js', 'script', '', 'utf-8');
		dx.dev.append();
		dx.dev.timer('onDOM call');
	});
	/* in progress 
	doclix.check = window.setTimeout( function () {
		if (dx.state == 'synd' && !dx.domcall) {
			dx.load.file(doclix.ads.domain + 'adserver/serve/js/doclix_init.js', 'script', '', 'utf-8');
			dx.dev.append();
			dx.dev.timer('delayed call');
		}
	}, 100);*/
})();

doclix.dev.timer('doclix.state: '+doclix.state+' (end)');
/*[end]*/
