/* other functions */

var objSaveClass;

function doSelectControl(panelID)	{
	var element = document.getElementById(panelID);
	var currentPanelField = getObj('current_panel');
	var currentPanelID = currentPanelField.value;
	//alert (currentPanelID + '/' + panelID);
	if (currentPanelID != panelID)	{
		var currentPanel = getObj(currentPanelID);
		currentPanel.className = '';
		objSaveClass = element.className;
		element.className = 'NavSel';
		var currentPanelTarget = getObj('_' + currentPanelID);
		if (currentPanelTarget) currentPanelTarget.style.display = 'none';
		//if (currentPanelTarget) currentPanelTarget.style.visibility = 'hidden';
		var targetObj = getObj('_' + panelID);
		if (targetObj) targetObj.style.display = 'block';
		//if (targetObj) targetObj.style.visibility = 'visible';
		currentPanelField.value = panelID;
	}
}

function doSel(objID)	{
	var tObj = getObj(objID);
	objSaveClass = tObj.className;
    tObj.className = 'NavSel';
}

function doDesel(objID)	{
	var tObj = getObj(objID);
    tObj.className = objSaveClass;
}

function doSelectRows(isChecked)	{
	var objCount = getObj('row_count');
	for (var i=1; i<=objCount.value; i++)	{
		var objRow = getObj('r_no' + i);
		objRow.checked = isChecked;
	}
}

function printPage() {
	window.print(); 
}

function doSelectedValue(valueField, selectField)	{
	var selObj = getObj(selectField);
	var valObj = getObj(valueField);
	valObj.value = selObj.options[selObj.selectedIndex].value;
}

function doShow(thisObj, elID, fieldID)	{
	var elObj = getObj(elID);
	elObj.style.visibility = 'visible';
	if (thisObj.checked === true && fieldID) doFocus(fieldID);
}

function doHide(elID)	{
	var elObj = getObj(elID);
	elObj.style.visibility = 'hidden';
}

function doToggle(thisObj, elID, fieldID)	{
	var elObj = getObj(elID);
	if (thisObj.checked === true)	{
		elObj.style.visibility = 'visible';
		if (thisObj.checked === true && fieldID) doFocus(fieldID);
	} else {
		elObj.style.visibility = 'hidden';
	}
}

function doFocus(fieldID)	{
	var fieldObj = getObj(fieldID);
	fieldObj.focus();
}

function doShowPanel(newPanelID, fieldID, formAction, formTarget, buttonAlt)	{
	var currentPanelIDObj = getObj('current_panel');
	var currentPanelID = currentPanelIDObj.value;
	var currentTabObj = getObj(currentPanelID);
	var currentPanelObj = getObj('_' + currentPanelID);
	var newTabObj = getObj(newPanelID);
	var newPanelObj = getObj('_' + newPanelID);
	currentTabObj.className = '';
	newTabObj.className = 'ActNav';
	currentPanelObj.style.width = '0';
	newPanelObj.style.width = '528px';
	currentPanelIDObj.value = newPanelID;
	var formObj = getObj('BookingForm');
	var buttonObj = getObj('SubmitButton');
	if (formTarget) formObj.target = formTarget;
	else formObj.target = '_self';
	if (formAction) formObj.action = formAction;
	else formObj.action = '';
	if (fieldID) doFocus(fieldID);
	if (buttonAlt) buttonObj.title = buttonAlt;
	else buttonObj.title = '';
}

function doOpenLecture(winPath) {
	var winHeight = 560;
	var winWidth = 625;
	var openWindow = window.open(winPath, 'IBMSOnlineLecture', 'location=0,toolbar=0,history=0,height=' + winHeight + ',width=' + winWidth + ',resizable=1,scrollbars=0');
	openWindow.focus();
}

var openWindowType;

function doOpenWindow(windowType) {
	openWindowType = windowType;
	var objPopup = document.getElementById('popUp' + windowType);
	var objScrim = document.getElementById('popUpScrim');
	objPopup.style.display = 'block';
	objScrim.style.display = 'block';
	objScrim.onclick = doCloseOpenWindow;
}

function doCloseOpenWindow(windowType) {
	doCloseWindow(openWindowType);
	openWindowType = null;
}

