function markCells(cellId, startIdTmp, endIdTmp){
	if(cellId == '-1' || !document.getElementById('apply_btn')){
		return false;
	}
	try{
	var startId = document.getElementById('selectedStartId').value;
	var endId = document.getElementById('selectedEndId').value;
	
	var editMode = document.getElementById('editMode').value;
	var currentYear = document.getElementById('currentYearr').value;
	var currentCellClass = document.getElementById(cellId).className;

	if((startId != '' && endIdTmp != 'clear' && endId == '')||
			(startId != '' && startIdTmp != 'clear' && endIdTmp == 'clear')){
		
		if(currentYear > startId.substring(0,startId.indexOf('_')) || parseInt(cellId) >= startId.substring(startId.indexOf('_')+1)){
			document.getElementById('apply_btn').style.display='';
		}
	}else{
		document.getElementById('apply_btn').style.display='none';
	}
	if(!startIdTmp && !endIdTmp && startId && endId){
		var startYearT = startId.substring(0,startId.indexOf('_'));
		var endYearT = endId.substring(0,endId.indexOf('_'));
		var startCellId = startId.substring(startId.indexOf('_')+1);
		var endCellId = endId.substring(endId.indexOf('_')+1);
		//alert(startYearT + ' ' + endYearT);
		if(startYearT < endYearT && startYearT == currentYear){
			//alert('111');
			endCellId = getLastId();
		}
		if(startYearT < endYearT && endYearT == currentYear){
			startCellId = '1';
		}
		//alert(editMode)
		if(editMode == 'add'){
			for(var i = parseInt(startCellId); i <= parseInt(endCellId);i++){
				var fontClassName = document.getElementById('ft_'+i).className;
				document.getElementById(i+'').className = fontClassName;
			}
		}else if(editMode == 'remove'){
			
			for(var i =  parseInt(startCellId); i <=  parseInt(endCellId);i++){
				var fontClassName = document.getElementById('ft_'+i).className;
				if(fontClassName == 'na_onln'){
					document.getElementById(i+'').className = 'na_onln';
				}
			}
		}
		startId = '';
		endId = '';
		document.getElementById('selectedStartId').value = '';
		document.getElementById('selectedEndId').value = '';
	}
	if(startIdTmp){
		if(startIdTmp == 'clear'){
			startId = '';
		}else{
			startId = startIdTmp;
			
		}
	}
	if(endIdTmp){		
		if(endIdTmp == 'clear'){
			endId = '';
		}else{
			endId = endIdTmp;
			
		}
		
	}
	
	cellId = parseInt(cellId);
	if(startId != '' && endId != ''){
		return false;
	}
	var startYear = '';
	var updateStartId = true;
	var updateEndId = true;
	if(startId != ''){
		startYear = startId.substring(0,startId.indexOf('_'));
		if(startYear < currentYear){
			startId = 1;
			updateStartId = false;
		}else{
			startId = startId.substring(startId.indexOf('_')+1);
		}
	}
	if(endIdTmp == 'clear'){
		updateEndId = false;
	}
	
	if(startId != '' && endId == '' && startYear > currentYear){
		return false;
	}
	//alert(startId + '/' + endId + '/'+document.getElementById(cellId).innerHTML);
	if(startId == '' && endId == '' && document.getElementById('ft_'+cellId).className == 'avbl'){
		manageHint('hint2');
		document.getElementById('editMode').value='add';
		if(updateStartId){
			document.getElementById('selectedStartId').value=currentYear + '_' + cellId;
		}
		for(var i = 1; i < cellId; i++){
			var cell = document.getElementById(i+'');
			cell.className = cell.className + '_disable';
		}
		document.getElementById(cellId+'').style.color="red";
	}if(startId == '' && endId == '' && document.getElementById('ft_'+cellId).className == 'na_onln'){
		manageHint('hint2');
		document.getElementById('editMode').value='remove';
		if(updateStartId){
			document.getElementById('selectedStartId').value=currentYear + '_' + cellId;
		}
		for(var i = 1; i < cellId; i++){
			var cell = document.getElementById(i+'');
			cell.className = cell.className + '_disable';
		}
		var cell = document.getElementById(cellId+'');
		cell.className = 'avbl';
		cell.style.color="red";
	}else if(startId != '' && endId == '' && parseInt(startId) <= parseInt(cellId) && editMode == 'add'){
		manageHint('hint3');
		cellId = parseInt(cellId);
		startId = parseInt(startId);
		if(updateEndId){
			document.getElementById('selectedEndId').value=currentYear + '_' + cellId;
		}
		for(var i = startId; i <= cellId; i++){
			var font = document.getElementById('ft_'+i);
			var cell = document.getElementById(''+i);
			var fontClass = font.className;
			if(fontClass != 'out_of_month'){
				cell.className = 'na_onln';
			}
			
		}
		for(var i = 1; i < startId; i++){
			var cell = document.getElementById(i+'');
			var cellValue = cell.innerHTML;
			//alert(cellValue);
			var newClassName = cell.className;
			if(cell.className.indexOf('_disable') != -1){
				newClassName = newClassName.substring(0, cell.className.indexOf('_disable'));
				cell.className = newClassName;
			}
			
		}
		document.getElementById(startId+'').style.color="#000000";
	}else if(startId != '' && endId == '' && parseInt(startId) <= parseInt(cellId) && editMode == 'remove'){
		manageHint('hint3');
		startId = parseInt(startId);
		cellId = parseInt(cellId);
		if(updateEndId){
			document.getElementById('selectedEndId').value=currentYear + '_' + cellId;
		}
		for(var i = startId; i <= cellId; i++){
			var cell = document.getElementById(i+'');
			var cellValue = cell.innerHTML;
			if(cell.className == 'na_onln'){
				cell.className = 'avbl';
			}
			
		}
		for(var i = 1; i < startId; i++){
			var cell = document.getElementById(i+'');
			var cellValue = cell.innerHTML;
			//alert(cellValue);
			var newClassName = cell.className;
			if(cell.className.indexOf('_disable') != -1){
				newClassName = newClassName.substring(0, cell.className.indexOf('_disable'));
				cell.className = newClassName;
			}
			
		}
		
		document.getElementById(startId+'').style.color="#000000";
	}
	}catch(err){
		alert(err);
	}
}

