popupExclusionArray = Array('advanced_search', 'calendar_1_container', 'popup_1');

enablePopupHiding = true;
lastDigestImageID = -1;
flagOverPhoto = 0;

function $(id){return document.getElementById(id);}

function initLeftMenu()
{
    var elementsArray = $('left_menu_1').getElementsByTagName('img');
    for(var a = 0, b = elementsArray.length; a < b; a++)
    {
        elementsArray[a].onclick = function()
        {
            var child = this.parentNode.parentNode.getElementsByTagName('ul');
            if(child[0])
            {
                if(child[0].style.display == 'none')
                {
                    child[0].style.display = '';
                    this.parentNode.parentNode.className = 'opened';
                }
                else
                {
                    child[0].style.display = 'none';
                    this.parentNode.parentNode.className = 'closed';
                }
            }
        }
    }
}

function checkLogin()
{
    if($('form_login_login').value.length == 0 || $('form_login_password').value.length == 0)
    {
        $('form_login_login').focus();
        return;
    }
    $('form_login').submit();
}

if($('calendar_1'))
{
    calendarTable = $('calendar_1');
    calendarTableBody = $('calendar_1').getElementsByTagName('tbody')[0];
    calendarMonthField = $('calendar_1_month');
    calendarYearField = $('calendar_1_year');
    if(!calendarSelectedDay || !calendarSelectedMonth || !calendarSelectedYear)
    {
        var currentTime = new Date();
        var calendarSelectedDay   = currentTime.getDate();
        var calendarSelectedMonth = currentTime.getMonth()+1;
        var calendarSelectedYear  = currentTime.getYear();
        calendarMonthField.selected= currentTime.getMonth();
    }
}
else
{
    calendarTable = false;
}

function initCalendar()
{
    if(calendarTable)
    {
        calendarMonthField.selectedIndex = calendarSelectedMonth - 1;

        if(calendarYearField)///FIXME calendarYearField is null!!! I write temp fix as adding "if"
        {
            for(var a = 0, b = calendarYearField.options.length; a < b; a++)
            {
                if(calendarYearField.options[a].value == calendarSelectedYear)
                {
                    calendarYearField.selectedIndex = a;
                    break;
                }
            }
            loadCalendar();
        }
    }
}

function loadCalendar()
{
    var month = calendarMonthField.value;
    var year = calendarYearField.value;
    Ext.Ajax.request({
        url: '/calendar_dates.php',
        success: function(resp){
            try{
                _loadCalendar(false, Ext.util.JSON.decode(resp.responseText));
            }
            catch(err)
            {
                _loadCalendar(true);
            }
        },
        failure: _loadCalendar(true),
        params: {
            date: year+'-'+month+'-00',
            SID: SID
        }
    });
}

function _loadCalendar(all_dates_as_link, photos_in_days)
{
    clearCalendarTable();

    var month = calendarMonthField.value-1;
    var year = calendarYearField.value;
    var date = new Date(year, month, 1);

    var daysAmount = getMonthDaysAmount(month, year);

    var weekDay = date.getDay();
    weekDay = (weekDay == 0) ? 7 : weekDay;
    var currentCell = weekDay;
    var currentWeek = calendarLoadEmptyDays(weekDay);
    var currentDay  = 1;
    var currentTurn = weekDay;
    var currentWeekDay = weekDay;

    while(currentDay <= daysAmount)
    {
        if(currentTurn%7 == 1 && currentDay > 1)
        {
            currentWeek = calendarAppendWeek();
            var currentWeekDay = 1;
        }

        var content='';
        if( calendarSelectedDay == currentDay &&
            calendarSelectedMonth == (month+1) &&
            calendarSelectedYear == year)
        {
            content = '<div>' + currentDay + '</div>';
            currentWeek.className = 'active_1';
        }
        else
        {
            var linkClass = (currentWeekDay == 6 || currentWeekDay == 7) ? 'small_6' : 'small_5';
            if(all_dates_as_link || (!Ext.isEmpty(photos_in_days) && photos_in_days[currentDay] > 0))
            {
                //content = '<a href="/reportages.php?date=' +(Date.UTC(year, month, currentDay, 0, 0, 0) / 1000) +'" class="'+linkClass+'">' + currentDay + '</a>';
                content = '<a href="/reportages.php?date='+year+'-'+(month+1)+'-'+currentDay+'" class="'+linkClass+'">' + currentDay + '</a>';
            }
            else
            {
                content = currentDay;
            }
        }
        calendarAppendDay(content, currentWeek);
        currentDay++;
        currentTurn++;
        currentWeekDay++;
    }
}

function calendarLoadEmptyDays(finishDay)
{
    var a = 1;
    var tr = calendarAppendWeek();
    while(a < finishDay)
    {
        calendarAppendDay('&nbsp;', tr);
        a++;
    }
    return tr;
}

