//	alert ("avail.js is loaded");
dayName = new Array;//name of day in either short - dayName[0][x] - or full - dayName[1][x] - format
	dayName[0] = new Array ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
	dayName[1] =  new Array ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
obMonthList= new Array();
	obMonthList[0] = new Array("???","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	obMonthList[1] = new Array("CHOOSE MONTH","January","February","March","April","May","June","July","August","September","October","November","December");
	
var monthText= new Array();
var acceptsPaypal=false;//default
var glob_paypalInTable=true;
function writeScript(scriptName){
	document.write("<"+"scr"+"ipt type='text/Javascr"+"ipt' src='www.cottageNetwork.com/js/"+scriptName+".js'><"+"/scr"+"ipt>");
}



function selectBoxTextForArray(thisArray, selectBoxName, onChangeSubName){
	//writes select box. First element selected
	var tS="<select "+idName(selectBoxName);
	if (arguments.length==3){
		tS+=" onChange='"+onChangeSubName+"();' "
	}
	tS+=" >";
	for (thisIndex in thisArray){
		tS+="<option ";
		if (thisIndex==0){
			tS+=" selected ";
		}
		tS+=">"+thisArray[thisIndex]+"</option>";
	}
	tS+="</select>";
	return tS;
}
function selectBoxTextForRange(minValue, maxValue, selectedValue, entryString, selectBoxName, className, onChangeSubName){
	//nb tilde ~  in entryString - last element is the default string
	//as many specific entries before it as desired (0, 1 etc)
	//in all entries, ± alt-177 for value. © alt-169 is conditional spacer (if <10)
	//
	//alert("selectBoxTextForRange with minValue="+minValue);
	var tS="<select "+idName(selectBoxName);
	if (entryString.indexOf("~")>-1){
		var tA=entryString.split("~");
	} else {
		var tA= new Array();
		tA[0]=entryString;
	}
	if (arguments.length==7){
		tS+=" onChange='"+onChangeSubName+"();' "
	}
	if (className.length>0){
		tS+=" class='"+className+"' ";
	} else {
		//alert("no className for select named "+selectBoxName);
	}
	tS+=" >";
	//alert("801 tS so far="+tS);
	for (a=minValue; a<=maxValue; a++){
		tS+="<option ";
		if (a==selectedValue){
			tS+=" selected ";
		}
		tS+= " value='"+a+"' ";
		tS+=">";
		if (a<(tA.length-1)){//last element is default - previous element are specifics
			var thisEntryString=tA[a];
		} else {
			var thisEntryString=tA[tA.length-1];
		}
		if (thisEntryString.indexOf("±")>-1){
			thisEntryString=thisEntryString.replace("±",a);
		}
		if (a<10){
			thisEntryString=thisEntryString.replace("©","&nbsp;");
		} else {
			thisEntryString=thisEntryString.replace("©","");
		}
		tS+=thisEntryString;
		tS+="</option>";
	}
	tS+="</select>";
	//alert("800 selectBoxTextForRange returns "+lR()+tS); 
	return tS;
}
function d(lineString){
	document.write(upQuote(lineString));
}
function df(lineText){
	fText+=lineText+lR(1);
}
function upQuote(inString,sourceCode){//this is duplication of u0 version????
	//turns single quote to double-quote, and § (alt-0167) to single quote
	var regExp= /'/g;
	var newString=String.fromCharCode(34);
	inString = inString.replace(regExp,newString);
	regExp = /§/g;
	inString = inString.replace(regExp,"'");
	return inString;
}
function debugPopText(varName){
	//NB duplicated in u2
	var tS=escape(varName);
	var dString="width=950,height=500,top=100,left=100";
	var wString = "var w=window.open('http://www.winster.org/fold/popupBox.htm?cols=100&text="+tS+"','sInfo','dependent=yes,scrollbars=yes,resizable=yes,"+dString+"');";
	//al ert("opening popupbox with "+wString);
	eval (wString);
}
function lR(nRet){//016 adds  Line-Return(s)
	var rC=String.fromCharCode(10);
	var tS = rC;
	if(arguments.length==0){nRet=1}
	while (nRet>1){
		tS += rC;
		nRet = nRet-1;
	}
	return tS;
}

function getPar(parName,parString){
	//Extracts parameter from parString (or location.search string if no parString)
	var failValue=-999;
	var sourceString="";
	if (arguments.length>1){
		sourceString=parString;
	} else {
		sourceString=location.search;
	}
	//alert("4006:getPar called with parameter name = "+parName+lR(1)+"location.search starts as "+location.search);

	var startPos=findPar(parName,sourceString,1);
	//al ert("startPos is "+startPos);
	if (startPos ==-1){return failValue}//not found
	startPos += (parName.length+2) ;//move to next character after "&NAME="
	var rest ="";
	for (var pos=startPos; pos<sourceString.length; pos++){
		var thisChar=sourceString.substr(pos,1);
		if (thisChar=="&"){
		return rest;
		} 
		else{
			rest += thisChar;
		}
	}
	return rest;
}
function findPar(parName,searchString,rType){
	//checks whether parName is a parameter within searchString
	//if rType=0, returns True if found
	//otherwise returns the start position within the string
	var aString="var startPos = searchString.indexOf('&"+parName+"=');";
	eval(aString);
	if (startPos ==-1){
		aString="startPos = searchString.indexOf('?"+parName+"=');";
		eval(aString);
	}
	if (rType==0){
		if (startPos ==-1){
			return false;
		}
		else {
			return true;
		}
	}
	else {
		return startPos;
	}
}
function listBox(boxName){
	var tObj=gObj(boxName);
	var tS="LISTING FOR boxName="+boxName+lR();
	for (var a=0; a<tObj.options.length; a++){
		tS+="a=" +a+" text="+tObj.options[a].text + " value=" + tObj.options[a].value+lR();
	}
	alert(tS);
}
	
function getSelectBoxValue(boxName, valueIfNotFoundAndOmissionOK){
	if (arguments.length==2){
		var ignoreErrors=true;
	} else {
		var ignoreErrors=false;
	}
	var tObj=gObj(boxName,ignoreErrors);
	if (tObj==null){
		if (ignoreErrors){
			return valueIfNotFoundAndOmissionOK;
				} else {
			alert("getSelectBoxValue cannot find box named "+boxName);
			return -99999;
		}
	}
	var tVal= tObj.selectedIndex;
	//alert("selectedIndex for boxName="+boxName +" = "+tVal);
	if (tVal==null){
		if (ignoreErrors){
			return valueIfNotFoundAndOmissionOK;
		} else {
			alert("getSelectBoxValue cannot find selectedIndex for box named "+boxName);
			return -99999;
		}
	}
	var tOption=gObj(boxName).options[tVal];
	if (tOption==null){
		if (ignoreErrors){
			return valueIfNotFoundAndOmissionOK;
		} else {
			alert("getSelectBoxValue cannot find option["+tVal+"] for box named "+boxName);
			return -99999;
		}
	}
	return tOption.value;
}

function getDaysInMonth(zbThisMonth,thisYear){
	//ZERO-based month (for Javascript purposes)
	nDays = new Array("31","28","31","30","31","30","31","31","30","31","30","31");
	if (isLeapYear(thisYear)) {
		nDays[1]=29;
	}
	if (zbThisMonth==1){
		if (isLeapYear(thisYear)) {
			return 29; 
		}
	}
	return parseInt(nDays[zbThisMonth]);
}
function isLeapYear (Year) {
	if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
		return (true);
	}
	else {
		return (false);
	}
}
function newJGdate(dayOfMonth,month,year){
	//returns date(default is today) set to noon
	var newDate=new Date;
	if (arguments.length==3){
		newDate.setDate(1);
		newDate.setMonth(month);
		newDate.setFullYear(year);
		newDate.setDate(dayOfMonth);
	}
	newDate.setHours(12,0,0,0);
	return newDate;
}
function aV(){
		var tV=0;
		for (var a=0;a<arguments.length;a++){
			tV+= parseInt(parseInt(arguments[a]));
		}
		return tV;
	}
