/* this script has 3 main sections
 *  Line #	Function
 *  4		Ajax
 *  127		xhtmlTools
 *  230		util
 *  614		onloader
 **/

function Ajax() {
 this.req = null;
 this.url = null;
 this.method = 'GET';
 this.async = true;
 this.status = null;
 this.statusText = '';
 this.postData = null;
 this.readyState = null;
 this.responseText = null;
 this.responseXML = null;
 this.handleResp = null;
 this.responseFormat = 'text', // 'text', 'xml', or 'object'
 this.mimeType = null;

 this.init = function() {
  if (!this.req) {
   try {
     // Try to create object for Firefox, Safari, IE7, etc.
     this.req = new XMLHttpRequest();
   }
   catch (e) {
     try {
       // Try to create object for later versions of IE.
       this.req = new ActiveXObject('MSXML2.XMLHTTP');
     }
     catch (e) {
       try {
         // Try to create object for early versions of IE.
         this.req = new ActiveXObject('Microsoft.XMLHTTP');
       }
       catch (e) {
         // Could not create an XMLHttpRequest object.
         return false;
       }
     }
   }
 }
 return this.req;
 };
 
 this.doReq = function() {
	if (!this.init()) {
		alert('Could not create XMLHttpRequest object.');
		return;
	}
	this.req.open(this.method, this.url, this.async);
	var self = this; // Fix loss-of-scope in inner function
	this.req.onreadystatechange = function() {
		if (self.req.readyState == 4) {
		    switch (self.responseFormat) { 
				case 'text':
					resp = self.req.responseText;
					break;
				case 'xml':
					resp = self.req.responseXML;
					break;
				case 'object':
					resp = req;
					break;
			}
			if (self.req.status >= 200 && self.req.status <= 299) {
				self.handleResp(resp);
			} else {
				self.handleErr(resp);
			} 
   		}
	};
	
	this.req.send(this.postData);
  };
  
  this.doGet = function(url, hand, format) {
  	this.url = url;
	this.handleResp = hand;
	this.responseFormat = format || 'text';
	this.method="GET";
	this.doReq();
  };
  
  this.abort = function() {
  	if (this.req) {
		this.req.onreadystatechange = function() { };
		this.req.abort();
		this.req = null;
	}
  };

  this.setHandlerBoth = function(funcRef) {
	this.handleResp = funcRef;
	this.handleErr = funcRef;
  };
  
  this.setHandlerErr = function(funcRef) {
  	this.handleErr = funcRef;  
  }


	this.handleErr = function() {
		var errorWin;
	try {
		errorWin = window.open('', 'errorWin');
		errorWin.document.body.innerHTML = this.responseText;
	}
	catch (e) {
		alert('An error occurred, but the error message cannot be '
     + 'displayed. This is probably because of your browser\'s '
     + 'pop-up blocker.\n'
     + 'Please allow pop-ups from this web site if you want to '
     + 'see the full error messages.\n'
     + '\n'
     + 'Status Code: ' + this.req.status + '\n'
     + 'Status Description: ' + this.req.statusText);
	}
	};

	this.setMimeType = function(mimeType) {
	 this.mimeType = mimeType;
	};
}


