function parseURL(sourceUrl){
    var urlPartNames = ["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];
    var urlParts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUrl);
    var url = {};
    
    for(var i = 0; i < 10; i++){
        url[urlPartNames[i]] = (urlParts[i] ? urlParts[i] : "");
    }
    
    // Always end directoryPath with a trailing backslash if a path was present in the source URI
    // Note that a trailing backslash is NOT automatically inserted within or appended to the "path" key
    if(url.directoryPath.length > 0){
        url.directoryPath = url.directoryPath.replace(/\/?$/, "/");
    }
    
    return url;
}

function AutoYear(yearPast, yearFuture) 
{
	var time = new Date();
	var year = time.getYear();
	 
	if (year < 1900) {
		year = year + 1900;
	}
	
	var date = year - yearPast; 
	var future = year + yearFuture;
	
	do {
		document.write ("<option value=\"" +date+"\">" +date+ "</option>");
		date++;
	}
	while (date < future)
}

function popwin(url, windowWidth, windowHeight, allowScroll, statusBar, resizable, toolBar)
{
	//var windowWidth = 800;
	//var windowHeight = 585;
	var windowLeft = (screen.width - windowWidth) / 2;
	var windowTop = (screen.height - windowHeight) / 2;
	
	if (statusBar == null) statusBar = 'no';
	if (resizable == null) resizable = 'yes';
	if (toolBar == null) toolBar = 'no';
	if (allowScroll == null) allowScroll = 'no';
	
	if (allowScroll == true)
		allowScroll = 'yes';
	if (toolBar == true)
		toolBar = 'yes';
	
	var size = 'status=' + statusBar + ', height=' + windowHeight + ', width=' + windowWidth + ', top=' + windowTop + ', left=' + windowLeft + ', resizable=' + resizable + ', toolbar=' + toolBar + ', scrollbars=' + allowScroll;

	var status = window.open(url, '', size);
	if (!status) {
		alert('Please disable your popup blocker.');
	}
}


function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie =	c_name + "=" + escape(value) +
						((expiredays==null) ? "" : ";expires="+exdate) +
						";path=/";
}

function getCookie(c_name)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1)
		{ 
			c_start=c_start + c_name.length+1 ;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		} 
	}
	return null;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function findObj(n, d)
{
	return MM_findObj(n, d);
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function checkAll(formName, fieldName, chk) {
	if(!document.forms[formName])
		return;
	var objCheckBoxes = document.forms[formName].elements;
	//if(!objCheckBoxes)
		//alert(document.forms[formName].elements);
	var countCheckBoxes = objCheckBoxes.length;
	if(!countCheckBoxes && objCheckBoxes.type == 'checkbox')
		objCheckBoxes.checked = CheckValue;
	else
	{
		for (i = 0; i < countCheckBoxes; i++)
		{
			if (objCheckBoxes[i].type == 'checkbox')
				objCheckBoxes[i].checked = chk.checked ? true:false;
		}
	}
}