function incrementDate(inDate,unit,n){
	var inDateOrig=new Date(inDate);
	//-- Returns the date that is n units (days or months) from any date object.
	//for MONTHS - only works on first-of-month (to avoid -1 month from 31 March!!)
	/*if (arguments.length==3){
		//jgAlert(944,"incrementDate with inDate="+inDate);
	}*/
	if (unit=="d"){
		var origMsecs=Date.parse(inDate);
		var newMsecs=origMsecs+(n*1000*60*60*24);
		inDate.setTime(newMsecs);
		/*var resultMsecs=Date.parse(inDate);
		var difference=resultMsecs-origMsecs;
		jgAlert(2134.3,"origMsecs="+origMsecs+"¬newMsecs="+newMsecs+"¬result="+resultMsecs+"¬difference="+difference);
		*/
	} else if (unit=="m"){
		inDate.setDate(1);
		var cM=inDate.getMonth();
		var cY=inDate.getFullYear();
		cM=cM+n;
		while (cM > 11){
			cM = cM-12;
			cY++;
		}
		while (cM<0){
			cM=cM+12;
			cY--;
		}
		
		inDate.setMonth(cM);
		inDate.setFullYear(cY);
	} 
}
function adjustedDate(oldDate, unit, n){
	//-- Returns the date that is n days or months from any date object.
	//jgAlert(233,"id="+idString+"¬oldDate="+oldDate);
	var newDate = new Date(oldDate);
	incrementDate(newDate,unit,n,true);
	return newDate;
}
function isNumeric(inCode){
	if (inCode==null) {
		return false;
	}
	if (inCode.length==0){
		return false;
	}
	return !isNaN(inCode);
}