var xhtmlTools = {
	make:function(tagname, attributes, children) {
		if(arguments.length == 2 &&
			 (attributes instanceof Array || typeof attributes == "string")) {
			children = attributes;
			attributes = null;
		}
		
		// Create the element
		var e = document.createElement(tagname);
		
		// Set attributes
		if(attributes) {
			for(var name in attributes) {
				switch(name) { 
					case "class": e.className=attributes[name]; break;
					case "onclick": 
						if(window.addEventListener){ // Mozilla, Netscape, Firefox
							e.addEventListener('click', attributes[name], false);
						} else { // IE
							e.attachEvent('onclick', attributes[name], false);
						} 
						break;
					case "onchange": 
						if(window.addEventListener){ // Mozilla, Netscape, Firefox
							e.addEventListener('change', attributes[name], false);
						} else { // IE
							e.attachEvent('onchange', attributes[name], false);
						} 
						break;
					default: e.setAttribute(name, attributes[name]); break;
				}
			}
		}
		
		// Add children, if any where specified.
		if(children != null) {
			if(children instanceof Array) { // If it really is an array
				for(var i = 0; i < children.length; i++) {
					var child = children[i];
					if(typeof child == "string")
						child = document.createTextNode(child);
					e.appendChild(child);
				}
			} else if(typeof children == "string") { // Handle single text child
				e.appendChild(document.createTextNode(children));
			} else e.appendChild(children);			// Handle any other single child
		}
		
		// Finally, return the element;
		return e;
	},
	
	maker:function(tag) {
		return function(attrs, kids) {
			if(arguments.length == 1) return xhtmlTools.make(tag, attrs);
			else return xhtmlTools.make (tag, attrs, kids);
		}
	}
}


function insertAtCursor(myField, myValue) {
//IE support
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos)
		+ myValue
		+ myField.value.substring(endPos, myField.value.length);
	} else {
		myField.value += myValue;
	}
}

var html_tags = {"div":xhtmlTools.maker("div"),
				 "textarea":xhtmlTools.maker("textarea"),
				 "p":xhtmlTools.maker("p"),
				 "h4":xhtmlTools.maker("h4"),
				 "span":xhtmlTools.maker("span"),
				 "p":xhtmlTools.maker("p"),
				 "form":xhtmlTools.maker("form"),
				 "input":xhtmlTools.maker("input"),
				 "a":xhtmlTools.maker("a"),
				 "ul":xhtmlTools.maker("ul"),
				 "select":xhtmlTools.maker("select"),
				 "option":xhtmlTools.maker("option"),
				 "img":xhtmlTools.maker("img"),
				 "li":xhtmlTools.maker("li"),
				 "table":xhtmlTools.maker("table"),
				 "tbody":xhtmlTools.maker("tbody"),
				 "tr":xhtmlTools.maker("tr"),
				 "th":xhtmlTools.maker("th"),
				 "td":xhtmlTools.maker("td"),
				 "br":xhtmlTools.maker("br")};

/***
* util object
* @version 1.0 build 100
* @package util
* @copyright (C) 2006 by RDG - All rights reserved!
**/

var messagedisplayed=false;

