/// uses X, cross-browser library (cross-browser.com) (GNU LGPL)

function SelectBoxRedirect(el,target)
{
	var el = xGetElementById(el);
	if ( el )
	{
		var url = el.options[el.selectedIndex].value;
		if ( url && url.length > 0 )
		{
			if (target)
				raw_popup(url,target,'');
			else
				document.location.href = url;
		}
	}
}

function getAspNetFormElementByName(name)
{
	var theform = getAspNetForm();
	return theform.elements[name];
}

function getAspNetForm()
{
	var theform;
	if (window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
		theform = document.__aspnetForm;
	else
		theform = document.forms["__aspnetForm"];
	return theform;
}

function hasClass(el,c) 
{
	var re = new RegExp('\\b'+c+'\\b', 'i');
	var el = xGetElementById(el);
    return el && re.test(el.className);
}

function removeClassName(el,c)
{
	el = xGetElementById(el);
	if ( el && c != null && c.length > 0 && el.className.length > 0 )
	{
		var re = new RegExp('\\b'+c+'\\b', 'ig');
		el.className = el.className.replace(re, "").trim();
	}
}

function appendClassName(el,c) 
{
	el = xGetElementById(el);
	if ( !hasClass(el) ) { el.className = (el.className + " " + c).trim();}
}

function toggleClassName(el, c)
{
	el = xGetElementById(el);
	if ( hasClass(el, c) ) 
		removeClassName(el, c);
	else
		appendClassName(el, c);
}

function addHoverClassName(el, c)
{
	el = xGetElementById(el);
	if ( el )
	{
		xAddEventListener(el,"mouseover",function(){appendClassName(el,c);});
		xAddEventListener(el,"mouseout",function(){removeClassName(el,c);});
	}
}

function getAttribute(el, name)
{
    var attr = el.getAttribute(name);
    return attr ? attr : el[name];
}

function dispatchEvent(el, name, bubbles, cancelable) 
{
	bubbles = bubbles || true;
	cancelable = cancelable || true;
	
	if ( document.createEvent && el.dispatchEvent ) 
	{
		var e = document.createEvent("HTMLEvents");
		e.initEvent(name, bubbles, cancelable); 
		el.dispatchEvent(e); 
	} 
	else if (el.fireEvent)  
	{ 
		var e = document.createEventObject();
		e.cancelBubble = bubbles;
		el.fireEvent("on" + name, e); 
	}
	else if ( eval("el.on" + name) ) 
	{ 
		eval("el.on" + name + "()"); 
	}
}

/**************************************
/* ARRAY EXTENSIONS
/**************************************/
if (!Array.prototype.push) Array.prototype.push = function() 
{
    for (var i=0; i<arguments.length; i++) this[this.length] = arguments[i];
    return this.length;
}

if (!Array.prototype.find) Array.prototype.find = function(value, start) 
{
    start = start || 0;
    for (var i=start; i<this.length; i++)
        if (this[i]==value)
            return i;
    return -1;
}

if (!Array.prototype.has) Array.prototype.has = function(value) 
{
    return this.find(value)!==-1;
}


/**************************************
/* STRING EXTENSIONS
/**************************************/
String.prototype.trim = function() { 
	return this.replace( /^\s+|\s+$/, "" ); 
}


/**************************************
/* FUNCTIONAL
/**************************************/
function map(arr, func) {
    var result = [];
    func = func || function(v) {return v};
    for (var i=0; i < arr.length; i++) result.push(func(arr[i], i, arr));
    return result;
}

function filter(arr, func) {
    var result = [];
    func = func || function(v) {return v};
    map(arr, function(v) { if (func(v)) result.push(v) } );
    return result;
}

/**************************************
/* POP-UP FUNCTIONS
/**************************************/
var _POPUP_FEATURES = "";

// pops up a window containing url optionally named target, optionally having features
function raw_popup(url, target, features) {
    if ( !xDef(features) )
		features = _POPUP_FEATURES;

    if ( !xDef(target) )
		target   = '_blank';
		
    var popupWindow = window.open(url, target, features);
    popupWindow.focus();
    return popupWindow;
}

function link_popup(src, features) {
    return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features);
}


function event_popup(e) 
{
    link_popup( findParentLink(e.target || event.srcElement) );
    e.preventDefault();
}

function event_popup_features(features) 
{
    return function(e) { link_popup( findParentLink(e.target || event.srcElement), features); xPreventDefault(e); };
}

function findParentLink(el)
{
	if (el == null) return null;
	if ( el.tagName == "A" ) return el;
	return findParentLink(el.parentNode);
}

