/********************************************************************************
						2Gen.Net Javascript Functions and Classes
						Produced for Tourism Hamilton
						(C)2006, All rights reserved

	Framework, CMS, or parts of any kind are to be used with permission.
	Installation of this product may be done only by 2Gen.Net or other
	sanctioned and qualified organisation.
	
	For support, please email support@2gen.net or visit www.2gen.net
	
	This file:	inc_javascript.js - Javascript (JS) definitions
				authored by: Nick Tomkin (nick@2gen.net)
				changes made by: Nick Tomkin (nick@2gen.net)
	
*********************************************************************************/
/* CONSTANTS */
d=document;
var arrMonthNames = new Array('January',
							  'February',
							  'March',
							  'April',
							  'May',
							  'June',
							  'July',
							  'August',
							  'September',
							  'October',
							  'November',
							  'December');
							
/* OBJECTS */
cAjaxComm = {
	update: function(vPage,vTarget,vParams){
		var url = 'includes/ax/'+vPage+'.cfm';
		var pars = vParams;
		var target = vTarget;
		var ajaxContentShell = new Ajax.Updater(target, url, {method: 'get', parameters: pars, evalScripts:true});	
		ajaxContentShell.onComplete = function(){
			cPageEvent.executeEventsFor(vPage);
		}
	},
	request: function(vPage,vParams,vFunction){
		var url = 'includes/ax/'+vPage+'.cfm';
		var pars = vParams;
		var ajaxRequestObject = new Ajax.Request(url, {method: 'get', parameters: pars, evalScripts:true,
			onComplete: function(vOriginalRequest){
				if(vFunction)
					eval(vFunction+'(vOriginalRequest.responseText)');
			}});
	}
}
cPageEvent = {
	executeEventsFor: function(vPage){
		switch(vPage){
			case "aCalendar":
				
				break;
		}
	}
}
function daysInMonth(iMonth, iYear){
	var daysMonths = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (iMonth != 1) return daysMonths[iMonth];
	if (iYear%4 != 0) return daysMonths[1];
	if (iYear%100 == 0 && iYear%400 != 0) return daysMonths[1];
	return daysMonths[1] + 1;
}
function CurrencyFormatted(amount){
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}
function IsNumeric(sText) {
	var ValidChars = "0123456789.";
	var IsNumber=true;
	var Char;
	
	
	for (i = 0; i < sText.length && IsNumber == true; i++){ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1){
			IsNumber = false;
		}
	}
	return IsNumber;   
}

function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}

function isArray(a) {
    return isObject(a) && a.constructor == Array;
}

function isBoolean(a) {
    return typeof a == 'boolean';
}

function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}

function isFunction(a) {
    return typeof a == 'function';
}

function isNull(a) {
    return a === null;
}

function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}

function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}

function isString(a) {
    return typeof a == 'string';
}

function isUndefined(a) {
    return typeof a == 'undefined';
} 
function fTSToDate(sDate){
	var dTempDate = sDate.replace('{ts \'','').replace('\'}','');
	var arrTemp = dTempDate.split(' ');
	var arrDate = arrTemp[0].split('-');
	var arrTime = arrTemp[1].split(':');
	var vTempDateStr = arrMonthNames[parseInt(arrDate[1],10)-1] + ' ' + arrDate[2] + ', ' + arrDate[0] + ' ' + arrTemp[1];
	var daTempDate = new Date();
	daTempDate.setFullYear(parseInt(arrDate[0],10),parseInt(arrDate[1],10)-1,parseInt(arrDate[2],10));
	daTempDate.setHours(parseInt(arrTime[0],10));
	daTempDate.setMinutes(parseInt(arrTime[1],10));
	daTempDate.setSeconds(parseInt(arrTime[2],10));
	return daTempDate;
}

