$(document).ready(function() {
	function checkForm() {
		var dis = true,
			file = $('#file1').val(),
			year = $.trim($('#year').val()),
			school = $('form')[0].school.value;
			
		if (school && year) {
			dis = false;
		}
		
		if (file.search(/(\.jpg|\.jpeg)$/i) != -1) {
			dis = false;
			$('#add-photo-form .hint').removeClass('error');
		}
		else {
			if (file != '')	$('#add-photo-form .hint').addClass('error');
		}

		$('#submit')[0].disabled = dis;
	}
	
	$('#file1').change(checkForm);
	$('#add-photo span.inside').click(function() {
		$('#add-photo-form').toggle();
		$('#help-me').hide();
	});	
	
	checkForm();
	
	var text = '';
	for (var year in _school) {
		if (!_school.hasOwnProperty(year))	continue;
		
		text += '<tr><td class="year">' + year + '</td>';
		
		for (var n = 0; n < _school[year].length; n++) {
			var k = _school[year][n];
			if (!k) {
				text += '<td class="empty">' + (k === null ? '&ndash;' : '') + '</td>';
			}
			else {
				text += '<td class="has"><a href="#' + year + ',' + (n + 1) + '"><img src="./images/' + (k > 3 ? 3 : k) + '.png" alt="" /></a></td>'
			}
		}
		
		text += '</tr>';
	}
	
	$('#school-selector tr:last').after(text);
	
	var td = $('#school-selector td'),
		tr =  $('#school-selector tr:has(td)');
		
	td.mouseover(function() {
		var _tr = $(this).parent();
		
		td.filter('.hover').removeClass('hover');
		tr.removeClass('hover');
		
		if ($(this).hasClass('head') || $(this).hasClass('year')) {
			return;
		}
		
		_tr.addClass('hover');
		
		var index = $(this).index();
		
		tr.each(function() {
			$(this).find('td').eq(index).addClass('hover');
		});
		
	}).click(function() {
		td.removeClass('selected');
		
		if (!$(this).hasClass('has')) return;
		
		$(this).addClass('selected');
		
		var year = parseInt($(this).parent().find('td.year').html()),
			index = $(this).index(),
			len = _school[year][index - 1],
			text = '';
		
		for (var i = 0; i < len; i++) {
            var src = './images/years/school' + index + '_' + year + '_' + (i + 1) + '.jpg';
			text += '<div class="container"><img class="main" src="' + src + '" alt="" /><div class="zoom"><img src="' + src + '" alt=""/></div></div>';
		}
		
        var bp = $('#big-photos');
        bp.find('.container')
            .unbind('mousemove', moveZoom);
            
		bp.html(text);
        
        bp.find('.container')
            .bind('mousemove', moveZoom);
	});
    
    function moveZoom(e) {
        var zoomWidth = 150,
            div = 2,
            x = e.pageX,
            y = e.pageY;
            
        var img = $(this).find('img.main'),
            zoom = $(this).find('.zoom'),
            zImg = zoom.find('img'),
            offset = img.offset();
            
       if (x - offset.left < 0 || x - img.width() - offset.left > 0 || y - offset.top < 0 || y - img.height() - offset.top > 0) {
            zoom.hide();
            
            $('#big-photos .zoom').hide();
            return;
       }
            
       zoom.show();
       if (img.width() * div == zImg.width() && img.height() * div == zImg.height()) {
       }
       else {
        zImg.width(img.width() * div).height(img.height() * div);
       }
       
       zoom.css({left: x - offset.left - zoomWidth, top: y - offset.top - zoomWidth});
       zImg.css({left: (-x + offset.left) * div + zoomWidth / 2, top: (-y + offset.top) * div + zoomWidth / 2});
    }

    function changeHash() {
        var hash = window.location.hash;
        if (hash) {
            hash = hash.replace(/#/, '');
            var parts = hash.split(/,/);
            if (parts.length == 2) {
                var year = parseInt(parts[0], 10),
                    cl = parseInt(parts[1], 10);
                
                if (!isNaN(year) && !isNaN(cl)) {
                    tr.find('td.year').each(function() {
                        if (this.innerHTML == year) {
                            $(this).parent().find('td:eq(' + cl + ') img').click();
                            return false;
                        }
                    });
                }
            }
        }
    }
    
    changeHash();
});
