//common JavaScript functions
function setFormAction(formId, formAction) {
	try {
		var formInst = document.getElementById(formId);
		formInst.setAttribute("action",formAction);
		formInst.submit();
	} catch(e) {
		alert("setFormAction error:\n"+e);
		return;
	}
}

function setCheckBoxes(formId, cbGrName, cbGrValue) {
	try {
		if(!parseInt(cbGrValue)) return;
		var checkBoxGr = document.getElementById(formId).elements[cbGrName];
		for(var i=0; i<checkBoxGr.length; i++) {
			checkBoxGr[i].checked = (parseInt(cbGrValue) & checkBoxGr[i].value);
		}
	} catch(e) {
		alert("setCheckBoxes error:\n"+e);
		return;
	}
}

function setRadioGroup(formId, radioGrName, radioGrValue) {
	try {
		if(radioGrValue == '') return;
		var radioGr = document.getElementById(formId).elements[radioGrName];
		for(var i=0; i<radioGr.length; i++) {
			radioGr[i].checked =  (radioGrValue == radioGr[i].value);
		}
	} catch(e) {
		alert("setRadioGroup error:\n"+e);
		return;
	}
}

function setSelectByValue(formId, selectName, optionValue) {
	try {
		if(optionValue == '') return;
		var optionsList = document.getElementById(formId).elements[selectName].options;
		for( var i=0; i < optionsList.length; i++) {
			optionsList[i].selected = (optionsList[i].value == optionValue)
		}
	} catch(e) {
		alert("setSelectByValue error:\n"+e);
		return;
	}
}

/*
* Function for ImageManager
*/
function addInputFile(anchorId) {
	try {
		var anchorNode = document.getElementById(anchorId);
		//Create new '<input type="file" name="photos[]" class="inp" style="width:99%"/>'
		var newInputFile = document.createElement("input");
		newInputFile.setAttribute("type","file");
		newInputFile.setAttribute("name","photos[]");
		//
		var elementBR = document.createElement('br');
		//
		var inputAdded = anchorNode.parentNode.insertBefore(newInputFile,anchorNode);
		inputAdded.className = "inp";
		inputAdded.style.width = "99%";
		anchorNode.parentNode.insertBefore(elementBR,anchorNode); 
	} catch(e) {
		alert("addInputFile error:\n"+e);
		return false;
	}
}

function openSetCalendarWindow(url) {
	var hWin = window.open(url, null, "directories=no,height=290,width=290,status=yes,toolbar=no,menubar=no,location=no");
	//var hWin = window.open(url);
}

function openWindow(url, wWidth, wHeight) {
	var hWin = window.open(url, null, "directories=no,height="+wHeight+",width="+wWidth+",status=yes,toolbar=no,menubar=no,location=no");
}

function accumulateElementValue(formId, fieldName, value) {
	var element = document.getElementById(formId).elements[fieldName];
	element.value += value;
}

function addBanquetRoom(frmObj) {
	var defaultRowObj = document.getElementById('banquetRoomDefault');
	var idx = defaultRowObj.parentNode.childNodes.length - 1;	
	var tr = defaultRowObj.cloneNode(true);
	var tdList = tr.getElementsByTagName('td');	
	tr.removeAttribute("id");
	tr.removeAttribute("style");
	for(i=0;i<tdList.length;i++) {
		var inputObj = tdList[i].firstChild;
		if(inputObj.tagName != 'INPUT') {
			continue;
		}
		var inputName = inputObj.getAttribute('name');
		inputObj.removeAttribute('disabled');		
		inputObj.setAttribute('value', frmObj.elements[inputName].value);
		inputObj.setAttribute('name', 'rooms[' + idx + '][' + inputName + ']');
		tdList[i].appendChild(document.createTextNode(frmObj.elements[inputName].value));
	}
//	a = document.createElement('a');
//	a.appendChild(document.createTextNode('delete'));
//	a.setAttribute('href', 'javascript:void(0)');
//	a.setAttribute('onClick', 'removeBanquetRoom(this);');
//	td = document.createElement('td');
//	td.appendChild(a);
//	tr.appendChild(td);
	defaultRowObj.parentNode.appendChild(tr);
}

