/*Copyright DragnWing Productions 2009 - All Rights Reserved - Joseph Neathawk */

var DWP = new function(){
	var me = this;
	me.name = 'DWP';
	me.originalDocumentHeight = 0;	
	me.isIE = false;	
	me.isIE9 = false;	
	me.isIE8 = false;	
	me.isIE7 = false;	
	me.isIE6 = false;
	
	//work around to reload the page
	me.reloadPage = function()
	{
		setTimeout('window.location.reload()',1);
		//onresize='window.location=window.location';
	};
	
	//
	me.start = function()
	{		
			
	};
	
	//gets the selected value from a forms radio button group
	me.getRadioValue = function(radioObject)
	{
		var output = null;
		if(radioObject)
		{			
			var elementIsGood = false;
			if(radioObject.length)
			{
				//if it is a select object
				elementIsGood = true;
			}
			else if(document.getElementById(radioObject) && document.getElementById(radioObject).length)
			{
				//if it is the id to a select object
				radioObject = document.getElementById(radioObject);
				elementIsGood = true;
			}
			
			if(elementIsGood)
			{
				var objLength = radioObject.length;
				output = "";
				
				if(objLength == undefined)
				{
					if(radioObject.checked)
					{
						output = radioObject.value;
					}
				}
				else
				{
					for(var i = 0; i < objLength; i++) 
					{
						if(radioObject[i].checked) 
						{
							output = radioObject[i].value;
						}
					}
				}				
			}
		}
		return output;
	};
	
	//gets the selected value from a forms checkbox group
	me.getCheckValue = function(formID, checkName)
	{
		var checkValue = new Array();
		var checkElement;			
		try
		{
			//good browsers
			if(document.getElementById(formID).valueOf(checkName))
			{
				checkElement = document.getElementById(formID).valueOf(checkName);
			}	
		}
		catch(e)
		{
			//IE
			if(document.getElementsByName(checkName))
			{
				checkElement = document.getElementsByName(checkName);
			}			
		}
		
		if(checkElement)
		{			
			//loop through and gather each checked value
			for(i = 0; i < checkElement.length; i++)
			{
				if(checkElement[i].checked)
				{
					checkValue.push(checkElement[i].value); 
				}
			}	
		}			
			
		if(checkValue.length == 0)
		{
			return null;
		}
		else
		{
			return checkValue;
		}
	};
	
	//clears the checks in a checkbox group
	me.clearCheckBoxGroup = function(formID, checkName)
	{				
		try
		{
			//good browsers
			if(document.getElementById(formID).valueOf(checkName))
			{
				checkElement = document.getElementById(formID).valueOf(checkName);
			}	
		}
		catch(e)
		{
			//IE
			if(document.getElementsByName(checkName))
			{
				checkElement = document.getElementsByName(checkName);
			}			
		}
		
		if(checkElement)
		{			
			//loop through and clear each checked value
			for(i = 0; i < checkElement.length; i++)
			{
				checkElement[i].checked = false;
			}	
		}	
	};

	
	//gets the selected value from a forms select/option group
	me.getSelectValue = function(selectElement)
	{		
		var selectedValue = new Array();
		if(selectElement)
		{
			var elementIsGood = false;
			if(selectElement.options)
			{
				//if it is a select object
				elementIsGood = true;
			}
			else if(document.getElementById(selectElement).options)
			{
				//if it is the id to a select object
				selectElement = document.getElementById(selectElement);
				elementIsGood = true;
			}
			
			if(elementIsGood)
			{
				//loop through and gather each selected value
				for(i = 0; i < selectElement.options.length; i++)
				{
					if(selectElement.options[i].selected)
					{
						selectedValue.push(selectElement.options[i].value); 
					}
				}
				
				if(selectedValue.length == 0)
				{
					return null;
				}
				else if(selectedValue.length == 1)
				{
					return selectedValue[0];
				}
				else
				{
					return selectedValue;
				}
			}
		}	
	};	
	
	//
	me.getDocumentHeight = function()
	{
		//********************
		//required IDs 'bodyWrapper'
		//********************
		var windowHeight = me.getWindowHeight();
		var bodyWrapperHeight = (document.getElementById("bodyWrapper")) ? document.getElementById("bodyWrapper").offsetHeight : windowHeight;
		var documentHeight = (document.height) ? document.height : windowHeight;
				
		return Math.min(
			bodyWrapperHeight,
			documentHeight,
			Math.min(document.body.scrollHeight, document.documentElement.scrollHeight),
			Math.min(document.body.offsetHeight, document.documentElement.offsetHeight),
			Math.min(document.body.clientHeight, document.documentElement.clientHeight)
		);
	}
	//
	me.getWindowHeight = function()
	{
		var windowHeight = 0;	
		//get the window height, depending on browser support
		if(window.innerHeight)
		{
			//window.innerHeight/ not supported by IE
			windowHeight = window.innerHeight;
		}	
		else
		{			
			//only IE should fall in here
			windowHeight = Math.max(
				windowHeight,
				Math.max(document.body.scrollHeight, document.documentElement.scrollHeight),
				Math.max(document.body.offsetHeight, document.documentElement.offsetHeight),
				Math.max(document.body.clientHeight, document.documentElement.clientHeight)
			);
			//IE is stupid
			windowHeight -= 5;
		}
		return windowHeight;
	};
	
	me.showHide = function(id,cookie)
	{
		var visible = false;
		if(cookie != null)
		{
			visible = me.getCookie(id);
			
			if (document.getElementById) 
			{
				var element = document.getElementById(id);
				if (element) 
				{
					if (!visible || visible != 'true')
					{
						element.style.display = "none";
					}
					else 
					{
						element.style.display = "";
					}
				}
			}
			
			me.setCookie(id,visible,30);		
		}
		else
		{
			if (document.getElementById) 
			{
				var element = document.getElementById(id);
				if (element) 
				{
					if (element.style.display == "" || element.style.display == "block")
					{
						element.style.display = "none";
						visible = false;
					}
					else 
					{
						element.style.display = "";
						visible = true;
					}
				}
			}
		}
		
	};
	//sets an elements DISPLAY property to make it visible
	me.show = function()
	{
		me.working = true;
		me.next();
		if (document.getElementById) 
		{
			var element = document.getElementById(me.elementId);
			if(element) 
			{
				element.style.display = "";
			}
		}
	};
	//sets an elements DISPLAY property to make it hidden/NONE
	me.hide = function()
	{
		me.working = false;
		if (document.getElementById) 
		{
			var element = document.getElementById(me.elementId);
			if (element) 
			{
				element.style.display = "none";
			}
		}
	};
		
	//returns AJAX connection
	me.XMLHttpConnection = function(file,async,asyncFunction)
	{		
		if (window.XMLHttpRequest)
		{
			// code for Firefox, Chrome, Opera, Safari, IE7+
			var xhttp = new XMLHttpRequest();
		}
		else if (window.ActiveXObject)
		{
			// code for IE6, IE5
			var xhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		var asynchronous = (async == true) ? true : false;
		if(asynchronous)
		{
			xhttp.onreadystatechange = function()
			{
				if(xhttp.readyState == 4)
				{
					try
					{
						asyncFunction;
					}
					catch(e)
					{
						//do nothing
					}
				}
			}
		}
		xhttp.open("GET",file,asynchronous);
		xhttp.send(null);
		return xhttp;
	};
	
	me.setCookie = function(cookieName,cookieValue,cookieExpire)
	{
		var expireDate = new Date();
		var expiration = '';
		if(cookieExpire != null)
		{	
			expireDate.setDate(expireDate.getDate() + cookieExpire);
			expiration = ';expires=' + expireDate.toGMTString();
		}
		else
		{		
			//expireDate.setDate(expireDate.getDate() + 30);
		}
		document.cookie = cookieName + '=' + escape(cookieValue) + expiration + ';path=/ ;domain=' + escape(me.getCookieDomain());
	};
	
	me.getCookieDomain = function()
	{
		var hostName = window.location.hostname;
		var domainName = '';
		var domainStart = hostName.lastIndexOf('.');
		if (domainStart < 0)
		{
			domainName = '.' + hostName;
		}
		else
		{
			if (hostName.lastIndexOf('.', domainStart - 1) > -1)
			{
				domainName = hostName.substr(hostName.lastIndexOf('.', domainStart - 1));
			}
			else
			{
				domainName = '.' + hostName;
			}
		}
		//alert(hostName + ' | ' + domainName);
		return domainName;
	};
	
	me.getCookie = function(cookieName)
	{
		var output = '';
		
		if (document.cookie.length > 0)
		{
			var cookieStart = document.cookie.indexOf(cookieName + "=");
			if (cookieStart != -1)
			{
				cookieStart = cookieStart + cookieName.length + 1;
				var cookieEnd = document.cookie.indexOf(";",cookieStart);
				if (cookieEnd == -1) 
				{
					cookieEnd = document.cookie.length;				
				}
				output = unescape(document.cookie.substring(cookieStart,cookieEnd));
			}
		}
		return output;
	};
	
	me.StateAbbrFromName = function(name)
	{
		var output = name.toLowerCase();
		switch(output)
		{
			case 'alabama':
				output = 'AL';
				break;				
			case "alaska" :
				output = "AK";
				break; 
			case "arizona" :
				output = "AZ";
				break; 
			case "arkansas" :
				output = "AR";
				break; 
			case "california" :
				output = "CA";
				break; 
			case "colorado" :
				output = "CO";
				break; 
			case "connecticut" :
				output = "CT";
				break; 
			case "delaware" :
				output = "DE";
				break; 
			case "district of columbia" :
				output = "DC";
				break; 
			case "florida" :
				output = "FL";
				break; 
			case "georgia" :
				output = "GA";
				break; 
			case "hawaii" :
				output = "HI";
				break; 
			case "idaho" :
				output = "ID";
				break; 
			case "illinois" :
				output = "IL";
				break; 
			case "indiana" :
				output = "IN";
				break; 
			case "iowa" :
				output = "IA";
				break; 
			case "kansas" :
				output = "KS";
				break; 
			case "kentucky" :
				output = "KY";
				break; 
			case "louisiana" :
				output = "LA";
				break; 
			case "maine" :
				output = "ME";
				break; 
			case "maryland" :
				output = "MD";
				break;
			case "massachusetts" :
				output = "MA";
				break; 
			case "michigan" :
				output = "MI";
				break; 
			case "minnesota" :
				output = "MN";
				break;
			case "mississippi" :
				output = "MS";
				break; 
			case "missouri" :
				output = "MO";
				break; 
			case "montana" :
				output = "MT";
				break; 
			case "nebraska" :
				output = "NE";
				break; 
			case "nevada" :
				output = "NV";
				break;
			case "new hampshire" :
				output = "NH";
				break;
			case "new jersey" :
				output = "NJ";
				break; 
			case "new mexico" :
				output = "NM";
				break;
			case "new york" :
				output = "NY";
				break; 
			case "north carolina" :
				output = "NC";
				break; 
			case "north dakota" :
				output = "ND";
				break; 
			case "ohio" :
				output = "OH";
				break; 
			case "oklahoma" :
				output = "OK";
				break;
			case "oregon" :
				output = "OR";
				break; 
			case "pennsylvania" :
				output = "PA";
				break;
			case "rhode island" :
				output = "RI";
				break; 
			case "south carolina" :
				output = "SC";
				break;
			case "south dakota" :
				output = "SD";
				break; 
			case "tennessee" :
				output = "TN";
				break; 
			case "texas" :
				output = "TX";
				break; 
			case "utah" :
				output = "UT";
				break; 
			case "vermont" :
				output = "VT";
				break; 
			case "virginia" :
				output = "VA";
				break; 
			case "washington" :
				output = "WA";
				break; 
			case "west virginia" :
				output = "WV";
				break;
			case "wisconsin" :
				output = "WI";
				break; 
			case "wyoming" :
				output = "WY";
				break;
			default :
				output = name;
				break;
		}
		return output;
	};
	
	me.StateNameFromAbbr = function(abbr)
	{
		var output = abbr.toUpperCase();
		switch(output)
		{
			case "AL" :
				output = "Alabama";
				break;
			case "AK" :
				output = "Alaska";
				break; 
			case "AZ" :
				output = "Arizona";
				break; 
			case "AR" :
				output = "Arkansas";
				break; 
			case "CA" :
				output = "California";
				break; 
			case "CO" :
				output = "Colorado";
				break; 
			case "CT" :
				output = "Connecticut";
				break; 
			case "DE" :
				output = "Delaware";
				break; 
			case "DC" :
				output = "District Of Columbia";
				break; 
			case "FL" :
				output = "Florida";
				break; 
			case "GA" :
				output = "Georgia";
				break; 
			case "HI" :
				output = "Hawaii";
				break; 
			case "ID" :
				output = "Idaho";
				break; 
			case "IL" :
				output = "Illinois";
				break; 
			case "IN" :
				output = "Indiana";
				break; 
			case "IA" :
				output = "Iowa";
				break; 
			case "KS" :
				output = "Kansas";
				break; 
			case "KY" :
				output = "Kentucky";
				break; 
			case "LA" :
				output = "Louisiana";
				break; 
			case "ME" :
				output = "Maine";
				break; 
			case "MD" :
				output = "Maryland";
				break;
			case "MA" :
				output = "Massachusetts";
				break; 
			case "MI" :
				output = "Michigan";
				break; 
			case "MN" :
				output = "Minnesota";
				break;
			case "MS" :
				output = "Mississippi";
				break; 
			case "MO" :
				output = "Missouri";
				break; 
			case "MT" :
				output = "Montana";
				break; 
			case "NE" :
				output = "Nebraska";
				break; 
			case "NV" :
				output = "Nevada";
				break;
			case "NH" :
				output = "New Hampshire";
				break;
			case "NJ" :
				output = "New Jersey";
				break; 
			case "NM" :
				output = "New Mexico";
				break;
			case "NY" :
				output = "New York";
				break; 
			case "NC" :
				output = "North Carolina";
				break; 
			case "ND" :
				output = "North Dakota";
				break; 
			case "OH" :
				output = "Ohio";
				break; 
			case "OK" :
				output = "Oklahoma";
				break;
			case "OR" :
				output = "Oregon";
				break; 
			case "PA" :
				output = "Pennsylvania";
				break;
			case "RI" :
				output = "Rhode Island";
				break; 
			case "SC" :
				output = "South Carolina";
				break;
			case "SD" :
				output = "South Dakota";
				break; 
			case "TN" :
				output = "Tennessee";
				break; 
			case "TX" :
				output = "Texas";
				break; 
			case "UT" :
				output = "Utah";
				break; 
			case "VT" :
				output = "Vermont";
				break; 
			case "VA" :
				output = "Virginia";
				break; 
			case "WA" :
				output = "Washington";
				break; 
			case "WV" :
				output = "West Virginia";
				break;
			case "WI" :
				output = "Wisconsin";
				break; 
			case "WY" :
				output = "Wyoming";
				break;
			default :
				output = name;
				break;
		}
		return output;
	};
}

