function domIt() {
	if (!document.getElementsByTagName) return;
		var anchors = document.getElementsByTagName("a");
		for (var i=0; i<anchors .length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
		anchor.target = "_blank";
		anchor.title = (anchor.title != "") ? anchor.title+" (opens in a new window)" : "opens in a new window";
		anchor.className = (anchor.className != '') ? anchor.className+' external' : 'external';
		}
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "popup") {
			anchor.onclick = function() {
				var pictitle = escape(this.title.replace(" (opens in a popup window)",""));
				//url = escape(this.getAttribute("href"));
				url = this.getAttribute("href");
				window.open(url,'popup','width=760,height=480,resizable=yes,scrollbars=yes');
				return false;
			  }
			anchor.title = (anchor.title != "") ? anchor.title+" (opens in a popup window)" : "opens in a popup window";
		}
	}
	//End anchors
}

/*	dynamicCSS.js v1.0 <http://www.bobbyvandersluis.com/articles/dynamicCSS.php>
	Copyright 2005 Bobby van der Sluis
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

function createStyleRule(selector, declaration) {
	if (!document.getElementsByTagName || !(document.createElement || document.createElementNS)) return;
	var agt = navigator.userAgent.toLowerCase();
	var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	var is_iewin = (is_ie && (agt.indexOf("win") != -1));
	var is_iemac = (is_ie && (agt.indexOf("mac") != -1));
	if (is_iemac) return; // script doesn't work properly in IE/Mac
	var head = document.getElementsByTagName("head")[0]; 
	var style = (typeof document.createElementNS != "undefined") ?  document.createElementNS("http://www.w3.org/1999/xhtml", "style") : document.createElement("style");
	if (!is_iewin) {
		var styleRule = document.createTextNode(selector + " {" + declaration + "}");
		style.appendChild(styleRule); // bugs in IE/Win
	}
	style.setAttribute("type", "text/css");
	style.setAttribute("media", "screen"); 
	head.appendChild(style);
	if (is_iewin && document.styleSheets && document.styleSheets.length > 0) {
		var lastStyle = document.styleSheets[document.styleSheets.length - 1];
		if (typeof lastStyle.addRule == "object") { // bugs in IE/Mac and Safari
			lastStyle.addRule(selector, declaration);
		}
	}
}

function thumbWin(galType, iVal, eleId) {
	setDir = false;
	var args = thumbWin.arguments.length;
	if (args > 3) {setDir = true;}
	if (window.showModalDialog) {
		window.showModalDialog("/cms/htedit/editor/plugins/ibrowser/thmbrowser.php?galType="+galType+"&iVal="+iVal+"&eleId="+eleId+"&setDir="+setDir,self,"dialogWidth:600px;dialogHeight:400px");
	} else {
		iWindow = window.open('/cms/htedit/editor/plugins/ibrowser/thmbrowser.php?galType='+galType+'&iVal='+iVal+"&eleId="+eleId+"&setDir="+setDir,'name','height=400,width=600,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes');
	}
}

function setValue(val) {
	var args = setValue.arguments;
	for (var i=1; i<args.length; i++) {
		if ($(args[i]).nodeName.toLowerCase() == 'input') {
			$(args[i]).value = args[0];
		} else if ($(args[i]).nodeName.toLowerCase() == 'select') {
			$(args[i]).options[args[i].selectedIndex].args[0];
		} else if ($(args[i]).nodeName.toLowerCase() == 'img') {
			$(args[i]).src = args[0];
		}
	}
}

function cnt(w,x,sep){
	var y=w.value;
	var r = 0;
	a=y.replace(/\s/g,' ');
	a=a.split(sep);
	for (z=0; z<a.length; z++) {if (a[z].length > 0) r++;}
	x.value=r;
}

function 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=findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function changeProp(objName,x,theProp,theValue) { //v6.0
  var obj = findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
    if (theValue == true || theValue == false)
      eval("obj."+theProp+"="+theValue);
    else eval("obj."+theProp+"='"+theValue+"'");
  }
}
function setElementStyleByClassName(cl, propertyName, propertyValue) {
	if (!document.getElementsByTagName) return;
	var re = new RegExp("(^| )" + cl + "( |$)");
	var el = document.all ? document.all : document.getElementsByTagName("body")[0].getElementsByTagName("*"); // fix for IE5.x
	for (var i = 0; i < el.length; i++) {
		if (el[i].className && el[i].className.match(re)) {
			el[i].style[propertyName] = propertyValue;
		}
	}
}

function myUnobtrusiveBehavior() {
	setElementStyleByClassName("toggle", "display", "none"); // fallback for IE5/Mac
	setElementStyleByClassName("toggle", "display", "block");
}

function openCentWindow(theURL,scrollb,winWidth,winHeight) { //v2.0
	
	if (winWidth>screen.width){winWidth = screen.width;}
	if (winHeight>screen.height){winHeight = screen.height;}
	if (winWidth <= 0){winWidth = screen.width;}
	if (winHeight <= 0){winHeight = screen.height;}

	leftPos = 0; leftPos = screen.width/2 - winWidth/2; // centres window
	topPos = 0; topPos = screen.height/2 - winHeight/2;  // centres window
	
	modWindow = window.open(theURL,'modWin','toolbar=no,location=no,scrollbars='+scrollb+',resizable=yes,width='+winWidth+',height='+winHeight+',left='+leftPos+',top='+topPos+'');
	modWindow.focus();
}

modalwin = null;

function modWin(obj) {
	if (!document.getElementById) return;
	var items = modWin.arguments.length;
	var params = '?pcount='+items;
	var ele = false;
	for (i = 0;i < items;i++) {
		ele = document.getElementById(modWin.arguments[i]);
		if (ele && ele.nodeName.toLowerCase() == 'input') {
			params = params+'&'+modWin.arguments[i]+'='+ele.value;
		} else if(ele && ele.nodeName.toLowerCase() == 'select') {
			params = params+'&'+modWin.arguments[i]+'='+ele.options[ele.selectedIndex].value;
		}
   }
   if(document.getElementById(obj) == null) {
	   url = obj;
   } else if(obj.nodeName.toLowerCase() == 'a') {
		url = obj.getAttribute("href");
	} else {
		url = obj;
	}
	/*if (window.showModalDialog) {
		window.showModalDialog(url+params,"modWindow","dialogWidth:760px;dialogHeight:480px;resizable:yes;status:no");
	} else {
		//openCentWindow(url+params,'yes',760,480);
		window.open(url+params,'modWindow','width=760,height=480,resizable=yes,scrollbars=yes,location=yes');
	}*/
	modalwin = window.open(url+params,'modWindow','width=760,height=480,resizable=yes,scrollbars=yes');
}

