var TD_Global = this;
function TD_Logger() {
	/*
	Abstract the various browser/plugin specific JavaScript 
	console logging features.
	*/
}
TD_Logger.log = function(msg) {
	if (TD_Global.console) {
		TD_Global.console.log(msg);
	} else if (window.console) {
		window.console.log(msg);
	}
};
function TD_LoginWidget() {
	//Simple class to build the TD login widget.
}
/*
TDLoginWidget.bg_color will either be set by the calling page, or determined 
by the get_TDLoginWidget.bg_color function.
*/
TD_LoginWidget.text_color = "#666644";
TD_LoginWidget.link_color = "#006666";
TD_LoginWidget.bg_color = null;
TD_LoginWidget.background_image = "http://www.teachersdomain.org/images/td_logo_signin_ext.gif";
TD_LoginWidget.border_color = "#ccccaa";
TD_LoginWidget.widget_bg_color = "#fffff1";
TD_LoginWidget.default_text = "Please sign in to use Teachers' Domain resources:";
TD_LoginWidget.default_text_width = "180";
TD_LoginWidget.show_why_register_link = true;
TD_LoginWidget.widget_height = 220;

TD_LoginWidget.get_bg_color = function() {
	function get_node_background_color(node) {
		//This inner function will only be called on non-IE browsers:
		function RGBTupletoHex(R,G,B) {return RGBtoHex(R)+RGBtoHex(G)+RGBtoHex(B)}
		function RGBtoHex(N) {
			/*
			Taken from http://www.linuxtopia.org/online_books/javascript_guides/javascript_faq/rgbtohex.htm
			*/
			if (N==null) return "00";
		 	N = parseInt(N); 
			if (N==0 || isNaN(N)) return "00";
		 	N = Math.max(0,N); 
			N = Math.min(N,255); 
			N = Math.round(N);
		 	return "0123456789ABCDEF".charAt((N-N%16)/16) + "0123456789ABCDEF".charAt(N%16);
		}
		function rgb(red,green,blue) {
			/*
			This is a hack. getComputedStyle returns a 
			string formatted as such: 'rgb(255,255,255)', so were 
			evaling it and mapping the string to a function. This one, in fact.
			*/
			var raw_hex = RGBTupletoHex(red,green,blue);
			return '#' + raw_hex;
		}
		var bg_color_string = document.defaultView.getComputedStyle(node,null).getPropertyValue("background-color");
		/*
		If the given node does not have an explicit background-color property set on it, then different browsers 
		will return different values to represent transparency. If this is the case, we'll recurse unil we get a parent that sets 
		the value.
		
		bg_color_string might contain:
		
		Firefox: 'transparent'
		
		Safari: rgba(0,0,0,0)
		
		*/
		if (bg_color_string.search(/^rgb\(/) != -1) {
			return eval(bg_color_string);
		} else if (node.parentNode && node.parentNode.nodeName != '#document') {
			//need to recurse up the tree:
			return get_node_background_color(node.parentNode);
		} else {
			//if no background color is explicitly set in via css, then we'll eventually 
			//recurse to a point where there is no parentNode to check. In those cases, we'll 
			//just default to white:
			return '#ffffff';
		}
	}
	var scripts = document.getElementsByTagName("script");  
	var target_script_element = null;
	for (var i = 0;i < scripts.length;i++) {
		if (scripts[i].src.indexOf('widget_lgn.js') != -1) {
			target_script_element = scripts[i];
			break;
		}
	}
	var default_color = "#ffffff";
	var color = '#ffffff';
	if (target_script_element) {
		if (document.defaultView) {
			color = get_node_background_color(target_script_element.parentNode);
		} else if (target_script_element.parentNode.currentStyle.backgroundColor) {
			color = target_script_element.parentNode.currentStyle.backgroundColor;
		}
	} 
	if (color == 'transparent') {
	    color = default_color;
	}
	return color;
	
};
TD_LoginWidget.render = function(code) {
	if (!code) {
		code = ''; 
	}
	
	if (!TD_LoginWidget.bg_color) {
		TD_LoginWidget.bg_color = TD_LoginWidget.get_bg_color();
	}
    document.write('<iframe scrolling="no" src="http://www.teachersdomain.org/lgn_widget_frame.html?link_color='+escape(TD_LoginWidget.link_color)+'&show_why_register_link='+escape(TD_LoginWidget.show_why_register_link)+'&default_text_width='+escape(TD_LoginWidget.default_text_width)+'&default_text='+escape(TD_LoginWidget.default_text)+'&text_color='+ escape(TD_LoginWidget.text_color) + '&border_color='+ escape(TD_LoginWidget.border_color) + '&widget_bg_color=' + escape(TD_LoginWidget.widget_bg_color) + '&logo_image=' + escape(TD_LoginWidget.background_image) + '&code=' + escape(code) + '&bg_color=' + escape(TD_LoginWidget.bg_color) +'"width="347" height="'+TD_LoginWidget.widget_height+'" frameborder="0" name="td_widget" id="td_widget" marginwidth="0" marginheight="0" allowtransparency="true"></iframe>');	
};
function build_widget(code) {
	//deprecated: use TD_LoginWidget.render instead
	if (!code) {
		code = ''; 
	}
	TD_LoginWidget.render(code);
}