var itk_cur_domain		= document.location.host
var itk_refer_page 		= document.referrer + ""
var itk_cur_location 	= document.location + ""
var itk_is_typepad 		= (itk_cur_location.indexOf("typepad.com") != -1) ? true : false
var ppp_loading 		= "<table width='100%' height='100%'><tr><td valign='middle' align='center'><img style='vertical-align:middle;' src='"+itk_ppp_root+"/images/dialogLoading.gif'><BR>Loading...</td></tr></table>"
var itk_old_onload 		= window.onload;
var ad_closed			= true
var itk_arrive_time 	= new Date()
var itk_init_fired 		= false
var itk_page_view_id	= ""
var itk_debugger		= false
var itk_spon_preview    = (typeof(itk_spon_preview) == "undefined") ? false : itk_spon_preview

var itk = {
	init: function (){
		this.mouse_x 			= 0
		this.mouse_y 			= 0
		this.offset_y 			= 0
		this.offset_x 			= 0
		this.png_img_id 		= 0
		this.png_restyled 		= false
		this.doc_width 			= 0
		this.doc_height 		= 0
		this.browser_width 		= 0
		this.browser_height 	= 0
		itk_page_view_id	    = itk_ids.create()
	},
	id: function (x){ return document.getElementById(x) },
	nm: function (x,y){ return document.getElementsByName(x)[y] },
	ce: function (x){ return document.createElement(x) },
	ac: function (x,y){ x.insertBefore(y, x.firstChild) },
	rc: function (x,y){ x.removeChild(y) },
	i: function (x){ return parseInt(x) },
	fv: function (form, field, val){ if(itk.id(field)) itk.id(field).value = val }, //TESTED
	cfi: function (form, name, value){ //TESTED
		var b = itk.ce("input")
		b.setAttribute("type", "hidden")
		b.setAttribute("name", name)
		b.setAttribute("value", value)
		b.id = name
		itk.ac(form, b)
	},
	cf: function (name, target, action){ //TESTED
		var a = itk.ce("form")
		a.setAttribute("name", name)
		a.setAttribute("method", "post")
		a.setAttribute("target", target)
		a.setAttribute("action", action)
		a.id = name
        a.style.display = "none" // !important
		return a
	},
	form_submit: function (action){
		for(i=0;i<document.forms.length;i++){
			if(document.forms[i].action == action) document.forms[i].submit()
		}
	},
	mouse_position: function (e) {
		if (!e) var e = window.event
		var x = (itk_browser.browser == "Explorer") ? (event.clientX + document.body.scrollLeft) : e.pageX
		var y = (itk_browser.browser == "Explorer") ? (event.clientY + document.body.scrollTop) : e.pageY
		itk.mouse_x = (x < 0) ? 0 : x
		itk.mouse_y = (y < 0) ? 0 : y
	},
	scrolling: function (){ //TESTED
		if(itk_browser.browser == "Explorer"){
			itk.offset_y = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop
			itk.offset_x = (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft
		}else{
			itk.offset_y = window.pageYOffset
			itk.offset_x = window.pageXOffset
		}
	},
	doc_dimensions: function (){
		itk.doc_width = document.width ? document.width : document.documentElement.offsetWidth
		itk.doc_height = document.height ? document.height : document.documentElement.offsetHeight
	},
	browser_dimensions: function (){
	  	if(typeof( window.innerWidth ) == 'number') {
	    	itk.browser_width = window.innerWidth
	    	itk.browser_height = window.innerHeight
	  	}else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	    	itk.browser_width = document.documentElement.clientWidth
	    	itk.browser_height = document.documentElement.clientHeight
	  	}else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    	itk.browser_width = document.body.clientWidth
			itk.browser_height = document.body.clientHeight
		}
		itk.doc_dimensions()
		// if(itk.doc_height > itk.browser_height && itk_browser.browser == "Explorer"){
		//            itk.browser_width = itk.browser_width - 15
		//        }
	},
	browser_lang: function (){
		var a = (navigator.appName == 'Netscape') ? navigator.language : navigator.browserLanguage
		return a.substring(0,2)
	},
	resize_browser: function (){
		itk.browser_dimensions()
		itk.scrolling()
		if(window.itk_sponsorships) itk_sponsorships.position()
		//if(window.itk_icp) itk_icp.position()
	},
	get_element: function (e){
		var return_element
		if (e.target) return_element = e.target
		else if (e.srcElement) return_element = e.srcElement
		if (return_element.nodeType == 3) return_element = return_element.parentNode
		itk_return_element = return_element
		return return_element
	},
	get_pixels_from_top: function (obj){
		objFromTop = obj.offsetTop
		while(obj.offsetParent!=null) {
			objParent = obj.offsetParent
			objFromTop += objParent.offsetTop
			obj = objParent
		}
		return objFromTop
	},
	get_pixels_from_left: function (obj){
		objFromLeft = obj.offsetLeft
		while(obj.offsetParent!=null) {
			objParent = obj.offsetParent
			objFromLeft += objParent.offsetLeft
			obj = objParent
		}
		return objFromLeft
	},
	next_zindex: function (){
		var elms = document.getElementsByTagName? document.getElementsByTagName("*") : document.all
		var max_zi = 0
		for(var i=0;i<elms.length;i++) {
			var elm = elms[i]
			var cStyle = null
			if (elm.currentStyle) {
				cStyle = elm.currentStyle
			}else if (document.defaultView && document.defaultView.getComputedStyle) {
				cStyle = document.defaultView.getComputedStyle(elm,"")
			}
			var sNum
			if (cStyle) {
				sNum = Number(cStyle.zIndex)
			}else sNum = Number(elm.style.zIndex)
			if (!isNaN(sNum)) max_zi = Math.max(max_zi,sNum)
		}
		return max_zi
	},
	png: function (img,width,height,name){
		itk.png_img_id++
		return '<img name="'+name+'" id="itk_image_'+itk.png_img_id+'" SRC="'+img+'" ALT="ITK Image" height='+height+' width='+width+' style="padding:0px;border:0px;margin:0px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='+img+', sizingMethod=scale);" >'
	},
	fix_padding: function (){
		pppObject.body.style.margin = '0'
		pppObject.body.style.padding = '0'
	},
	restyle_images: function (){
		for(i=1;i<itk.png_img_id+1;i++){
			if(itk.id("itk_image_"+i).src && itk.id("itk_image_"+i).src != itk_ppp_root + "/images/spacer.gif")
				eval("itk_image_"+i+".src = '"+itk_ppp_root+"/images/spacer.gif'")
		}
		itk.png_restyled = true
	},
	restyle_single_image: function (elm){
	    eval("itk.nm(elm,0).src = '" + itk_ppp_root + "/images/spacer.gif'")
	},
	tomorrow_at_midnight: function(){
	    var a = new Date();
			a.setDate(a.getDate() + 1);
			a.setHours(0);
			a.setMinutes(0);
			a.setSeconds(0);
		return a.toGMTString();
	}
}