var util={

	schemes: {
			"critical": {
				bgcolor:"#cc0000",
				fgcolor:"#FFF",
				icon:"/shared/images/icons/48x48/plain/delete.gif"
			},
			"warning": {
				bgcolor:"#FFFF99",
				fgcolor:"#000",
				icon:"/shared/images/icons/48x48/plain/biginfo.gif"
			},
			"success": {
				bgcolor:"#71ed6e",
				fgcolor:"#003300",
				icon:"/shared/images/icons/48x48/plain/check.gif"
			},
			"fatal": {
				bgcolor:"#000",
				fgcolor:"#FFF",
				icon:"/shared/images/icons/48x48/plain/craig.gif"
			},
			"funny": {
				bgcolor:"#98ccfc",
				fgcolor:"brown",
				icon:"/shared/images/icons/48x48/plain/guy.gif"
			}
	}
	,

	getDomain:function() {
		var domain_info = document.location;
		domain_info = domain_info.toString();
		return domain_info.substr(0, domain_info.indexOf('/admin/'));
	},

	/**
	* @function:
	* scrollMessage()
	*
	* @description:
	* Scrolls error message header
	*
	* @returns:
	* Nothing
	**/

	scrollMessage:function(){

		var msg=document.getElementById("messages");

		if(messagedisplayed==false){

			var sel=document.getElementsByTagName("select");

			for(i=0;i<sel.length;i++){

				if(util.findPosY(sel[i])<100){

					sel[i].style.visibility="hidden";

				}
			}


			messagedisplayed=true;

			var content=msg.innerHTML;

         if(this.scheme=="funny"){

            content="Something Funny Happened!<br />"+content;

         }

			msg.innerHTML="<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" height=\"100\"><tr><td valign=\"middle\" style=\"width:60px\"><a href=\"javascript:util.hideMessage()\" title=\"Click to close\"><img src=\""+this.schemes[this.scheme].icon+"\" border=\"0\" alt=\"Click to Close\"/></a></td><td valign=\"middle\"><div onclick=\"util.hideMessage()\" title=\"Click to close\" style=\"margin-right:60px;text-align:center;\">"+content+"</div></td></tr></table>";

		}
		
		
		var pageOffset = util.get_pageOffset();
		if(msg.offsetTop < pageOffset['y']-10){
			
			msg.style.top=(msg.offsetTop + 10) +  "px";
			setTimeout("util.scrollMessage()",20);
			return;
		} else {
			window.onscroll = util.adjustMessage;
		}
	},

	/**
	* @function:
	* hideMessage()
	*
	* @description:
	* Hides error message
	*
	* @returns:
	* Nothing
	**/
	
	adjustMessage:function() {
		var pageOffset = util.get_pageOffset();
		var msg=document.getElementById("messages");
		msg.style.top = pageOffset['y'] +  "px"; 
		window.onscroll = util.adjustMessage;
	},
	
	hideMessage:function(){
	
		var msg=document.getElementById("messages");

		if(msg.offsetTop >= -1*(msg.offsetHeight)){

			msg.style.top=(msg.offsetTop - 10) +  "px";

			setTimeout("util.hideMessage()",20);

			return;
			
		}

		var sel=document.getElementsByTagName("select");

		for(i=0;i<sel.length;i++){

			if(util.findPosY(sel[i])<=105){

				sel[i].style.visibility="visible";

			}
		}


		window.onscroll = null;
		messagedisplayed=false;
	},

	/**
	* @function:
	* setMessage(String text)
	*
	* @description:
	* Sets message text for errors
	*
	* @returns:
	* Nothing
	**/

	setMessage:function(text){

			var scheme = util.setMessage.arguments[1];

			if(scheme=='' || scheme==undefined)scheme='warning';

			this.scheme=scheme;
			
			if(!document.getElementById("messages")){

				var el=document.createElement("div");
				el.id="messages";				
				
				el.style.visibility="visible";
				el.style.top="-100px";
				el.style.left="0px";
				el.style.width=(document.all ? document.body.offsetWidth : document.documentElement.offsetWidth)+"px";
				el.style.MozOpacity=.95;

				el.style.filter="alpha(opacity=95);";
				el.style.opacity=.95;

				el.style.font="bold 15px 'Microsoft Sans Serif',Verdana,sans-serif";
				el.style.color=this.schemes[scheme].fgcolor;
				el.style.position="absolute";

				el.style.zIndex="5000000";
				el.style.textAlign="center";

				el.style.height="99px";
				el.style.backgroundColor=this.schemes[scheme].bgcolor;
				el.style.borderBottom="1px solid #C0C0C0";

				el.onclick=function(){util.hideMessage();}

				el.innerHTML=text;
				document.body.appendChild(el);
			

			}else{

				if(messagedisplayed==false){

					var msg=document.getElementById("messages");
					msg.innerHTML=text;

				}

			}

	

	},

	get_pageOffset:function() {
		var x,y;
		if (window.pageYOffset) // all except Explorer
		{
			x = window.pageXOffset;
			y = window.pageYOffset;
		}
		else if (document.documentElement && document.documentElement.scrollTop)
			// Explorer 6 Strict
		{
			x = document.documentElement.scrollLeft;
			y = document.documentElement.scrollTop;
		}
		else if (document.body) // all other Explorers
		{
			x = document.body.scrollLeft;
			y = document.body.scrollTop;
		}
		return {"x":x,"y":y};
	},
	
	
	/**
	* @function
	* disableElement(Array [element ID's])
	*
	* @description
	* Disables any web page element by use of floating DIV
	*
	* @returns:
	* Nothing
	**/
	
	disableElements:function(els){

		for(i=0;i<els.length;i++){

			var el=document.getElementById(els[i]);

			if(el){

				if(!document.getElementById("disabler"+i)){

					var newbox=document.createElement("div");
					newbox.id="disabler"+i;
					document.body.appendChild(newbox);

				}else{
					
					var newbox=document.getElementById("disabler"+i);

				}

				newbox.style.position="absolute";
				newbox.style.top=util.findPosY(el)+"px";
				newbox.style.left=util.findPosX(el)+"px";
				newbox.style.width=el.offsetWidth+"px";
				newbox.style.height=el.offsetHeight+"px";
				newbox.style.zIndex=2000000;
				newbox.style.overflow="hidden";
				newbox.style.MozOpacity=.75;
				newbox.title="This element is disabled";
				newbox.style.opacity=.75;
				newbox.style.filter="alpha(opacity=75)";
				newbox.style.backgroundColor="#FFF";

			}
		}

	},

	/**
	* @function
	* findPosX(Object HTMLElement)
	*
	* @description
	* Finds true X coordinate of an HTML element
	* 
	* @returns:
	* Integer
	**/

	findPosX:function(obj)
	{
		var curleft = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curleft += obj.offsetLeft
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	},

	/**
	* @function
	* findPosY(Object HTMLElement)
	*
	* @description
	* Finds true Y coordinate of an HTML element
	* 
	* @returns:
	* Integer
	**/

	findPosY:function(obj)
	{
		var curtop = 0;
		if (obj.offsetParent)
		{
			while (obj.offsetParent)
			{
				curtop += obj.offsetTop
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
	},

	popupWin:function(href,hgt,wid){

		var win_name=util.popupWin.arguments[3];

		var resize=util.popupWin.arguments[4];

		var can_resize="no";

		if(!resize){

			can_resize="no";

		}else{

			can_resize=resize;

		}

		if(win_name == null) win_name="cms_popup_win";

		var pwin=window.open(href,win_name,"modal=yes,width="+wid+",height="+(hgt)+",screenX="+(screen.width/2-wid/2)+",left="+(screen.width/2-wid/2)+",screenY="+(screen.height/2-(hgt/2+50))+",top="+(screen.height/2-(hgt/2+50))+",toolbar=no,status=yes,scrollbars=yes,resizable="+resize);

		//return false;

	},

	fixSelBoxes:function(){

		var s=document.getElementsByTagName("select");

		for(i=0;i<s.length;i++){

         s[i].style.width="auto";

		}
		for(i=0;i<s.length;i++){

			s[i].style.width=(s[i].parentNode.offsetWidth)+"px";

		}
	},
	trim:function(s){
		return s.replace(/^\s+|\s+$/,'');
	}

	
}

var RDGonloader = new function() {
	this.functions = new Array();

	this.add = function(func) {
		RDGonloader.functions.push(func);
	};
	
	this.init = function() {
		for(var i in RDGonloader.functions) {
			eval(RDGonloader.functions[i]);
		}
	};
}

media = {
	writeFlash:function(swfFile, w, h, bg) {
		document.write("<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0\" width=\""+w+"\" height=\""+h+"\" id=\"mainMovie\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"sameDomain\" /><param name=\"movie\" value=\""+swfFile+"\" /><param name=\"quality\" value=\"high\" /><param name=\"bgcolor\" value=\""+bg+"\" /><embed src=\""+swfFile+"\" quality=\"high\" bgcolor=\""+bg+"\" width=\""+w+"\" height=\""+h+"\" name=\"mainMovie\" swLiveConnect=\"true\" align=\"middle\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /></object>");
	}
};

window.onload = RDGonloader.init;