function confirmSubmit() {
var agree=confirm("Are you sure you wish to continue?");
if (agree)
	return true ;
else
	return false ;
}

function confirmDelete(modName) {
var agree=confirm("Are you sure you want to delete this "+modName+"?");
if (agree)
	return true ;
else
	return false ;
}

function submitform(theform) {
  if (!document.getElementById) return;
  var myform = document.getElementById(theform);
  myform.submit();
}

function swapTabs(tabOn) {
	if (!document.getElementsByTagName) return;
		activeTab = "panel-"+tabOn;
		var panelGroup = document.getElementById("panels");
		var panels = panelGroup.getElementsByTagName("fieldset");
		for (var i=0; i<panels .length; i++) {
			var panel = panels[i];
			var pNo = i+1;
			if (panel.id == activeTab) {
				changeProp('panel-'+pNo,'','style.display','block','DIV');
				changeProp('tab-'+pNo,'','className','active','a');
			} else {
				changeProp('panel-'+pNo,'','style.display','none','DIV');
				changeProp('tab-'+pNo,'','className','off','a');
			}
		}
}

function createCookie(name, value, days)
{
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return null;
}

function eraseCookie(name)
{
  createCookie(name, "", -1);
}

function setMenu() {
	setClass = readCookie("menu");
	if (setClass == null) {
		createCookie("menu", "mShow", 14)
		setClass = readCookie("menu");
	}
	if (setClass.length < 1) {
		return false;
	} else {
		var menu = document.getElementById("cmsHolder");
		menu.className = setClass;
	}
}
function showMenu() {
	if (!document.getElementsByTagName) return;
		var menu = document.getElementById("cmsHolder");
		if (menu) {
			if (menu.className != 'mShow') {
				menu.className = 'mShow';
				createCookie("menu", "mShow", 14)
			} else {
				menu.className = 'mHide';
				createCookie("menu", "mHide", 14)
			}
		} else {
			return false;
		}
}
function showe(eleId) {
	if (!document.getElementById) return;
		var ele = document.getElementById(eleId);
		if (ele) {
			if (ele.style.display != 'block') {
				ele.style.display = 'block';
			} else {
				ele.style.display = 'none';
			}
		} else {
			return false;
		}
}