function d(lineString){
	if (lineString.length>0){
		document.write(upQuote(lineString,1239));
	}
}

function ADN(inDate){
	return inDate.valueOf()/86400000+25569;
}

function ADNtoDate(valueADN,hourSet){
	if (arguments.length==1){
		var hourSet=-1;
	}
	var tDate = new Date();
	if (hourSet==-1){//set part-day from ADN value
		var dateValue=valueADN;
	} else {
		var dateValue=parseInt(valueADN);//set to 00:00:00
	}
	tDate.setTime((dateValue-25569)*86400000);
	if (hourSet>0){
		tDate.setHours(hourSet,0,0,0);
	}
	return tDate;
}
function accessDayNumber(thisDate){
	return aV(Math.floor((thisDate.valueOf()/6e4-thisDate.getTimezoneOffset())/1440),25569);
}
/*function dayName(thisDate){
	return dayName[dateVersion][dateVar.getDay()];
}*/
function roundCurrency(inString){
	//rounds currency to get rid of supursius ".0". Assumes 1-char currency at front and 2-dp currency
	var inS = ""+inString;
	var pp=inS.indexOf(".");
	if (pp==-1){
		return inS;
	}
	var bS="";
	for (var pos=inS.length-1;pos>pp;pos--){
		bS=inS.substr(pos,1)+bS;
	}
	var bV=parseFloat("0."+bS);
	if (bV<.005){
		return inS.substr(0,pp);
	} 
	return inS.substr(0,1)+parseInt(inS.substr(1,pp))+1;
	
}
function toNearestPenny(value) {
	var ret = Math.round(value * 100).toString();
	var len = ret.length;
	if (len == 1) {ret = "00" + ret; len = 3}
	if (len == 2) {ret =  "0" + ret; len = 3}
	return ret.substring(0,len-2) + "." + ret.substring(len-2,len);
}
function newCellRow(tBody,inText,className){
	var tr = tBody.insertRow(tBody.rows.length);
	var td = tr.insertCell(tr.cells.length);
	td.innerHTML =inText;
	td.setAttribute("align","center");
	if (arguments.length==3){
		td.setAttribute("class",className);
	}
}
function odds(){
	var td1 = tr.insertCell(tr.cells.length);
	td1.setAttribute("colspan","3");
	tBody.rows[1].cells[1].innerHTML="&nbsp;";
}
function jgMax(){
	//returns maximum of given values
	var maxSoFar=arguments[0]-1;//to make sure value caught first time round
	for (var a=0; a<arguments.length; a++){
		if (arguments[a]>maxSoFar){
			maxSoFar=arguments[a];
		}
	}
	return maxSoFar;
}
function jgMin(){
	//returns minimum of given values
	var minSoFar=arguments[0]+1;//to make sure value caught first time round
	for (var a=0; a<arguments.length; a++){
		if (arguments[a]<minSoFar){
			minSoFar=arguments[a];
		}
	}
	return minSoFar;
}

function sortAscending(aValue,bValue){
	if (aValue < bValue){
		return -1;
	}
	if (aValue > bValue){
		return 1;
	}
	return 0;//same
}

function sortNumeric(a,b){
	return(a-b);
}