function removeBanquetRoom(el) {
	var trNode = el.parentNode.parentNode;
	trNode.parentNode.replaceChild(trNode.firstChild, trNode);
}

function deleteNodeById(id) {
	var obj = document.getElementById(id);
	var fileInput = obj.nextSibling;
	try {
		while(fileInput.nodeType != 1) {
			fileInput = fileInput.nextSibling;
		}
		fileInput.style.display="inline";
	}catch(e) {
		alert(e);
	}
	try {
		emptyNode = document.createElement('foo');
		obj.parentNode.replaceChild(emptyNode, obj);
	}catch(e) {
		alert(e);
	}
	return false;
}

function OpenWindow($url, $name) {
	window.open($url,"InfoNewport__"+$name,"height=500,width=400,status=yes,toolbar=no,menubar=no,location=no,resizable=yes");
	return false;
}

/**
 * Functions for calendar 
 **/
function updateArrival(cal) {
	var date = cal.date;
	//
	var selectMonth = document.getElementById("arrivalMonth");
	selectMonth.selectedIndex = (date.getMonth() + 1);
	//
	var selectDay = document.getElementById("arrivalDay");
	selectDay.selectedIndex = date.getDate();
	//
	var selectYear = document.getElementById("arrivalYear");
	selectYear.selectedIndex = (date.getFullYear()-2004);
}
function updateDeparture(cal) {
	var date = cal.date;
	//
	var selectMonth = document.getElementById("departureMonth");
	selectMonth.selectedIndex = (date.getMonth() + 1);
	//
	var selectDay = document.getElementById("departureDay");
	selectDay.selectedIndex = date.getDate();
	//
	var selectYear = document.getElementById("departureYear");
	selectYear.selectedIndex = (date.getFullYear()-2004);
	
}

function checkAll(formId, field, flag) {
	var formObj = document.getElementById(formId); 
	var checkBoxObj = formObj.elements[field];
	for(i=0;i<checkBoxObj.length;i++) {
		checkBoxObj[i].checked = flag;
	}
}


function toggleAvail(formId, field) {
	var formObj = document.getElementById(formId); 
	var checkBoxObj = formObj.elements[field];
	//
	checkBoxObj.disabled = (!checkBoxObj.disabled);
}

function toggleMajorCC(status) {
	ccs=new Array('cca2', 'cca3', 'cca4', 'cca5');
	for(i=0;i<ccs.length;i++) {
		ccElement = document.getElementById(ccs[i]);
		if( ccElement.checked != status ) {
			ccElement.click();
		}
	}
}

function toggleMajorCC_group(status, elName) {
    try {
    	for(i=1;i<=4;i++) {
    	    var checkBoxObj = document.getElementById( (elName+'-'+i) ); 
    		checkBoxObj.checked = status;
    	}
    }
	catch(e) {
	    alert(e);
	}
}

/**
  * Image Slider Class
  * @author sergey.s / ssushinksky@gmail.com /
  **/