function hibox(objId, status) {
	obj = document.getElementById(objId);
	if (status == 'on') {
		obj.className = 'hiBox';
	} else {
		obj.className = 'editBox';
	}
}

function setOrder(sList) {
	var msg = "";
	for ( var i=0, len=sList.length; i<len; ++i ){
		//script.aculo.us function
		//changeProp(sList[i]+'Order','','value',Sortable.sequence(sList[i]),'INPUT/HIDDEN');
		changeProp(sList[i]+'Order','','value',Sortable.serialize(sList[i]),'INPUT/HIDDEN');
	}
	/*Sortable.serialize('pagemenu'));return false*/
	/*Sortable.sequence('pagelinks');
	changeProp('sortArray','','value',sOrder,'INPUT/HIDDEN');*/
	return false ;
}
function setOrderStd(sList) {
	var msg = "";
	for ( var i=0, len=sList.length; i<len; ++i ){
		//script.aculo.us function
		changeProp(sList[i]+'Order','','value',Sortable.sequence(sList[i]),'INPUT/HIDDEN');
	}
	return false ;
}

function updateList(container) {
	var url = '/cms/process/arrange.php';
	var params = Sortable.serialize(container.id);
	//var params = 'slotnum='+container.id+'&order='+Sortable.serialize(container.id);
	var ajax = new Ajax.Request(url,{
		method: 'post',
		parameters: params,
		onLoading: function(){$('msgBox').show()},
		onLoaded: function(){$('msgBox').hide()}
	});
}
function prepDup(att_id,att_type,att_name,att_Ref) {
	parent.opener.fetchDup(att_id,att_type,att_name,att_Ref);
	//window.setTimeout('parent.close()', 300);
}
function fetchDup(att_id,att_type,att_name,att_Ref) {
	var url    = '/cms/process/dupshow.php';
	var rand   = Math.random(9999);
	var pars   = '?att_id=' + att_id + '&att_type=' + att_type + '&att_name=' + att_name + '&rand=' + rand + '&att_Ref=' + att_Ref;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: function(){modalwin.$('msgBox').show()}, onComplete: dupResponse} );
	//var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onComplete: showResponse} );
}
function dupResponse (originalRequest) {
	//$('msgBox').hide();
	$('respMsg').innerHTML = originalRequest.responseText;
	if (!modalwin.closed) {modalwin.window.close();}
}

function getMediaData() {
	var mediaFile = $('mediaFile').value;
	var mControls = $('mControls').checked;
	var url    = '/cms/process/mediadata.php';
	/*var params = '{mediaFile:'+mediaFile+'}';
	var ajax = new Ajax.Request(url,{
		method: 'post',
		parameters: params,
		onLoading: function(){$('msgBox').show()},
		onLoaded: function(){$('msgBox').hide()},
		onComplete: medResponse
	});*/
	var rand   = Math.random(9999);
	var pars   = '?mediaFile=' + mediaFile + '&mControls=' + mControls + '&rand=' + rand;
	var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: function(){$('msgBox').show()}, onComplete: medResponse} );
}
function medResponse (originalRequest) {
	//$('msgBox').hide();
	$('respData').innerHTML = originalRequest.responseText;
	if (!modalwin.closed) {modalwin.window.close();}
}

function resetThumbs(data,folder) {
	var ele = $(data);
	var dir = false;
	if (ele && ele.nodeName.toLowerCase() == 'input') {
		dir = ele.value;
	} else if(ele && ele.nodeName.toLowerCase() == 'select') {
		dir = ele.options[ele.selectedIndex].value;
	}
	if(dir) {
		var url    = '/cms/process/galclear.php';
		var rand   = Math.random(9999);
		var pars   = '?galdir=' + dir + '&folder=' + folder + '&rand=' + rand;
		var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars, onLoading: function(){$('msgBox').show()}, onComplete: resetThumbsResponse} );
	}
}
function resetThumbsResponse (originalRequest) {
	//$('msgBox').hide();
	$('clearMsg').innerHTML = originalRequest.responseText;
	if (!modalwin.closed) {modalwin.window.close();}
}