function deDuplicate(inArray){
		//inArray is name of array
		var tS="";
		for (a=0; a<inArray.length; a++){
			tS+="inArray["+a+"] = "+inArray[a]+lR();
		}
		//alert("3004: "+tS);
		outArray=new Array();
		outArray[0]=inArray[0];
		for (var a=1; a<inArray.length;a++){//already done 0
			var isNew=true;
			for (var b=0; b<outArray.length;b++){
				if (inArray[a]==outArray[b]){
					isNew=false;
					//alert("3005: a="+a+" b="+b+" - MATCH for "+inArray[a]);
					//tS+="a="+a+lR(1)+"b="+b+lR(1)+downQuote(inArray[a],true)+" matches "+downQuote(outArray[b],true)+lR();
					break;
				}
				else {
					//tS+="a="+a+lR(1)+"b="+b+lR(1)+downQuote(inArray[a],true)+" does not match "+downQuote(outArray[b],true)+lR();
				}
			}
			if (isNew){
				//tS+="adding "+downQuote(inArray[a],true)+" to outArray at position "+outArray.length+lR();
				outArray[outArray.length]=inArray[a];
				//tS+="outArray is now "+downQuote(outArray.toString(),true)+lR();
			}
		}
	///tS+="outArray is about to be returned as"+downQuote(outArray.toString(),true)+lR();
	//top.writeLogEntry(tS);
	return outArray;
}

/*
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}*/
function lTrim(inString){
	return inString.replace(/^\s+/,"");
}
/* Useful but not currently used

function cellNumeric(cellName){
	var tV= document.getElementById(cellName).value;
	return parseFloat(tV);
}
	function cellValue(cellName){
		//return document.getElementById(cellName).value;
		return gObj(cellName).value;
	}

*/

function jgMakeDateOBMonth(d,obMonth,y){
	var thisDate=newJGdate();
	thisDate.setDate(1);
	thisDate.setYear(y);
	thisDate.setMonth(obMonth-1);
	thisDate.setDate(d);
	return thisDate;
}
function jgMakeDateZBMonth(d,zbMonth,y){
	var thisDate=newJGdate();
	thisDate.setDate(1);
	thisDate.setYear(y);
	thisDate.setMonth(zbMonth)	;
	thisDate.setDate(d);
	return thisDate;
}
function setSelectBox(thisObjName,findVal){ 
//Marks entry with specified value as the Selected one in a list box
	var thisObj=gObj(thisObjName,true);
	if (thisObj){
		if (thisObj.options){
			var nOptions=thisObj.options.length;
			for (var s=0; s<nOptions; s++){
				if (thisObj.options[s].value==findVal){
					thisObj.selectedIndex=s;
					//alert("609: setSelectBox has found value "+findVal+" in "+thisObjName+ " with selectedIndex="+s);
					return;
				}
			}
			var tS="";
			for (var s=0; s<nOptions; s++){
				tS+=lR()+"options["+s+"] has value="+thisObj.options[s].value;
			}
			alert("610a: fell through loop looking for value="+findVal+lR(2)+tS);
		} else {
			alert("48 No options found for thisObj");
		}
	} else {
		alert("49 thisObj'"+thisObjName+"' not found");
	}
}
function addRun(runIndex,arriveADN,nights,price,isSameAsPrev10,isLastRow){
	run[run.length]=new runStruc(runIndex,arriveADN,nights,price,isSameAsPrev10,isLastRow);
}
function runStruc(runIndex,arriveADN,nights,price,isSameAsPrev10,isLastRow){
		this.runIndex=runIndex;
		this.arriveADN=arriveADN;
		var thisDate=ADNtoDate(arriveADN);
		/*if (runIndex==0){
			alert("thisDate="+dateFormat(thisDate));
		}*/
		this.arriveDate=dateFormat(thisDate);
		this.nights=nights;
		this.price=price;
		this.isSameAsPrev10=isSameAsPrev10;
		this.pageID=-1;//not set yet - monthID if page-per-month, else consecutive pageNo if 
		this.monthID=-1;//JG added 280308 - where was it?
		this.rowIndex=-1; //set later
		this.cellInnerHTML=new Array();
		this.cellClassString=new Array();
		this.currentRowClass=-1;
		this.runCode=arriveADN+padStringLeft(nights,2,"0");
	}
function dateFormat(dateVar){
		dV=new Date(dateVar);
		var thisDayName = dayName[0][dV.getDay()];
		var dayNo = dV.getDate();
		var monthName = obMonthList[0][aV(dV.getMonth(),1)];
		var yearName = dV.getFullYear();
		return thisDayName+" "+dayNo+" "+monthName+" "+yearName;
	}