function doCloseWindow(windowType) {
	var objPopup = document.getElementById('popUp' + windowType);
	var objScrim = document.getElementById('popUpScrim');
	objPopup.style.display = 'none';
	objScrim.style.display = 'none';
}

function addBookmark(pageTitle, urlAddress)	{
	if (window.sidebar)	{
		window.sidebar.addPanel(pageTitle, urlAddress, '');
	} else if (window.external)	{
		window.external.AddFavorite(urlAddress, pageTitle);
	} else if (window.opera && window.print) {
		return true;
	}
}

function addMozillaBookmark(pageTitle, urlAddress)	{
	window.sidebar.addPanel(pageTitle, urlAddress, '');
}

function addIEBookmark(pageTitle, urlAddress)	{
	window.external.AddFavorite(urlAddress, pageTitle);
}

function addOperaBookmark()	{
	return true;
}

function doSetParam(urlParam, paramValue) {
    var hrefArray = document.location.href.split('&');
    var isReplaced = false;
    for (var i in hrefArray)	{
    	if (hrefArray[i].substr(0, urlParam.length + 1) == urlParam + '=')	{
    		hrefArray[i] = urlParam + '=' + paramValue;
    		isReplaced = true;
    		break;
    	}
    }
    if (isReplaced)	{
    	document.location.href = hrefArray.join('&');
    } else {
    	document.location.href += '&' + urlParam + '=' + paramValue;
    }
}

function doRemoveParam(urlParam) {
    var hrefArray = document.location.href.split('&');
    for (var i in hrefArray)	{
    	if (hrefArray[i].substr(0, urlParam.length + 1) == urlParam + '=')	{
    		hrefArray.splice (i, 1);
    		break;
    	}
    }
    document.location.href = hrefArray.join('&');
}

function doSetField(fieldID, fieldName, fieldKey) {
    //alert (fieldID + ',' + fieldName + ',' + fieldKey);
	var keyObj = getObj(fieldKey);
	var fieldObj = getObj(fieldID);
	fieldObj.innerHTML = (keyObj) ? keyObj.value : '';
}

function doClearSelector(boxMax) {
    for (var i=0;i<boxMax;i++)	{
    	var theBox = getObj('PBox' + i);
		theBox.checked = false;
    }
}

function doClearHint(inputObj)	{
	var classArray = inputObj.className.split(' ');
    for (var i in classArray)	{
    	if (classArray[i] == 'FormatHint')	{
    		classArray.splice (i, 1);
    		break;
    	}
    }
    inputObj.value = '';
    inputObj.className = classArray.join(' ');
}

function doTabIf(inputObj, nextID)	{
	if (inputObj.value.length > 1)	{
		var nextObj = document.getElementById(nextID);
		if (nextObj) nextObj.focus();
	}
}