function BrowseFiles() {
	// You can use the "CKFinder" class to render CKFinder in a page:
	var finder = new CKFinder() ;
	finder.BasePath = '/ckfinder/' ;	// The path for the installation of CKFinder (default = "/ckfinder/").
	//finder.SelectFunction = SetFileField ;
	finder.Popup() ;

	// It can also be done in a single line, calling the "static"
	// Popup( basePath, width, height, selectFunction ) function:
	// CKFinder.Popup( '../../', null, null, SetFileField ) ;
}
function BrowseMedia(field) {
	editedField = field ; //editedField defined in jcalls.js
	var finder = new CKFinder() ;
	finder.resType = 'Media';
	finder.BasePath = '/ckfinder/' ;	// The path for the installation of CKFinder (default = "/ckfinder/").
	finder.SelectFunction = SetMediaField ;
	finder.Popup() ;
}
function SetMediaField( fileUrl ) {
	$(editedField).value = fileUrl ;
}
function tierClick(ele) {
	if(ele.next(0).animating) {
		return false;
	}
	ele.next(0).animating = true;
	if(ele.next(0).getStyle('display') == 'block') {
		ele.removeClassName('accordion_toggle_active');
		Effect.SlideUp(ele.next(0),{scaleY: true, scaleX: false, scaleContent: false, duration:0.5,afterFinish: function() {
			ele.next(0).setStyle({
			height: 'auto',
			display: 'none'
			});
			ele.next(0).animating = false;
			}
		});
	} else {
		ele.addClassName('accordion_toggle_active');
		Effect.SlideDown(ele.next(0),{scaleY: true, scaleX: false, scaleContent: false, duration:0.5,afterFinish: function() {
			ele.next(0).setStyle({
			height: 'auto',
			display: 'block'
			});
			ele.next(0).animating = false;
			}
		});
	}
}
function addTier(container,tiers) {
	tierNum = tierNum + 1;
	var elementH = Builder.node('h3', { id:'ttog-'+tierNum, className:'accordion_toggle' }, 'Slide '+tierNum);
	var element = Builder.node('div', { id:'tcnt-'+tierNum, className:'accordion_content' });
	$(container).insert(elementH);
	$(container).insert(element);
	//Below moved to setTier for IE compatibility
	/*elementH.addClassName('accordion_toggle_active');
	elementH.onclick = function() {
		tierClick(elementH);
	}*/
	var url = '/cms/slideform.php';
	var rand   = Math.random(9999);
	var pars   = '?slidenum=' + tierNum + '&rand=' + rand;
	var myAjax = new Ajax.Updater( 'tcnt-'+tierNum, url, {method: 'get', parameters: pars, onComplete: function(){setTier('ttog-'+tierNum);}} );
}
function setTier (ele) {
	$(ele).addClassName('accordion_toggle_active');
	$(ele).onclick = function() {
		tierClick($(ele));
	}
}
function removeTier(ele) {
	$(ele).previous(0).remove();
	$(ele).remove();
}
function tierpanels(container) {
	var panels = $$('#'+container+' .accordion_toggle');
	for (var i=0; i<panels .length; i++) {
		var htoggle = panels[i];
		if (i > 0) {
			htoggle.next(0).setStyle({
				display: 'none',
				height: 'auto'
			});
		} else {
			htoggle.addClassName('accordion_toggle_active');
		}
		htoggle.onclick = function() {
			tierClick(this);
		}
	}
}
/*	valForm.js v1.0 <carl@stackedup.com>
	Copyright 2009 Carl Russell
	Released under a creative commons Attribution-ShareAlike 3.0 license (http://creativecommons.org/licenses/by-sa/3.0/)
	(Requires Prototype.js)
*/
function valForm(formId) {
	var form = $(formId);
	var errStr = new String();
	var errNum = 0;
	$(formId).select(".req").each( function(req) {
		var iType = req.type.toLowerCase();
		var iName = req.name.replace(/_/g, " ").toUpperCase();
		var iName = iName.replace(/-/g, "'");
		var iName = iName.replace("[]", "");
		var iVal = new String();
		var errMsg = new String();
		var chkType = 'string';
		switch(iType)
		{
		case "text":
			iVal = $F(req.name).replace(/^\s+|\s+$/g,"") + ""; // strip leading and trailing spaces
			iVal = iVal.replace(/\s+/g," "); // replace multiple spaces with a single space
			if (req.hasClassName('email')) {
				errMsg = " - enter a valid email address.\n";
				chkType = 'email';
			} else if (req.hasClassName('phone')) {
				errMsg = " - enter a valid phone number with area code.\n";
				chkType = 'phone';
			} else {
				errMsg = " - type something in the text field.\n";
			}
			break;    
		case "textarea":
			iVal = $F(req.name).replace(/^\s+|\s+$/g,"") + ""; // strip leading and trailing spaces
			iVal = iVal.replace(/\s+/g," "); // replace multiple spaces with a single space
			errMsg = " - type something in the text area.\n";
			break;
		case "select-one":
			iVal = $F(req.name) + "";
			errMsg = " - select an option from the drop-down list.\n";
			break;
		case "select-multiple":
			iVal = $F(req.name) + "";
			errMsg = " - select one or more options from the drop-down list.\n";
			break;
		case "file":
			iVal = $F(req.name).replace(/^\s+|\s+$/g,"") + ""; // strip leading and trailing spaces
			iVal = iVal.replace(/\s+/g," "); // replace multiple spaces with a single space
			errMsg = " - choose a file on your PC to upload.\n";
			break;
		case "checkbox":
			iVal = "";
			var boxes = form.getInputs('checkbox', req.name);
			if (boxes.length > 1) {
				for(b=0;b<boxes.length;b++){
					if(boxes[b].checked){iVal = "1"}

				}
				errMsg = " - tick one or more of the boxes.\n";
			} else {
				iVal = $F(req.name) + "";
				errMsg = " - you must tick the box to continue.\n";
			}
			break;
		case "radio":
			iVal = $$('input:checked[type="radio"][name='+req.name+']').pluck('value') + "";
			errMsg = " - click a radio button.\n";
			break;
		default:
			iVal = "Not a form element"; //ignore
		}
		switch(chkType)
		{
		case "email":
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (!filter.test(iVal)) {
				errStr+= iName + errMsg;
				errNum++ ;
			} else if (iName == "EMAIL CHECK") {
				if ($('email').value != $('email_check').value) {
					errStr+= "Your email addresses do not match";
					errNum++ ;
				}
			}
			break;
		case "phone":
			var filter = /(^[0-9()\s\-\+]{10,})$/gi; //only digits, space, brackets, hyphen and plus sign allowed
			if (!filter.test(iVal)) {
				errStr+= iName + errMsg;
				errNum++ ;
			}
			break;
		default:
			if (iVal.blank()) {
				errStr+= iName + errMsg;
				errNum++ ;
			}
		}
		
	});
	if(errNum > 0) {
		alert("Sorry, you have missed some information we need.\nPlease check the following items and try again:\n\n" + errStr);
		return false;
	} else {
		return true;
	}
}