/* CALENDAR FUNCTIONS */
function fNavigateEvents(vArea,vDate){
	var aCategories = new Array();
	var vRepInt = 0;
	if (vArea == 0){
		if(!vDate){
			var vSDYear = d.getElementById('cboFromYear').value;
			var vSDMonth = d.getElementById('cboFromMonth').value;
			var vSDDay = d.getElementById('cboFromDay').value;
			var daStartDate = Date.UTC(vSDYear,vSDMonth,vSDDay,0,0);
			vDate = "{ts '"+vSDYear+"-"+(vSDMonth>9?vSDMonth:'0'+vSDMonth)+"-"+(vSDDay>9?vSDDay:'0'+vSDDay)+" 00:00:00'}";
			var dDate = new fTSToDate(vDate);
		} else {
			var dDate = new fTSToDate(vDate);
			var daStartDate = Date.UTC(dDate.getFullYear(),dDate.getMonth(),dDate.getDate(),0,0);		
		}
		if(d.getElementById('cboToYear')){
			var vEDYear = d.getElementById('cboToYear').value;
			var vEDMonth = d.getElementById('cboToMonth').value;
			var vEDDay = d.getElementById('cboToDay').value;
			var daEndDate = Date.UTC(vEDYear,vEDMonth,vEDDay,23,59);
			vEndDate = "{ts '"+vEDYear+"-"+(vEDMonth>9?vEDMonth:'0'+vEDMonth)+"-"+(vEDDay>9?vEDDay:'0'+vEDDay)+" 23:59:00'}";
			var dEndDate = new fTSToDate(vEndDate);
		} else {
			var dEndDate = new Date();
			var daEndDate = Date.UTC(dEndDate.getFullYear(),dEndDate.getMonth(),dEndDate.getDate(),23,59);		
		}
		if (daStartDate > daEndDate){
			vM = (dDate.getMonth()+1>9?dDate.getMonth()+1:'0'+(parseInt(dDate.getMonth()+1)));
			vEndDate = "{ts '"+dDate.getFullYear()+"-"+vM+"-"+(dDate.getDate()>9?dDate.getDate():'0'+dDate.getDate())+" 23:59:00'}";
		}
	} else if (vArea==1){
		if(!vDate){
			var vSDYear = d.getElementById('cboFromYear').value;
			var vSDMonth = d.getElementById('cboFromMonth').value;
			var vSDDay = d.getElementById('cboFromDay').value;
			var daStartDate = Date.UTC(vSDYear,vSDMonth,vSDDay,0,0);
			vDate = "{ts '"+vSDYear+"-"+vSDMonth+"-"+vSDDay+" 00:00:00'}";
			var dDate = new fTSToDate(vDate);
		} else {
			var dDate = new fTSToDate(vDate);
		}
		vDate;
		dEndDate = new Date(dDate.getFullYear(),dDate.getMonth()+1,1);
		dEndDate.setDate(dEndDate.getDate()-1)
		vDays = dEndDate.getDate();
		vEndDate = "{ts '"+dDate.getFullYear()+"-"+(dDate.getMonth()+1>9?dDate.getMonth()+1:'0'+(parseInt(dDate.getMonth())+1))+"-"+(vDays>9?vDays:'0'+vDays)+" 23:59:00'}";
	} else if (vArea==2){
		if(!vDate){
			var vSDYear = d.getElementById('cboFromYear').value;
			var vSDMonth = d.getElementById('cboFromMonth').value;
			var vSDDay = d.getElementById('cboFromDay').value;
			var daStartDate = Date.UTC(vSDYear,vSDMonth,vSDDay,0,0);
			vDate = "{ts '"+vSDYear+"-"+vSDMonth+"-"+vSDDay+" 00:00:00'}";
			var dDate = new fTSToDate(vDate);
		} else {
			var dDate = new fTSToDate(vDate);
			var daStartDate = Date.UTC(dDate.getFullYear(),dDate.getMonth(),dDate.getDate(),0,0);		
		}
		vEndDate = "{ts '"+dDate.getFullYear()+"-"+(dDate.getMonth()+1>9?dDate.getMonth()+1:'0'+(parseInt(dDate.getMonth())+1))+"-"+(dDate.getDate()>9?dDate.getDate():'0'+dDate.getDate())+" 23:59:00'}";
	}
	for(vIdx=0;vIdx<d.getElementsByName('chkEventType').length;vIdx++){
		if(d.getElementsByName('chkEventType')[vIdx].checked){
			aCategories[vRepInt] = '\''+d.getElementsByName('chkEventType')[vIdx].value+'\'';
			vRepInt++;
		}
	}
	var vCategories = aCategories.join(',');
	if(d.getElementById('divEventListings')){
		fCalendarChangeDate(vDate);
	}else{
		d.location.href='servlet/eventlisting/rendbydate/'+vDate+'dStartDate/'+vDate+'dEndDate/'+vEndDate+'categories/'+escape(vCategories);
		return true;
	}
}
function fCalendarChangeDate(vDate){
	var vStartDate = new String();
	var vEndDate = new String();
	
	if(!vDate){
		var vSDYear = d.getElementById('cboFromYear').value;
		var vSDMonth = d.getElementById('cboFromMonth').value;
		var vSDDay = d.getElementById('cboFromDay').value;
		var daStartDate = Date.UTC(vSDYear,vSDMonth,vSDDay,0,0);
		vDate = "{ts '"+vSDYear+"-"+vSDMonth+"-"+vSDDay+" 00:00:00'}";
		var dDate = new fTSToDate(vDate);
	} else {
		var dDate = new fTSToDate(vDate);
		var daStartDate = Date.UTC(dDate.getFullYear(),dDate.getMonth(),dDate.getDate(),0,0);		
	}
	if(d.getElementById('cboToYear')){
		var vEDYear = d.getElementById('cboToYear').value;
		var vEDMonth = d.getElementById('cboToMonth').value;
		var vEDDay = d.getElementById('cboToDay').value;
		var daEndDate = Date.UTC(vEDYear,vEDMonth,vEDDay,23,59);
		vEndDate = "{ts '"+vEDYear+"-"+(vEDMonth>9?vEDMonth:'0'+vEDMonth)+"-"+(vEDDay>9?vEDDay:'0'+vEDDay)+" 23:59:00'}";
	} else {
		var dEndDate = new Date();
		var daEndDate = Date.UTC(dEndDate.getFullYear(),dEndDate.getMonth(),dEndDate.getDate(),23,59);		
	}
	var aCategories = new Array();
	var vRepInt = 0;
	for(vIdx=0;vIdx<d.getElementsByName('chkEventType').length;vIdx++){
		if(d.getElementsByName('chkEventType')[vIdx].checked){
			aCategories[vRepInt] = '\''+d.getElementsByName('chkEventType')[vIdx].value+'\'';
			vRepInt++;
		}
	}
	var vCategories = aCategories.join(',');
	vStartDate = vDate;
	if (daStartDate > daEndDate){
		vEndDate = "{ts '"+dDate.getFullYear()+"-"+(dDate.getMonth()+1>9?dDate.getMonth()+1:'0'+(parseInt(dDate.getMonth())+1))+"-"+(dDate.getDate()>9?dDate.getDate():'0'+dDate.getDate())+" 23:59:00'}";
	}	
	cAjaxComm.update('aCalendar','divCalendar','rendbydate='+vStartDate);
	cAjaxComm.update('aDatePicker','divDatePicker','vStartDate='+vStartDate+'&vEndDate='+vEndDate+'&vCategories='+vCategories);
	d.getElementById('divEventListings').innerHTML = 'Finding events...';
	cAjaxComm.update('aEventListings','divEventListings','vStartDate='+vStartDate+'&vEndDate='+vEndDate+'&vCategories='+vCategories);
}
function fCalendarGoToDate(vDate){
	var vStartDate = new String();
	var vEndDate = new String();
	
	if(!vDate){
		var vSDYear = d.getElementById('cboFromYear').value;
		var vSDMonth = d.getElementById('cboFromMonth').value;
		var vSDDay = d.getElementById('cboFromDay').value;
		var daStartDate = Date.UTC(vSDYear,vSDMonth,vSDDay,0,0);
		vDate = "{ts '"+vSDYear+"-"+vSDMonth+"-"+vSDDay+" 00:00:00'}";
		var dDate = new fTSToDate(vDate);
	} else {
		var dDate = new fTSToDate(vDate);
		var daStartDate = Date.UTC(dDate.getFullYear(),dDate.getMonth(),dDate.getDate(),0,0);		
	}
	var aCategories = new Array();
	var vRepInt = 0;
	for(vIdx=0;vIdx<d.getElementsByName('chkEventType').length;vIdx++){
		if(d.getElementsByName('chkEventType')[vIdx].checked){
			aCategories[vRepInt] = '\''+d.getElementsByName('chkEventType')[vIdx].value+'\'';
			vRepInt++;
		}
	}
	var vCategories = aCategories.join(',');
	vStartDate = vDate;
	vEndDate = "{ts '"+dDate.getFullYear()+"-"+(dDate.getMonth()+1>9?dDate.getMonth()+1:'0'+(parseInt(dDate.getMonth())+1))+"-"+(dDate.getDate()>9?dDate.getDate():'0'+dDate.getDate())+" 23:59:00'}";
	cAjaxComm.update('aCalendar','divCalendar','rendbydate='+vStartDate);
	cAjaxComm.update('aDatePicker','divDatePicker','vStartDate='+vStartDate+'&vEndDate='+vEndDate+'&vCategories='+vCategories);
	d.getElementById('divEventListings').innerHTML = 'Finding events...';
	cAjaxComm.update('aEventListings','divEventListings','vStartDate='+vStartDate+'&vEndDate='+vEndDate+'&vCategories='+vCategories);
}
function fCalendarGoToMonth(vDate){
	var vStartDate = new String();
	var vEndDate = new String();
	
	if(!vDate){
		var vSDYear = d.getElementById('cboFromYear').value;
		var vSDMonth = d.getElementById('cboFromMonth').value;
		var vSDDay = d.getElementById('cboFromDay').value;
		var daStartDate = Date.UTC(vSDYear,vSDMonth,vSDDay,0,0);
		vDate = "{ts '"+vSDYear+"-"+vSDMonth+"-"+vSDDay+" 00:00:00'}";
		var dDate = new fTSToDate(vDate);
	} else {
		var dDate = new fTSToDate(vDate);
	}
	var aCategories = new Array();
	var vRepInt = 0;
	for(vIdx=0;vIdx<d.getElementsByName('chkEventType').length;vIdx++){
		if(d.getElementsByName('chkEventType')[vIdx].checked){
			aCategories[vRepInt] = '\''+d.getElementsByName('chkEventType')[vIdx].value+'\'';
			vRepInt++;
		}
	}
	var vCategories = aCategories.join(',');
	vStartDate = vDate;
	dEndDate = new Date(dDate.getFullYear(),dDate.getMonth()+1,1);
	dEndDate.setDate(dEndDate.getDate()-1)
	vDays = dEndDate.getDate();
	vEndDate = "{ts '"+dDate.getFullYear()+"-"+(dDate.getMonth()+1>9?dDate.getMonth()+1:'0'+(parseInt(dDate.getMonth())+1))+"-"+(vDays>9?vDays:'0'+vDays)+" 23:59:00'}";
	cAjaxComm.update('aCalendar','divCalendar','rendbydate='+vStartDate);
	cAjaxComm.update('aDatePicker','divDatePicker','vStartDate='+vStartDate+'&vEndDate='+vEndDate+'&vCategories='+vCategories);
	d.getElementById('divEventListings').innerHTML = 'Finding events...';
	cAjaxComm.update('aEventListings','divEventListings','vStartDate='+vStartDate+'&vEndDate='+vEndDate+'&vCategories='+vCategories);
}
/* OTHER SITE FUNCTIONS */
function fOpenOffer(){
	SendToFriend = NewWindowSheet('SendToFriend','specialoffer','th');
	WindowSheetWindow('SendToFriend').width = 700;
}
function openNewWindow(URLtoOpen, windowName, windowFeatures){
	newWindow=window.open(URLtoOpen, windowName, windowFeatures);
}
function fActivateEditor(){
	//the following 2 lines are needed to reset the editor namespace for use with AJAX
	FCKeditorAPI = null;
	__FCKeditorNS = null;
	if(d.getElementById('blogContent')){
		var oFCKeditor = new FCKeditor('blogContent');
		oFCKeditor.BasePath = "includes/FCKeditor/default.htm";
		oFCKeditor.Height = "250";
		oFCKeditor.Width = "350";
		oFCKeditor.ToolbarSet='Basic';
		oFCKeditor.ReplaceTextarea();
	}
}
function fToggleStarFields(vFlag){
	if (vFlag){
		d.getElementById('addressstar').style.display = '';
		d.getElementById('citystar').style.display = '';
		d.getElementById('provincestar').style.display = '';
		d.getElementById('postalstar').style.display = '';
		d.getElementById('countrystar').style.display = '';
	} else {
		d.getElementById('addressstar').style.display = 'none';
		d.getElementById('citystar').style.display = 'none';
		d.getElementById('provincestar').style.display = 'none';
		d.getElementById('postalstar').style.display = 'none';
		d.getElementById('countrystar').style.display = 'none';
	}
}
function fCheckFields(frm){
	var vError = new String();
	if(frm.guideEmail.value==''){
		vError = 'Email address required.\n' + vError;
	}
	if (isObject(frm.guide)){
		if(frm.guide.checked){
			if(frm.guideCountry.value==''){
				vError = 'Country required.\n' + vError;
			}
			if(frm.guidePostal.value==''){
				vError = 'Postal Code required.\n' + vError;
			}
			if(frm.guideProvince.value==''){
				vError = 'Province required.\n' + vError;
			}
			if(frm.guideCity.value==''){
				vError = 'City required.\n' + vError;
			}
			if(frm.guideAddress1.value==''){
				vError = 'Address 1 required.\n' + vError;
			}		
		}
	}
	if(frm.guideName.value==''){
		vError = 'Name is required.\n' + vError;
	}
	if(vError != ''){
		alert('The following errors occured:\n\n' + vError);
	}else{
		frm.submit();
	}
}
function fCheckFields2(frm){
	var vError = new String();
	if(frm.regName.value==''){
		vError = 'Name required.\n' + vError;
	}
	if(frm.regEmail.value==''){
		vError = 'Email is required.\n' + vError;
	}
	if(vError != ''){
		alert('The following errors occured:\n\n' + vError);
	}else{
		frm.submit();
	}
}
function fCurrencyConvert(){
	var vCurrencyType = d.getElementById('currencyType').value;
	var vAmount = d.getElementById('currencyAmount').value;
	
	cAjaxComm.update('aCurrencyEx','tdConvertValue','Amount='+vAmount+'&Type='+vCurrencyType);
}
function fValidateContest(frm){
	msg = "";
	if (frm.txtEmail.value == ""){
		msg = "  Email\n" + msg;
		frm.txtEmail.focus();
	}
	if (frm.txtName.value == ""){
		msg = "  Name\n" + msg;
		frm.txtName.focus();
	}
	if (msg != ""){
		alert("Please fill in the following required fields:\n" + msg);
		return false;
	}
	return true;
}
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 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 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];}
}