function doPaymentCalc()	{
	var inputArray = document.getElementsByTagName('input');						// all input fields
	var dayObject = new Object;														// assoc array of selected congress days
	var socialObject = new Object;													// assoc array of social functions
	var ddObject = new Object;														// assoc array of day numbers (dd) for each date
	var monthYm = '2011-09-';
	var monthDesc = ' September 2011';
	var ddArray = new Array ('26', '27', '28');
	for (var i in ddArray)	{
		socialObject[monthYm + ddArray[i]] = 0;
		ddObject[monthYm + ddArray[i]] = ddArray[i];
	}
	/*socialObject['2011-09-26'] = 0;
	socialObject['2011-09-27'] = 0;
	socialObject['2011-09-28'] = 0;*/
	var priceRatesArray = document.getElementById('PriceRates').value.split('|');	// corresponding prices for booking period
	var paymentAmount = document.getElementById('PaymentAmount');					// target payment hidden input
	var paymentAmountDisplay = document.getElementById('PaymentAmountDisplay');		// target payment display
	if (!paymentAmount) return false;
	
/**
 * count number of days for which sessions are selected
 * flag social functions and reset checkout description
 */
    for (var i in inputArray)	{
 		if (inputArray[i].id)	{
			if (inputArray[i].id.substr(0,4) == 'PBox' && inputArray[i].checked === true)	{
				inputName = inputArray[i].name;
				dayStart = inputName.length - 11;
				dayIndex = inputName.substr(dayStart,10);
				dayObject[dayIndex] = 1;
				socialObject[dayIndex] = 1;
			}
		}
    }
	var dayCount = 0;
	for (var i in dayObject)	{
		dayCount++;
	}
	var checkoutDesc = '';												// date(s) of attendance
	var checkoutPunc = ' ';
	for (var i in socialObject)	{									// 2011-09-26/27/28 but there is no longer a 1-1 correspondence
		//var socialCheck = document.getElementById('SFBox' + i);
		//if (socialCheck)	{
			if (socialObject[i] != 0)	{
				//socialCheck.checked = false;
				//socialCheck.disabled = true;
			//} else {
				//socialCheck.disabled = false;
				checkoutDesc += checkoutPunc + ddObject[i];
				checkoutPunc = ', ';
			}
		//}
		//alert(i + '/' + ddObject[i] + ':' + socialObject[i]);
	}
	var socialCheck26 = document.getElementById('SFBox2011-09-26');
	if (socialCheck26)	{
		if (socialObject['2011-09-26'] == 0)	{
			socialCheck26.checked = false;
			socialCheck26.disabled = true;
		} else {
			socialCheck26.disabled = false;
		}
	}
	var socialCheck27 = document.getElementById('SFBox2011-09-27');
	if (socialCheck27)	{
		if (socialObject['2011-09-26'] == 0)	{
			socialCheck27.checked = false;
			socialCheck27.disabled = true;
		} else {
			socialCheck27.disabled = false;
		}
	}
	var socialCheck28 = document.getElementById('SFBox2011-09-28');
	if (socialCheck28)	{
		if (socialObject['2011-09-27'] == 0)	{
			socialCheck28.checked = false;
			socialCheck28.disabled = true;
		} else {
			socialCheck28.disabled = false;
		}
	}
	checkoutDesc += monthDesc;
	//alert(checkoutDesc);

/**
 * highlight row for recalculated number of days
 */
	var rateRow = document.getElementById('RateRow' + dayCount);
	var rateRowSel = document.getElementById('RateRowSel');
	var rateRowCurr = document.getElementById('RateRow' + rateRowSel.value);
	var paymentPanel = document.getElementById('PaymentOptions');
	var controlPanel = document.getElementById('ControlPanel');
	var controlPanelDisabled = document.getElementById('ControlPanelDisabled');
	if (rateRowSel.value != dayCount)	{
		if (rateRowCurr) rateRowCurr.className = '';
		if (rateRow) rateRow.className = 'BookedDays';
		rateRowSel.value = dayCount;
	}
	if (controlPanelDisabled.value != '1')	{
		if (dayCount > 0)	{
			paymentPanel.className = '';
			controlPanel.className = '';
		} else {
			paymentPanel.className = 'HiddenPanel';
			controlPanel.className = 'HiddenPanel';
		}
	}

/**
 * reset amount and item description
 */
	var itemDescription0 = document.getElementById('ItemDescription0');
	var itemDescription = document.getElementById('ItemDescription');
	paymentAmount.value = priceRatesArray[dayCount - 1];
	paymentAmountDisplay.innerHTML = '\u00A3' + priceRatesArray[dayCount - 1];
	if (itemDescription) itemDescription.value = itemDescription0.value + ' for ' + checkoutDesc;
}

function doPaymentSubmit()	{
	var formObj = getObj('PaypalForm');
	formObj.submit();
}

function doChangeYearCode(thisYear) {
	var CodeObj = document.getElementById('Code');
	if (!CodeObj) return false;
	var yearObj = document.getElementById('select_year');
	yearObj.value = thisYear.value;
	doChangeCatCode();
}

function doChangeCatCode() {
	var CodeObj = document.getElementById('Code');
	if (!CodeObj) return false;
	var catObj = document.getElementById('select_cat');
	var yearObj = document.getElementById('select_year');
	var catCode = catObj.options[catObj.selectedIndex].value;
	var yearCode = yearObj.value;
	var seqObj = document.getElementById('cat_seq' + catCode + yearCode);
	var seqCode = seqObj.value;
	var activityCode = (catCode != '' && yearCode != '') ? catCode + seqCode + 'W' + yearCode : '';
	CodeObj.innerHTML = activityCode;
}

function getObj(objID) {
	var theObj = document.getElementById(objID);
	if (!theObj) return false;
	return theObj;
}