// Title: Tigra Calendar
// URL: http://www.softcomplex.com/products/tigra_calendar/
// Version: 3.3 (European date format)
// Date: 09/01/2005 (mm/dd/yyyy)
// Note: Permission given to use this script in ANY kind of applications if
//    header lines are left unchanged.
// Note: Script consists of two files: calendar?.js and calendar.html

// if two digit year input dates after this year considered 20 century.
var NUM_CENTYEAR = 30;
// is time input control required by default
var BUL_TIMECOMPONENT = false;
// are year scrolling buttons required by default
var BUL_YEARSCROLL = true;

var calendars = [];
var RE_NUM = /^\-?\d+$/;

function calendar1(obj_target) {

	// assigning methods
	this.gen_date = cal_gen_date1;
	this.gen_time = cal_gen_time1;
	this.gen_tsmp = cal_gen_tsmp1;
	this.prs_date = cal_prs_date1;
	this.prs_time = cal_prs_time1;
	this.prs_tsmp = cal_prs_tsmp1;
	this.popup    = cal_popup1;

	// validate input parameters
	if (!obj_target)
		return cal_error("Error calling the calendar: no target control specified");
	if (obj_target.value == null)
		return cal_error("Error calling the calendar: parameter specified is not valid target control");
	this.target = obj_target;
	this.time_comp = BUL_TIMECOMPONENT;
	this.year_scroll = BUL_YEARSCROLL;
	
	// register in global collections
	this.id = calendars.length;
	calendars[this.id] = this;
}

