﻿function getObject(objectId) {
	if (document.all && !document.getElementById) {
		return document.all(objectId)
	} else {
		return document.getElementById(objectId)
	}
}

// lomakkeiden kenttien tarkistukseen tarkoitettu funkkari
function checkField(fieldName, result, errorField){
	var requiredName = getObject(fieldName);
	if(errorField != ''){
		var requiredNameError = getObject(errorField);
	}else{
		var requiredNameError = getObject(fieldName+'Error');
	}
	if(requiredName != null){
		if(requiredName.value == ''){
			requiredName.style.background = '#ff9c9c';
			if(requiredNameError != null){
				requiredNameError.style.display = 'block';
			}
			return false;
		}else{
			requiredName.style.background = '#f2ead7';
			if(requiredNameError != null){
				requiredNameError.style.display = 'none';
			}
		}
	}
	// jos tulos on jo tultaessa false
	if(result == false){
		return false;
	}else{
		return true;
	}
}

Effect.SlideUpAndDown = function(element,dur) {
  element = $(element);
  if(Element.visible(element)) new Effect.SlideUp(element, {duration:dur});
  else new Effect.SlideDown(element, {duration:dur});
}

//------------------- helppereitä 

/* events/add */

/* vaihdetaan kalenterin kuukausia */
function updateCalendar(year, month){
	var url = '/calendars/index/';
	if(month != null && year != null){
		url = url + year + '/' + month;
	}
	new Ajax.Updater('pickcalendar', url, {method: 'get'});
	return false;
}

/* näytetään lisää tapahtumia */
function setShowDate(year, month, day, dayName){
	if(month < 10){
		month = '0' + month;
	}
	if(day < 10){
		day = '0' + day;
	}
	for(var i = 1;i <= 100;i++){
		divname = 'showDiv' + i;
		divofpla = getObject(divname);
		if(divofpla != null){
			if(divofpla.style.display == "none"){
				//--------------- set the values 
				setValueOfField('ShowFromdate'+i+'DayDay', day);
				setValueOfField('ShowFromdate'+i+'MonthMonth', month);
				setValueOfField('ShowFromdate'+i+'YearYear', year);
				
				var textValue = day + "." + month + "." + year;
				var dpField = "dateDiv"+i;
				$(dpField).update(textValue);

				var dpxField = "wDayDiv"+i;
				$(dpxField).update(dayName);

				var calField = "calendarSelect"+day+month;
				$(calField).className = "curr";

				if(i > 1){
/*					hourValue = getObject('Showstarttime' + (i-1) + 'HourHour').value;
					minValue = getObject('ShowStarttime' + (i-1) + 'Minute').value;
					setValueOfField('Showstarttime'+i+'HourHour', hourValue);
					setValueOfField('ShowStarttime'+i+'Minute', minValue);
*/
					minValue = getObject('ShowStarttime' + (i-1)).value;
					setValueOfField('ShowStarttime'+i, minValue);
				}
				Effect.SlideDown(divname, { duration: 0.5 });
				break;
			}
		}
	}
	return false;
}

/* function for setting the values */
function setValueOfField(fieldN, fieldV){
	var f = fieldN;
	df = getObject(f);
	df.value = fieldV;
	return;
}

function hideField(divId){
	divofpla = getObject('showDiv'+divId);
	if(divofpla != null){
		divofpla.style.display = 'none';

		var now = new Date();

		var year = 1900+now.getYear();
		
		
/*		var hour = getObject('Showstarttime'+divId+'HourHour');
		hour.selectedIndex = 1;*/
		
		day = getObject('ShowFromdate'+divId+'DayDay');
		month = getObject('ShowFromdate'+divId+'MonthMonth');

		var calField = "calendarSelect"+day.value+month.value;
		var xtest = getObject(calField);

		// zero the values 
		setValueOfField('ShowFromdate'+divId+'DayDay', now.getDate());
		setValueOfField('ShowFromdate'+divId+'MonthMonth', now.getMonth()+1);
		setValueOfField('ShowFromdate'+divId+'YearYear', year);
		setValueOfField('ShowStarttime'+divId, "00:00");
		
		if(xtest != null){
			$(calField).className = "dummy";
		}
	}
	return false;
}

/* elements/smallcalendar AND events/show_list */

function showSmallDateDiv(paiva){
	// first hide all
	var nodes = $$('div.smalldatediv');
	for(var i = 0;i < nodes.length;i++){
		nodes[i].style.display = 'none';
	}
	// then show selected
	new Effect.SlideUpAndDown(paiva,'1');
	// sitten kalenterin solujen vaihto
	var nodes = $$('td.curr');
	nodes[0].className = '';
	var currTD = 'day_'+ paiva.substr(8,4);
	$(currTD).className = 'curr';
}