var itk_ids = {  //TESTED
	S4: function (){ return (((1+Math.random())*0x10000)|0).toString(16).substring(1) },
	create: function (){ return (this.S4()+this.S4()+"-"+this.S4()+"-"+this.S4()+"-"+this.S4()+"-"+this.S4()+this.S4()+this.S4()) }
}

var itk_query = { //TESTED
	read: function (which){
		var name = which + "="
		var data = document.cookie.split(';')
		for(var i = 0; i < data.length; i++){
			while (data[i].charAt(0) == ' ') data[i] = data[i].substring(1, data[i].length)
			if(data[i].indexOf(name) == 0) return data[i].substring(name.length, data[i].length)
		}
		return false
	},
	fetch: function (which, url){
		a = itk.ce("script")
		a.setAttribute("id", which + "_req")
		a.setAttribute("src", url)
		a.setAttribute("type", "text/javascript")
		document.getElementsByTagName('head').item(0).appendChild(a)
	},
	save: function (name, value, days){
		if(days && typeof(days) == "number"){
			var date = new Date()
			date.setTime( date.getTime() + (days*24*60*60*1000) )
			var expires = "; expires=" + date.toGMTString()
		}else if(days && typeof(days) == "string"){
			var expires = "; expires=" + days
		}else var expires = ""
		document.cookie = name + "=" + value + expires + "; path=/"
	},
	remove: function (name){ this.save(name,"",-1) },
	flush: function (which){ if(itk.id(which + "_req")) document.getElementsByTagName('head').item(0).removeChild(itk.id(which + "_req")) }
}