function cal_popup1 (str_datetime) {
	if (str_datetime) {
		this.dt_current = this.prs_tsmp(str_datetime);
	}
	else {
		this.dt_current = this.prs_tsmp(this.target.value);
		this.dt_selected = this.dt_current;
	}
	if (!this.dt_current) return;

	var obj_calwindow = window.open(
		'/funcs/calendar.html?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
		'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
		',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
	);
	obj_calwindow.opener = window;
	obj_calwindow.focus();
}

// timestamp generating function
function cal_gen_tsmp1 (dt_datetime) {
	return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
}

// date generating function
function cal_gen_date1 (dt_datetime) {
	return (
		(dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "-"
		+ (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "-"
		+ dt_datetime.getFullYear()
	);
}
// time generating function
function cal_gen_time1 (dt_datetime) {
	return (
		(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
		+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
		+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
	);
}

// timestamp parsing function
function cal_prs_tsmp1 (str_datetime) {
	// if no parameter specified return current timestamp
	if (!str_datetime) {
		var nd = new Date();
		nd.setHours(00);
		nd.setMinutes(0);
		nd.setSeconds(0);
		return (nd);
	}

	// if positive integer treat as milliseconds from epoch
	if (RE_NUM.exec(str_datetime))
		return new Date(str_datetime);
		
	// else treat as date in string format
	var arr_datetime = str_datetime.split(' ');
	return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
}

// date parsing function
function cal_prs_date1 (str_date) {

	var arr_date = str_date.split('-');

	if (arr_date.length != 3) return cal_error ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy.");
	if (!arr_date[0]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found.");
	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[1]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo month value can be found.");
	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[2]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo year value can be found.");
	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers.");

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed range is 01-12.");
	dt_date.setMonth(arr_date[1]-1);
	 
	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);

	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
	dt_date.setDate(arr_date[0]);
	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+".");

	return (dt_date)
}

// time parsing function
function cal_prs_time1 (str_time, dt_date) {

	if (!dt_date) return null;
	var arr_time = String(str_time ? str_time : '').split(':');

	if (!arr_time[0]) dt_date.setHours(0);
	else if (RE_NUM.exec(arr_time[0]))
		if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
		else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23.");
	else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers.");
	
	if (!arr_time[1]) dt_date.setMinutes(0);
	else if (RE_NUM.exec(arr_time[1]))
		if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
		else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers.");

	if (!arr_time[2]) dt_date.setSeconds(0);
	else if (RE_NUM.exec(arr_time[2]))
		if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
		else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers.");

	dt_date.setMilliseconds(0);
	return dt_date;
}

function cal_error (str_message) {
	alert (str_message);
	return null;
}

/* SWFObject v2.1 <http://code.google.com/p/swfobject/>
	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){var b="undefined",Q="object",n="Shockwave Flash",p="ShockwaveFlash.ShockwaveFlash",P="application/x-shockwave-flash",m="SWFObjectExprInst",j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&&typeof K.getElementsByTagName!=b&&typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&&typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&&!(typeof T.mimeTypes!=b&&T.mimeTypes[P]&&!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,"$1");AC[0]=parseInt(x.replace(/^(.*)\..*$/,"$1"),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,"$1"),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+".7")}catch(t){try{y=new ActiveXObject(p+".6");AC=[6,0,21];y.AllowScriptAccess="always"}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&&y){try{x=y.GetVariable("$version");if(x){x=x.split(" ")[1].split(",");AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&&h.win){try{K.write("<script id=__ie_ondomload defer=true src=//:><\/script>");J=C("__ie_ondomload");if(J){I(J,"onreadystatechange",S)}}catch(q){}}if(h.webkit&&typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener("DOMContentLoaded",E,null)}R(E)}();function S(){if(J.readyState=="complete"){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&&h.win){var v=a("span");try{var u=K.getElementsByTagName("body")[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r<q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener("load",r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener("load",r,false)}else{if(typeof j.attachEvent!=b){I(j,"onload",r)}else{if(typeof j.onload=="function"){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q<t;q++){var u=N[q].id;if(h.pv[0]>0){var r=C(u);if(r){N[q].width=r.getAttribute("width")?r.getAttribute("width"):"0";N[q].height=r.getAttribute("height")?r.getAttribute("height"):"0";if(c(N[q].swfVersion)){if(h.webkit&&h.webkit<312){Y(r)}W(u,true)}else{if(N[q].expressInstall&&!A&&c("6.0.65")&&(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a("embed"),y=q.attributes;if(y){var v=y.length;for(var u=0;u<v;u++){if(y[u].nodeName=="DATA"){w.setAttribute("src",y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r<z;r++){if(x[r].nodeType==1&&x[r].nodeName=="PARAM"){w.setAttribute(x[r].getAttribute("name"),x[r].getAttribute("value"))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&&parseInt(w.width,10)<310){w.width="310"}if(!(/%$/.test(w.height))&&parseInt(w.height,10)<137){w.height="137"}K.title=K.title.slice(0,47)+" - Flash Player Installation";var z=h.ie&&h.win?"ActiveX":"PlugIn",q=K.title,r="MMredirectURL="+j.location+"&MMplayerType="+z+"&MMdoctitle="+q,x=w.id;if(h.ie&&h.win&&u.readyState!=4){var t=a("div");x+="SWFObjectNew";t.setAttribute("id",x);u.parentNode.insertBefore(t,u);u.style.display="none";var v=function(){u.parentNode.removeChild(u)};I(j,"onload",v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&&h.win&&t.readyState!=4){var r=a("div");t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display="none";var q=function(){t.parentNode.removeChild(t)};I(j,"onload",q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a("div");if(h.win&&h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t<q;t++){if(!(w[t].nodeType==1&&w[t].nodeName=="PARAM")&&!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&&h.win){var AF="";for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()=="data"){AE.movie=AG[AB]}else{if(AB.toLowerCase()=="styleclass"){AF+=' class="'+AG[AB]+'"'}else{if(AB.toLowerCase()!="classid"){AF+=" "+AB+'="'+AG[AB]+'"'}}}}}var AD="";for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='<param name="'+AA+'" value="'+AE[AA]+'" />'}}v.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AF+">"+AD+"</object>";i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&&h.webkit<312){var AC=a("embed");AC.setAttribute("type",P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()=="data"){AC.setAttribute("src",AG[z])}else{if(z.toLowerCase()=="styleclass"){AC.setAttribute("class",AG[z])}else{if(z.toLowerCase()!="classid"){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!="movie"){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute("type",P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()=="styleclass"){u.setAttribute("class",AG[x])}else{if(x.toLowerCase()!="classid"){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&&w.toLowerCase()!="movie"){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a("param");u.setAttribute("name",q);u.setAttribute("value",r);t.appendChild(u)}function X(r){var q=C(r);if(q&&(q.nodeName=="OBJECT"||q.nodeName=="EMBED")){if(h.ie&&h.win){if(q.readyState==4){B(r)}else{j.attachEvent("onload",function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]=="function"){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(".");q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]>q[0]||(r[0]==q[0]&&r[1]>q[1])||(r[0]==q[0]&&r[1]==q[1]&&r[2]>=q[2]))?true:false}function V(v,r){if(h.ie&&h.mac){return }var u=K.getElementsByTagName("head")[0],t=a("style");t.setAttribute("type","text/css");t.setAttribute("media","screen");if(!(h.ie&&h.win)&&typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+" {"+r+"}"))}u.appendChild(t);if(h.ie&&h.win&&typeof K.styleSheets!=b&&K.styleSheets.length>0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?"visible":"hidden";if(e&&C(t)){C(t).style.visibility=r}else{V("#"+t,"visibility:"+r)}}function g(s){var r=/[\\\"<>\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&&h.win){window.attachEvent("onunload",function(){var w=d.length;for(var v=0;v<w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u<t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&&typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+="";AD+="";if(c(q)){W(AE,false);var AA={};if(AC&&typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&&typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&&typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+="&"+t+"="+r[t]}else{y.flashvars=t+"="+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&&!A&&c("6.0.65")&&(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split("&");for(var r=0;r<t.length;r++){if(t[r].substring(0,t[r].indexOf("="))==v){return g(t[r].substring((t[r].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(A&&M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&&h.win){M.style.display="block"}}M=null;l=null;A=false}}}}}();