function calendarAppendWeek()
{
    var tr = document.createElement('tr');
    calendarTableBody.appendChild(tr);
    return tr;
}

function calendarAppendDay(content, week)
{
    var td = document.createElement('td');
    week.appendChild(td);
    td.innerHTML = content;
}

function clearCalendarTable()
{
    while(calendarTable.rows.length > 1)
    {
        calendarTable.rows[1].parentNode.removeChild(calendarTable.rows[1]);
    }
}

function isLeapYear(year)
{
    return ((year % 4) == 0) && (((year % 100) != 0) || ((year % 400) == 0));
}

function getMonthDaysAmount(month, year)
{
    var daysArray = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var days = daysArray[month];
    if((month == 1) && isLeapYear(year))
    {
        days++;
    }
    return days;
}

function GoReportageDays()
{
	var day1 = document.getElementById('CalendarDateFromDay').options[document.getElementById('CalendarDateFromDay').options.selectedIndex].value;
	var month1 = document.getElementById('CalendarDateFromMonth').options[document.getElementById('CalendarDateFromMonth').options.selectedIndex].value;
	var year1 = document.getElementById('CalendarDateFromYear').options[document.getElementById('CalendarDateFromYear').options.selectedIndex].value;
	var day2 = document.getElementById('CalendarDateToDay').options[document.getElementById('CalendarDateToDay').options.selectedIndex].value;
	var month2 = document.getElementById('CalendarDateToMonth').options[document.getElementById('CalendarDateToMonth').options.selectedIndex].value;
	var year2 = document.getElementById('CalendarDateToYear').options[document.getElementById('CalendarDateToYear').options.selectedIndex].value;
	location.href = '/reportages.php?date1=' + year1 + '-' + month1 + '-' + day1 + '&date2=' + year2 + '-' + month2 + '-' + day2;
}

function switchObject(id)
{
    if ($(id).style.display == 'none')
    {
        hidePopupElements();
        $(id).style.display = '';
        enablePopupHiding = false;
    }
    else
    {
        $(id).style.display = 'none';
        enablePopupHiding = true;
    }
}

function checkBodyClick(event)
{
	if (!event) var event = window.event;

    if(enablePopupHiding)
    {
		var srcEl;
		if (event.srcElement)
		{
			srcEl = event.srcElement;
		}
		else
		{
			srcEl = event.target;
		}

        while(srcEl.tagName.toLowerCase() != 'body')
        {
            for(var key in popupExclusionArray)
            {
                if(srcEl.getAttribute('id') == popupExclusionArray[key]){return;}
            }
            srcEl = srcEl.parentNode;
        }
        hidePopupElements();
    }
    enablePopupHiding = true;
}

function hidePopupElements()
{
    for(var key in popupExclusionArray)
    {
        if($(popupExclusionArray[key]))
        {
            $(popupExclusionArray[key]).style.display = 'none';
        }
    }
    enablePopupHiding = true;
}

function digitsonly(e)
{
	var charcode = 0;
	if(window.event) charCode = e.keyCode;
	else if (e.which) charCode = e.which

	if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;

	return true;
}

function getscroll()
{
var scrollY = 0;
if ( document.documentElement && document.documentElement.scrollTop )
{
scrollY = document.documentElement.scrollTop;
}
else if ( document.body && document.body.scrollTop )
{
scrollY = document.body.scrollTop;
}
else if ( window.pageYOffset )
{
scrollY = window.pageYOffset;
}
else if ( window.scrollY )
{
scrollY = window.scrollY;
}
return scrollY;
}

function switchDigestImage(source)
{
	if (!flagOverPhoto) lastDigestImageID++;

    if(!$('photo_digest').getElementsByTagName('img')[lastDigestImageID])
    {
        lastDigestImageID = 0;
    }
    var container = $('photo_digest_image');
	var linkcontainer = $('photo_digest_image_link');
    var currentImage = $('photo_digest').getElementsByTagName('img')[lastDigestImageID];

    container.setAttribute('src', currentImage.getAttribute('src'));
    container.setAttribute('alt', currentImage.getAttribute('alt'));
    container.setAttribute('title', currentImage.getAttribute('title'));
	linkcontainer.setAttribute('href', 'reportages.php?id=' + currentImage.getAttribute('name'));

    if (source=='self') setTimeout("switchDigestImage('self')", '5000');
}

function SetCookie(cookieName,cookieValue) {
 var today = new Date();
 var expire = new Date();
 expire.setTime(today.getTime() + 3600000*24*30);
 document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString();
}

if (screen.width<=1024)
	SetCookie('cols', '4');
else if(screen.width<=1280)
	SetCookie('cols', '5');
else if(screen.width<=1400)
	SetCookie('cols', '6');
else
	SetCookie('cols', '7');

document.onclick = checkBodyClick;

initLeftMenu();
setTimeout('initCalendar()', '100');
