﻿function defaultSubmitAction(event, defaultButton)
{
	try
	{
		var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
		if (keyCode == 13) 
		{
			var field = event.srcElement;
			if(!field)
				field = event.target;
				
			if(field)
			{
				var tag = field.tagName.toLowerCase();
				if((tag == "input" && field.type.toLowerCase() != "button") || tag == "select")
				{
					if(defaultButton != null)
					{
						defaultButton = document.getElementById(defaultButton);
					}
					
					if(defaultButton == null)
					{
						var i;
						for (i = 0; i < field.form.elements.length; i++)
							if (field == field.form.elements[i])
								break;
						for(i=i; i < field.form.elements.length; i++)
						{
							var c = field.form.elements[i];
							if(c.tagName.toLowerCase() == "input" && (c.type.toLowerCase() == "submit" || c.type.toLowerCase() == "image"))
							{
								defaultButton = c;
								break;
							}
						}
					}
					if(defaultButton != null)
					{
						var su = document.getElementById("__submitAction");
						if(su)
							su.value = defaultButton.name;

						defaultButton.focus();
						defaultButton.click();
						event.cancelBubble = true;
						if (event.stopPropagation) 
							event.stopPropagation();
						return false;
					}
				}
			}
		} 
	}
	catch(e)
	{
	}
	return true;
}

function GetWindowWidth()
{
	if(document.documentElement)
		if(document.documentElement.clientWidth)
			if(document.documentElement.clientWidth > 0)
				return document.documentElement.clientWidth;
	if(document.body)
		if(document.body.clientWidth)
			if(document.body.clientWidth > 0)
				return document.body.clientWidth;
	
	return 0;
}

function GetWindowHeight()
{
	if(document.documentElement)
		if(document.documentElement.clientHeight)
			if(document.documentElement.clientHeight > 0)
				return document.documentElement.clientHeight;
	if(document.body)
		if(document.body.clientHeight)
			if(document.body.clientHeight > 0)
				return document.body.clientHeight;
	
	return 0;
}

var ctlsSizeToParent = new Array();

function AddControlToSizeToParent(element, adjust, minHeight, SizeToBody)
{
	if(element)
	{
		var o = new Object();
		o.obj = element;
		o.adjust = adjust;
		o.minHeight = minHeight;
		o.sizeToBody = SizeToBody;
		var l = ctlsSizeToParent.length;
		ctlsSizeToParent[l] = o;
		
		//alert("Added ctl " + element.id + ", " + element.offsetParent.tagName);
	}
	else
	{
	}
}

var _previousWindowHeight = 0;
function SizeControlsToParent()
{
	var cy = GetWindowHeight();
	if(cy == _previousWindowHeight)
		return;
	_previousWindowHeight = cy;	

	for(var i = 0; i < ctlsSizeToParent.length; i++)
	{
		SizeControlToParent(ctlsSizeToParent[i].obj, ctlsSizeToParent[i].adjust, ctlsSizeToParent[i].minHeight, ctlsSizeToParent[i].sizeToBody);
	}	
}