function linksAsPopup(target, features) 
{
	var callback = function(el) { xAddEventListener(el, "click", event_popup_features(features)); };
	xGetElementsByAttribute("a", "target", "^" + target + "$", callback);
}

function addQueryString(url,name,val)
{
	// QueryString is empty
	if ( url.indexOf('?') < 0 )
		return url + "?" + name + "=" + val;
	
	// Check if name exists
	if ( url.indexOf("?"+name+"=") < 0 && url.indexOf("&"+name+"=") < 0 )
		return url + "&" + name + "=" + val;

	var replaceName = url.indexOf("?"+name+"=") < 0 ? "&"+name+"=" : "?"+name+"=";

	var start	= url.indexOf(replaceName);
	var end		= url.indexOf('&', start + replaceName.length);

	if (end < 0) // Value was empty 
		return url.slice(0, start + replaceName.length) + val;

	return url.slice(0, start + replaceName.length) + val + url.slice(end); 
}

/******************************************
/* Blogger function
/******************************************/
function Toggle(itemID)
{
	var itemRef = document.getElementById(itemID);
	itemRef.style.display = (itemRef.style.display == "block") ? "none" : "block";
}

function ShowHelpBlog(itemID)
	{
		document.getElementById(itemID).style.display='';
	}
	
function HideHelpBlog(itemID)
{
	document.getElementById(itemID).style.display='none';
}

/******************************************
/* Premieweb function
/******************************************/
function ShowHelp(id, frame)
{
	document.getElementById(id).style.display='';
	document.getElementById(frame).style.height = '10';
}

function HideHelp(id, frame)
{
	document.getElementById(id).style.display='none';
	document.getElementById(frame).style.height = '0';
}

function jumpNext(activeField) 
{
	if ( window.event.keyCode > 40 ){
		if (activeField.value.length == activeField.maxLength) 
		{
			for (i=0; i < document.forms[0].elements.length; i++) 
			{
				if (document.forms[0].elements[i].name == activeField.name) 
				{
					fieldOrder = i;
					i = document.forms[0].elements.length + 1;					
				}
			}
			document.forms[0].elements[fieldOrder + 1].focus();
			if (fieldOrder == 5) {
				document.forms[0].elements[fieldOrder + 1].value = document.forms[0].elements[fieldOrder].value;
			}
		}
	}
}
		
function jumpNext2(activeField) 
{
	checkNmbr(activeField);
	var pnr = activeField.value;
	var pnrStart = pnr.substring(2,0);
	
	if ( window.event.keyCode > 40 ){
		if(pnrStart == "19")
		{
			if (activeField.value.length == activeField.maxLength) 
			{
				for (i=0; i < document.forms[0].elements.length; i++) 
				{
					if (document.forms[0].elements[i].name == activeField.name) 
					{
						fieldOrder = i;
						i = document.forms[0].elements.length + 1;					
					}
				}
				document.forms[0].elements[fieldOrder + 1].focus();
				if (fieldOrder == 5) {
					document.forms[0].elements[fieldOrder + 1].value = document.forms[0].elements[fieldOrder].value;
				}
			}
		}
		else
		{
			if (activeField.value.length == activeField.maxLength-2) 
			{
				for (i=0; i < document.forms[0].elements.length; i++) 
				{
					if (document.forms[0].elements[i].name == activeField.name) 
					{
						fieldOrder = i;
						i = document.forms[0].elements.length + 1;					
					}
				}
				document.forms[0].elements[fieldOrder + 1].focus();
				if (fieldOrder == 5) {
					document.forms[0].elements[fieldOrder + 1].value = document.forms[0].elements[fieldOrder].value;
				}
			}
		}
		
	}
}		
		
function addYear(activeField)
{
	
		if(activeField.value.length == activeField.maxLength - 2)
		{
			activeField.value = '19' + activeField.value;
		}
	
}

function onChange(activeField)
{
	for(i=0; i <= 8; i++)
	{
		var divimage = "divImage" + i;
		if(activeField.selectedIndex == i)	
			document.getElementById(divimage).style.display='';
		else
			document.getElementById(divimage).style.display='none';
			
		var divlabel = "divLabel" + i;
		if(activeField.selectedIndex == i)	
			document.getElementById(divlabel).style.display='';
		else
			document.getElementById(divlabel).style.display='none';		
	}
}
	
function ValidateNo(NumStr, String) 
{ 
	for(var Idx=0; Idx<NumStr.length; Idx++) 
	{ 
		var Char = NumStr.charAt(Idx); 
		var Match = false; 

		for(var Idx1=0; Idx1<String.length; Idx1++) 
		{ 
			if(Char == String.charAt (Idx1)) 
				Match = true; 
		} 

		if (!Match) 
			return false; 
	} 
	return true; 
} 