function executeAfterYearChange(){
	if(document.getElementById('selectedStartId').style.display == 'none'){
		return false;
	}
	var startId = document.getElementById('selectedStartId').value;
	var endId = document.getElementById('selectedEndId').value;
	var currentYear = document.getElementById('currentYearr').value;
	//alert(startId + '/' + endId + '/' + currentYear);
	if(startId != '' && endId != ''){
		document.getElementById('apply_btn').style.display='';
	}
	if(startId != '' && endId == ''){
		manageHint('hint2');
		var startYear = startId.substring(0,startId.indexOf('_'));
		startId = startId.substring(startId.indexOf('_')+1);
		
		if(startYear == currentYear){
			markCells(startId,'clear','clear');
		}else if(startYear > currentYear){
			var lastId = getLastId();
			for(var i = 1; i <= lastId; i++){
				var cell = document.getElementById(i+'');
				cell.className = cell.className + '_disable';
			}
		}
		
	}else if(startId != '' && endId != ''){
		//alert('aaa2222 ' + startId);
		manageHint('hint3');
		var endYear = endId.substring(0,endId.indexOf('_'));
		
		endId = endId.substring(endId.indexOf('_')+1);
		
		if(endYear == currentYear){
			//alert('endYear == currentYear');
			markCells(endId,startId,'clear');
		}else if(endYear > currentYear){
			
			endId = getLastId();
			//alert('call markCells('+endId+','+startId+',clear)');
			markCells(endId,startId,'clear');
		}
	}else{
		//alert('aaa3333');
	}
	
}

function manageHint(showHintId){
	document.getElementById('hint1').style.display='none';
	document.getElementById('hint2').style.display='none';
	document.getElementById('hint3').style.display='none';
	document.getElementById(showHintId).style.display='';
}

function getLastId(){
	if(document.getElementById('366')){
		return '366';
	}else{
		return '365';
	}
}

function applyUpdate(){
	document.getElementById('apply_btn').style.display='none';
	apost('calendarYear','calendarFrom3',document.CalendarYearForm,'actionForm','Apply','direction','keep','_eval1','refreshMonthCalendar();document.getElementById(\'selectedStartId\').value = \'\';document.getElementById(\'selectedEndId\').value = \'\';');
}

function refreshMonthCalendar(){
	apost('calendar.do?mode=short','calendarFrom2',document.RentItemForm,'direction','keep');
}

function openYearCalendar(itemId,type){
	if(type == 'show'){
		document.getElementById('show_link').style.display='none';
		document.getElementById('hide_link').style.display='';
		document.getElementById('selectedStartId').value='';
		document.getElementById('selectedEndId').value='';
		apost('calendarYear.do?mode=short&itemId='+itemId+'&init=yes"','calendarFrom3',document.CalendarYearForm,'_eval1','$S(\'calendarFrom3\').display=\'\';');
	}else{
		closeYearCalendar();
	}
}
function closeYearCalendar(){
	try{
		if(document.getElementById('calendarFrom3')){
			document.getElementById('calendarFrom3').style.display='none';
			document.getElementById('show_link').style.display='';
			document.getElementById('hide_link').style.display='none';
			document.getElementById('editMode').value='none';
			document.getElementById('selectedStartId').value='';
			document.getElementById('selectedEndId').value='';
		}
	}catch(err){
		alert(err);
	}
}