/* events/show_list */
function hideShowClassDivs(classNameToShowHide, link){
	if (link.className == 'cityNotVis'){
		link.className = 'cityVis';
	} else {
		link.className = 'cityNotVis';
	}
	// general div showing 
	if (!$('cityDetails').visible()) {
		$('cityDetails').show();
	}
	// hide / show this city divs
	if ( $(classNameToShowHide).visible() ) {
		$(classNameToShowHide).hide('slow');
	} else {
		$(classNameToShowHide).show('slow');
	}
}

function hideAllExceptMe(outerDiv, classNameToShow, link){
	if (link.className == 'cityNotVis'){
		link.className = 'cityVis';
	} else {
		link.className = 'cityNotVis';
	}

	// katsotaan onko kyseessä "ensimmäinen" klikkaus
	if($('firstDiv').visible()){
		firstClick = true;
		$('firstDiv').hide()
	} else {
		firstClick = false;
	}

	var remove = false;
	classNameToCompare = 'city'+classNameToShow;
	
	if(firstClick){
		children = $(outerDiv).childElements();
		for(i = 0;i < children.length;i++){
			if(classNameToCompare != children[i].identify()){
				children[i].hide('slow');
			} else {
				children[i].show('slow');
			}
		}
	} else {
		if ( $(classNameToCompare).visible() ) {
			$(classNameToCompare).hide('slow');
			remove = true;
		} else {
			$(classNameToCompare).show('slow');
		}
	}
	
	// catenatedLinkForJavaScript on tuo linkki johon sitten katenoidaan ; kaupunkeja
	var links = $$('a.catenatedLinkForJavaScript');
	for(j = 0;j < links.length;j++){
		if(remove){
			links[j].setAttribute('href', links[j].readAttribute('href').replace(';'+classNameToShow, ''));
		} else {
			links[j].setAttribute('href', links[j].readAttribute('href')+';'+classNameToShow);
		}
	}
/*	
	// hide / show this city divs
	if ( $(classNameToShowHide).visible() ) {
		$(classNameToShowHide).hide('slow');
	} else {
		$(classNameToShowHide).show('slow');
	}*/
}



/* reviews/rate */

function setStars(field, stars, field2, val){
	var ulli = getObject(field);
	ulli.className='rating ' + stars;
	var inputField = getObject(field2);
	inputField.value = val;
	if(field != 'general_score'){
		countGeneralScore();
	}
	return false;
}

/** laskee keskiarvon **/
function countGeneralScore(){
	// monta kenttaa kaydaan lapi
	var nodes = $('hiddenRatings').select('input');
	var valueCount = 0;
	var totalValue = 0;
	for(var i = 0;i < nodes.length;i++){
		if(nodes[i].value > 0) {
			totalValue = totalValue + parseInt(nodes[i].value);
			valueCount++;
		}
	}
	//--------------- jos löytyy arvoja
	if(valueCount > 0){
		var generalScoreValue = totalValue / valueCount;
/*		console.log(totalValue);
		console.log(valueCount);
		console.log(generalScoreValue);*/
		var stars = Math.round(generalScoreValue);
		var style = 'onestar';
		switch(stars){
			case 2:
				style = 'twostar';
				break;
			case 3:
				style = 'threestar';
				break;
			case 4:
				style = 'fourstar';
				break;
			case 5:
				style = 'fivestar';
				break;
		}
		var gScore = getObject('general_score');
		gScore.className = 'rating ' + style;
		var inputField = getObject('ReviewGeneralScore');
		inputField.value = stars;
	}
	return false;
}

/* trips/add */

function checkForNumbers(field){
	var orgV = field.value;
	var newV = "";
	for(var i = 0;i < orgV.length;i++){
		var char = orgV.substr(i,1);
		if(char == "1" || char == "2" || char == "3" || 
			char == "4" || char == "5" || char == "6" || 
			char == "7" || char == "8" || char == "9" || char == "0"){
			newV = newV + char;
		}
	}
	field.value = newV;
}

function showMorePlaces(divname){
	divofpla = getObject(divname);
	if(divofpla != null){
		if(divofpla.style.display == "none"){
			Effect.SlideDown(divname, { duration: 0.5 });
		}
	}
}
/* asettaa kalenterin arvoja  dropdowniin */
function changeDateValues(fieldname, hours){
	var f = getObject(fieldname+'Temp').value;
	var Y = f.substr(0,4);
	var m = f.substr(4,2);
	var d = f.substr(6,2);

	getObject(fieldname+'Year').value = Y;
	getObject(fieldname+'Month').value = m;
	getObject(fieldname+'Day').value = d;

	if(hours){
		var H = f.substr(8,2);
		var I = f.substr(10,2);
		getObject(fieldname+'Hour').value = H;
		getObject(fieldname+'Min').value = parseInt(I);
	}
}