//
var MAX_IMG_HEIGHT = 100;
var MAX_IMG_WIDTH = 100;
//
function ImageSlider(imageData, bigImgBox, imgRowBox) {
	//constants
	this.IMG_IN_ROW = 2;//e.g 3
	//
	this.imgList = imageData;
	this.imgListLength = this.imgList.length;//image array length
	//set alias to BIG image box
	this.bigImgBox = document.getElementById(bigImgBox);
	if(this.bigImgBox == null) alert(bigImgBox+' - is not valid IMG tag ID!'); 
	this.bigImgBox.style.visibility = "hidden";//hide empty box
	//set alias to image row
	this.imgRowBox = document.getElementById(imgRowBox);
	if(this.imgRowBox == null) alert(imgRowBox+' - is not valid element ID!'); 
	//
	this.curImgIndex = 0;
	//
	this.getPrev = function() {
		//check if more than IMG_IN_ROW images avaiable
		if(this.imgListLength  > (this.IMG_IN_ROW+1)) {
			var firstImgInd = (this.curImgIndex-1) < 0 ? 0 : --this.curImgIndex;
			var lastImgInd = this.curImgIndex + this.IMG_IN_ROW;
			if(lastImgInd >= this.imgListLength) {
				lastImgInd = this.imgListLength-1;
				//firstImgInd = lastImgInd-this.IMG_IN_ROW;
				//--this.curImgIndex;
			}
			//
			var imgInd = new Array();
			for(var i=firstImgInd; i<=lastImgInd;i++) imgInd.push(i);
			//
			this.generate(imgInd);
		}
	}
	this.getNext = function() {
		//check if more than IMG_IN_ROW images avaiable
		if(this.imgListLength  > (this.IMG_IN_ROW+1)) {
			var firstImgInd = ++this.curImgIndex; 
			var lastImgInd = this.curImgIndex + this.IMG_IN_ROW;
			
			if(lastImgInd >= this.imgListLength) {
				lastImgInd = this.imgListLength-1;
				firstImgInd = lastImgInd-this.IMG_IN_ROW;
				--this.curImgIndex;
			}
			//
			var imgInd = new Array();
			for(var i=firstImgInd; i<=lastImgInd;i++) imgInd.push(i);
			//
			this.generate(imgInd);
		} 
	}
	//show image by src in big image box
	this.displayBigImage = function(index) {
		this.bigImgBox.src = this.imgList[index][0];
		this.bigImgBox.style.visibility = "visible";//show hidden box
	}
	//preload images into browser's cash
	this.preload = function () {
		for(var i=0; i < this.imgListLength; i++) {
			var imgObj = new Image();
			imgObj.src = this.imgList[i][0];
			this.imgList[i][3] = imgObj;
		}
	}
	//
	this.generate = function (imgArray) {
		this.clearImgRow();//clear prev. images
		//
		var imgToDisplay = imgArray;
		for(var i=0; i<imgToDisplay.length; i++) {
			var imgNode = document.createElement("img");
			imgNode.setAttribute("src",this.imgList[imgToDisplay[i]][0]);
			imgNode.setAttribute("index",imgToDisplay[i]);
			//styling images
			imgNode.setAttribute("align","top");
			imgNode.setAttribute("hspace","2");
			imgNode.setAttribute("border","1");
			//dynamic resize
			var height = 80;
			var width = 80;
			var initHeight = this.imgList[i][3].height;
			var initWidth = this.imgList[i][3].width;
			//
			if( (initWidth > width) && (initHeight > height)) {
				if (width && (initWidth < initHeight)) {
					width = (height / initHeight) * initWidth;
				} else {
					height = (width / initWidth) * initHeight;
				}
			}
			//
			imgNode.setAttribute("width",width);
			imgNode.setAttribute("height",height);
			//
			imgNode.onclick = function() {	
				var index = this.getAttribute("index");
				ImageSliderInst.displayBigImage(index);
			}
			//
			this.imgRowBox.appendChild(imgNode);
		}
		//display first photo by default
		if(imgToDisplay.length) {
			this.displayBigImage(0);
		}
	}
	//
	this.generateInitArray = function() {
		if(this.imgListLength  > (this.IMG_IN_ROW+1)) {
			return new Array(0,1,2);
		} else {
			var initArr = new Array();
			for(var i=0; i < this.imgListLength; i++) {
				initArr.push(i);
			}
			return initArr;
		}
	}
	//
	this.clearImgRow = function() {
		while(this.imgRowBox.childNodes.length) {
			this.imgRowBox.removeChild(this.imgRowBox.childNodes[0]);
		}
	}
}