function SizeControlToParent(o, adjust, minHeight, sizeToBody)
{
	if(!o)
		return;

var debug = String(o.id) + "\r\n";
debug += "WindowHeight = "+GetWindowHeight()+"\r\n";

	var bBody = true;
	var cy = GetWindowHeight() - 10;
	var p = o.parentNode;

debug += "cy 1 = "+cy+"\r\n";


//alert("SizeControlToParent: "+o.id+" windowCy="+cy+", ParentOffset(o)="+GetParentOffset(o)+", BodyOffset(o)="+GetBodyOffset(o));

	/***/
//alert(1);	
	if(! sizeToBody)
	{
		while(p != null)
		{
debug += "parent.tagName=" + p.tagName + "\r\n";	
debug += "parent.className=" + p.id + "\r\n";	
			//if(String(p.tagName).toLowerCase() != "form")
			//{
				if(String(p.tagName).toLowerCase() == "body")
					break;
				if(String(p.tagName).toLowerCase() == "form")
					break;
				if(String(p.className).toLowerCase() == "bodywidth")
					break;
				if(p.offsetHeight > 0)
				{
debug += "getting cy from "+p.tagName + ", " + p.className + "\r\n";
					cy = p.offsetHeight;
					bBody = false;
					break;
				}
			//}
			p = p.parentNode;
		}
	}
debug += "cy 2 = "+cy+"\r\n";
//alert(2);	
	/****/
	if(sizeToBody)
		bBody = true;
	
debug += "bBody="+bBody+"\r\n";
	if(bBody)
	{
debug += "ElementOffset = "+GetBodyOffset(o) + "\r\n";
		cy -= GetBodyOffset(o);
	}
	else
	{
debug += "ElementOffset = "+GetParentOffset(o,p) + "\r\n";
		cy -= GetParentOffset(o,p);
	}
//alert(3);	
debug += "cy 3 = "+cy+"\r\n";
	cy += adjust;
debug += "cy 4 = "+cy+"\r\n";
	if(cy < minHeight)
		cy = minHeight;

debug += "cy 5 = "+cy+"\r\n";
//alert(debug);
		
	o.style.height = String(cy) + "px";
}

function GetParentOffset(o, p)
{
	var y1 = GetBodyOffset(o);
	if(p == null)
		p = o.parentNode;
	var y2 = GetBodyOffset(p);
	return y1-y2;
}

function GetBodyOffset(o)
{
	if(!o)
		return 0;
		
	var y = 0;
	if(o.offsetTop)
		y = o.offsetTop;

	var p = o.offsetParent;
	while(p != null)
	{
		if(String(p.tagName).toLowerCase() == "body")
			break;
		
		if(String(p.tagName).toLowerCase() == "html")
		{
			y -= document.body.offsetTop;
			break;
		}
		
		y += p.offsetTop;
		p = p.offsetParent;
	}
	
	return y;
}

function submitForm(cmd)
{
	var su = document.getElementById("__submitAction");
	if(su)
	{
		su.value = cmd;
		su.form.submit();
	}
}

function ToggleDivImg(sender, path, collapsed, expanded)
{
	if(sender == null)
		return;
	var img = sender;
	
	var aPath = path.split("/");
	for(var i = 0; i < aPath.length; i++)
	{
		switch(aPath[i])
		{
			case "..":
				sender = sender.parentNode;
				break;
			case "nextsibling":
				sender = sender.nextSibling;
				break;
		}
		
		if(sender == null)
			return;
	}
	
	if(sender != null)
	{
		if(sender.style.display == "block")
		{
			sender.style.display = "none";
			if(collapsed)
				img.src = collapsed;			
		}
		else
		{
			sender.style.display = "block";
			if(expanded)
				img.src = expanded;			
		}
	}
}

function fGeneratePassword(cField, iLength)
{
	var cCharacters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM_@#$&*0123456789";
	var cResult = "";
	var oObj = document.getElementById(cField);
	if(oObj != null)
	{
		for(var i=0; i < iLength; i++)
		{
			cResult += cCharacters.substr( Math.floor(Math.random()*cCharacters.length), 1 );
		}
		oObj.value = cResult;
	}
}

function fFillDate(fieldid)
{
	var lcYear	= document.getElementById(fieldid + "_y").value;
	var lcMonth	= document.getElementById(fieldid + "_m").options[document.getElementById(fieldid + "_m").selectedIndex].value;
	var lcDate	= document.getElementById(fieldid + "_d").value;

	document.getElementById(fieldid).value = lcYear + "-" + lcMonth + "-" + lcDate ;
}

function addQuerystringItems()
{
	var href = window.location.href;
	for(var i=0; i<arguments.length; i+=2)
	{
		var name = arguments[i];
		var value = arguments[i+1]
		var re = new RegExp("\&?" + name + "=[^\&]*","gi");
		href = href.replace(re,"");
		if(href.indexOf("?") == -1)
			name = "?" + name;
		else
			name = "&" + name;
		
		href = href + name + "=" + value;
	}	
	return href;
}