var itk_browser = { //TESTED
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser"
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version"
		this.OS = this.searchString(this.dataOS) || "an unknown OS"
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string
			var dataProp = data[i].prop
			this.versionSearchString = data[i].versionSearch || data[i].identity
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1) return data[i].identity
			}else if (dataProp)
			return data[i].identity
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString)
		if (index == -1) return
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1))
	},
	dataBrowser: [
		{ string: navigator.userAgent, subString: "OmniWeb", versionSearch: "OmniWeb/", identity: "OmniWeb"},
		{ string: navigator.vendor, subString: "Apple", identity: "Safari"},
		{ prop: window.opera, identity: "Opera"},
		{ string: navigator.vendor, subString: "iCab", identity: "iCab"},
		{ string: navigator.vendor, subString: "KDE", identity: "Konqueror"},
		{ string: navigator.userAgent, subString: "Firefox", identity: "Firefox"},
		{ string: navigator.vendor, subString: "Camino", identity: "Camino"},
		{ string: navigator.userAgent, subString: "Netscape", identity: "Netscape"},
		{ string: navigator.userAgent, subString: "MSIE", identity: "Explorer", versionSearch: "MSIE"},
		{ string: navigator.userAgent, subString: "Gecko", identity: "Mozilla", versionSearch: "rv"},
		{ string: navigator.userAgent, subString: "Mozilla", identity: "Netscape", versionSearch: "Mozilla"}
	],
	dataOS : [
		{ string: navigator.platform, subString: "Win", identity: "Windows"},
		{ string: navigator.platform, subString: "Mac", identity: "Mac"},
		{ string: navigator.platform, subString: "Linux", identity: "Linux"}
	]
}

var itk_debug = {
	message: function (msg){ if(itk_debugger) alert(msg) },
	seconds: function (){ var d = new Date(); return itk.i(d.getTime()/1000) - itk.i(itk_arrive_time.getTime()/1000); }
}

var itk_loaders = {
    analytics: function(){
        if(document.body && document.body.firstChild && window.itk_analytics_visit_loaded){
            clearInterval(itk_watch_for_analytics)
            itk_analytics_visit.init()
        }
    },
	sponsorship: function(){
		if(document.body && document.body.firstChild && window.itk_sponsorships_loaded){
			clearInterval(itk_watch_for_sponsorships)
			if(!itk_spon_preview){
			    //if(parseInt(itk_socialspark_blog_id) != 0){
    			    itk_sponsorships.check_for_sponsorship()
    		    //}
			}
		}
	},
	izearanks_badge: function(){
		if(document.body && document.body.firstChild && window.itk_izearanks_badge_loaded && itk.id("izearanks_badge")){
			clearInterval(itk_watch_for_izearanks_badge)
			itk_izearanks_badge.install()
		}
	},
	disclosure_badge: function(id){
		if(document.body && document.body.firstChild && window.itk_disclosure_badge_loaded){
			clearInterval(itk_watch_for_disclosure_badge)
			itk_disclosure_badge.show(id) 
		}
		
	}
}

// WATCHERS AND LISTENERS
	var itk_watch_dom, itk_watch_for_analytics, itk_watch_for_sponsorships, itk_watch_for_izearanks_badge, itk_watch_for_disclosure_badge
	if(itk_do_analytics) itk_watch_for_analytics = setInterval("itk_loaders.analytics()", 100)
	if(itk_do_sponsorships) itk_watch_for_sponsorships = setInterval("itk_loaders.sponsorship()", 100)
	document.addEventListener ? document.addEventListener('mousemove', itk.mouse_position, true) : document.attachEvent('onmousemove', itk.mouse_position)
	window.addEventListener ? window.addEventListener("resize", itk.resize_browser, false) : window.attachEvent('onresize', itk.resize_browser)

// POINTERS (for backwards compatibility)
	function itk_show_rank_badge(){ itk_watch_for_izearanks_badge = setInterval("itk_loaders.izearanks_badge()", 2000) }
	function itk_receive_rank_badge(val) {itk_izearanks_badge.return_data(val) }
	function hide_disclosure_ad() { itk_disclosure_badge.hide() }
	function show_disclosure_ad(id) { itk_watch_for_disclosure_badge = setInterval("itk_loaders.disclosure_badge("+id+")", 2000) }
	function show_direct_form(id,url,badge) { itk_ppp_direct.show(id,url,badge) }
	var ppp_browser_width, ppp_browser_height;
	function ppp_get_browser_dimensions() { itk.browser_dimensions(); ppp_browser_width=itk.browser_width; ppp_browser_height=itk.browser_height }
	var ppp_BrowserDetect = {
		init: function () {
			this.browser = itk_browser.browser
			this.version = itk_browser.version
			this.OS = itk_browser.OS
		}
	}
	
// FIRE LOADERS
	itk.init()
	itk_browser.init()
	ppp_BrowserDetect.init()
	//itk_loaders.init()