function clearSelected(isOwner){
	document.getElementById('apply_btn').style.display='none';
	document.getElementById('selectedStartId').value = '';
	document.getElementById('selectedEndId').value = '';
	document.getElementById('editMode').value = '';
	apost('calendarYear.do?isOwner='+isOwner,'calendarFrom3',document.CalendarYearForm,'direction','keep','_eval1','');
}

function displayCalendar(form,divId,calendarType,actionPath, mode){
    
    try{
        var divElementFrom = document.getElementById('calendarFrom');
        var divElementTo = document.getElementById('calendarTo');
        
        if(divElementFrom.innerHTML != '' && calendarType == 'start'){
            divElementFrom.innerHTML = '';
            divElementTo.innerHTML = '';
            return false;
        }else if(divElementTo.innerHTML != '' && calendarType == 'end'){
            divElementFrom.innerHTML = '';
            divElementTo.innerHTML = '';
            return false;
        }
        divElementFrom.innerHTML = '';
        divElementTo.innerHTML = '';
        var dateFormat = $('dateFormatStr').value;
        if(mode){
            apost(actionPath, divId, form,'month' ,'', 'year', '', 'period', '', 'direction', '', 'calendarType', calendarType,'keepWizardOpened','yes', 'dateFormat', dateFormat, 'mode', mode);
        }else{
            apost(actionPath, divId, form,'month' ,'', 'year', '', 'period', '', 'direction', '', 'calendarType', calendarType,'keepWizardOpened','yes', 'dateFormat', dateFormat);
        }
    }catch(err){alert(err);}
}

function changeCalendar(period, direction, form, actionPath, calendar_id){
    var calFromId = 'calendarFrom2';
    var eval = '';
    if(calendar_id == 'change_decision'){
        calFromId = 'calendarFrom';
    }else if(calendar_id == 'calendar_year'){
    	calFromId = 'calendarFrom3';
    	eval = 'executeAfterYearChange()';
    }
    var divElementFrom = document.getElementById(calFromId);
    var divElementTo = document.getElementById('calendarTo');
    var target;

    if(divElementFrom == null){
        divElementFrom = document.getElementById('calendarFrom');
    }
    if(divElementFrom == null){
        return false;
    }
    if(divElementFrom.innerHTML){
        target = divElementFrom.id;
    }else if(divElementTo.innerHTML){
        target = divElementTo.id;
    }

    if(target){
    	apost(actionPath,target,form,'period', period, 'direction', direction,'_eval1',eval);
    }
}

function closeCalendar(){
    document.getElementById('calendarFrom').innerHTML = '';
    document.getElementById('calendarTo').innerHTML = '';
}

function setCalendarDate(date,status){
    if(status != 'avbl' && status != 'strt_dy_avlbl' && status != 'end_day' && status != 'today_avlbl' &&  status != 'srart_day_avlbl_end_cal'){
        return false;
    }
    var htmlFrom = document.getElementById('calendarFrom').innerHTML;

    if(htmlFrom){
        var dateStr = '0'+date;
        var monthStr = '0' + document.getElementById('month').value;
        document.getElementById('rentItemStartDate').value = getFormatedDate(date,document.getElementById('month').value,document.getElementById('year').value);
        if(isStartDateAfterEndDate(document.getElementById('rentItemStartDate').value,document.getElementById('rentItemEndDate').value)){
            document.getElementById('rentItemEndDate').value = document.getElementById('rentItemStartDate').value;
        }
        document.getElementById('calendarFrom').innerHTML='';
    }
    
    var htmlTo = document.getElementById('calendarTo').innerHTML;

    if(htmlTo){
        document.getElementById('rentItemEndDate').value = getFormatedDate(date,document.getElementById('month').value,document.getElementById('year').value);
        document.getElementById('calendarTo').innerHTML='';
    }
    //document.getElementById('calendarTo').innerHTML = '';
    if(document.getElementById('calculate_price')){
        document.getElementById('calculate_price').innerHTML='';
    }
    if(document.getElementById('calculate_price_return')){
        document.getElementById('calculate_price_return').innerHTML='';
    }
}

function getFormatedDate(date,month,year){
    var dateFormat = $('dateFormatStr').value;
    var indexOfDate = dateFormat.indexOf('d');
    var indexOfMonth = dateFormat.indexOf('M');
    var indexOfYear = dateFormat.indexOf('y');
    var useMonthTwoDigit = dateFormat.indexOf('MM') != -1;
    var sign = getDeletionSign();
    var formatedDate;
    
    date = '0'+date;
    date = date.substring(date.length-2,date.length);

    if(useMonthTwoDigit){
        month = '0'+month;
        month = month.substring(month.length-2,month.length);
    }
    
    if(indexOfDate < indexOfMonth && indexOfMonth < indexOfYear){
        formatedDate = date + sign + month + sign + year;
    }else if(indexOfDate < indexOfYear && indexOfYear < indexOfMonth){
        formatedDate = date + sign + year + sign + month;
    }else if(indexOfMonth < indexOfDate && indexOfDate < indexOfYear){
        formatedDate = month + sign + date + sign + year;
    }else if(indexOfMonth < indexOfYear && indexOfYear < indexOfDate){
        formatedDate = month + sign + year + sign + date;
    }else if(indexOfYear < indexOfMonth && indexOfMonth < indexOfDate){
        formatedDate = year + sign + month + sign + date;
    }else if(indexOfYear < indexOfDate && indexOfDate < indexOfMonth){
        formatedDate = year + sign + date + sign + month;
    }
    return formatedDate;
}

function getDeletionSign(){
    var dateFormat = $('dateFormatStr').value;
    var sign = '.';
    var formatedDate;
    if(dateFormat.indexOf(sign) == -1){
        sign = '/';
    }
    return sign;
}

function getNextAvailableDay(startDateStr){
    alert(startDateStr);
    var date = getDate(startDateStr);
alert(startDateStr);
    date.setDate(date.getDate() + 1);
    
    return getFormatedDate(date.getDate()+'',date.getMonth()+'',(date.getYear() + 1900)+'');// dateStr.substring(dateStr.length-2,dateStr.length) + '/' + monthStr.substring(monthStr.length-2,monthStr.length) + '/' + (date.getYear() + 1900);
}

function isStartDateAfterEndDate(startDateStr, endDateStr){
    var defaultString = $('dateFormatStrDisplay').value;
    if(startDateStr == defaultString){
        return false;
    }
    if(endDateStr == defaultString){
        return true;
    }
    var startDate = getDate(startDateStr);
    var endDate = getDate(endDateStr);
    return startDate > endDate;
}
function getDate(dateStr){
    var dateFormat = $('dateFormatStr').value;
    var sign = getDeletionSign();
    var indexFirstSlash = dateStr.indexOf(sign);
    var indexSecondSlash = dateStr.lastIndexOf(sign);

    var indexOfDate = dateFormat.indexOf('d');
    var indexOfMonth = dateFormat.indexOf('M');
    var indexOfYear = dateFormat.indexOf('y');
    var dayStr;
    var monthStr;
    var yearStr = dateStr.substring(indexSecondSlash+1);


    if(indexOfDate < indexOfMonth && indexOfMonth < indexOfYear){
        dayStr = dateStr.substring(0,indexFirstSlash);
        monthStr = dateStr.substring(indexFirstSlash+1,indexSecondSlash);
        yearStr = dateStr.substring(indexSecondSlash+1);
    }else if(indexOfDate < indexOfYear && indexOfYear < indexOfMonth){
        dayStr = dateStr.substring(0,indexFirstSlash);
        monthStr = dateStr.substring(indexSecondSlash+1);
        yearStr = dateStr.substring(indexFirstSlash+1,indexSecondSlash);
    }else if(indexOfMonth < indexOfDate && indexOfDate < indexOfYear){
        dayStr = dateStr.substring(indexFirstSlash+1,indexSecondSlash);
        monthStr = dateStr.substring(0,indexFirstSlash);
        yearStr = dateStr.substring(indexSecondSlash+1);
    }else if(indexOfMonth < indexOfYear && indexOfYear < indexOfDate){
        dayStr = dateStr.substring(indexSecondSlash+1);
        monthStr = dateStr.substring(0,indexFirstSlash);
        yearStr = dateStr.substring(indexFirstSlash+1,indexSecondSlash);
    }else if(indexOfYear < indexOfMonth && indexOfMonth < indexOfDate){
        dayStr = dateStr.substring(indexSecondSlash+1);
        monthStr = dateStr.substring(indexFirstSlash+1,indexSecondSlash);
        yearStr = dateStr.substring(0,indexFirstSlash);
    }else if(indexOfYear < indexOfDate && indexOfDate < indexOfMonth){
        dateStr.substring(indexFirstSlash+1,indexSecondSlash);
        monthStr = dateStr.substring(indexSecondSlash+1);
        yearStr = dateStr.substring(0,indexFirstSlash);
    }

    if(dateStr.indexOf('0') != -1){
    	dateStr = dateStr.substring(1,2);
    }
    if(monthStr.indexOf('0') != -1){
    	monthStr = monthStr.substring(1,2);
    }
    
    var date = new Date();
    date.setDate(1);
    date.setYear(parseInt(yearStr));
    date.setMonth(parseInt(monthStr)-1);
    date.setDate(parseInt(dayStr));
    return date;
}
