/**
 * Scripts of Serge!Sokolov personal web site http://sergeisokolov.com
 * Copyright: Sergei Sokolov, 2010.
 * Modified: 2012-01-17
 */
var folio = new Array();

folio['ru-msg0']	= 'Напишите, пожалуйста, как с Вами связаться';
folio['ru-msg2']	= 'Напишите же, пожалуйста:\nтелефон или e-mail,\nи суть работы в общих чертах.';

folio['en-msg0']	= 'Drop me a message';
folio['en-msg2']	= 'Please write your name and email, and I\'ll contact you';

var offset = new Array('web','print','photo','3d');

// state variables
var fkey = "web";
var findex = 0;
var flength = 0;
var imgA = true; // true when imgA is in position
var LtoR = true; // left to right? (or right to left)

var	lang = 'en'; // Language: en or ru
var holdit = false; // ignore input when true
var shown = false; // is folio displayed?
var speed = 400; // overall anim speed in ms

function parseFolio(lang, section) { // reads portfolio data from divs
	folio[ lang+'-'+section] = new Array();
	$('#pf-'+lang+' .'+section+' li').each( function(index) {
		var url = $(this).find('a').attr('href');
		if( url.indexOf('http://vimeo.com/')!=-1) {
			var w = $(this).find('a').attr('width');
			var h = $(this).find('a').attr('height');
			var id = url.substr(17);
			var embed = '<iframe src="http://player.vimeo.com/video/'+id+'?title=0&byline=0&portrait=0" width="'+w+'" height="'+h+'" frameborder="0"></iframe>';
		} else {
			var embed = '<img src="'+url+'" width="370" height="206" border="0" alt="" />';
		}
		folio[ lang+'-'+section].push( embed );
		folio[ lang+'-'+section].push( $(this).find('a').html() );
	});
}

function imgtag(i){
	return ( folio[lang+'-'+fkey][i*2]);
}

function caption(i){
	var t = folio[lang+'-'+fkey][i*2+1];
	if(t==''){
		i--;
		while(i>=0){
			t = folio[lang+'-'+fkey][2*i+1];
			if(t!='') break;
			i--;
		}
	}
	return t;
}

jQuery(document).ready(function() {
	$('#pf-ru').hide();
	$('#pf-en').hide();
	parseFolio('ru','web');
	parseFolio('ru','photo');
	parseFolio('ru','print');
	parseFolio('ru','3d');
	parseFolio('en','web');
	parseFolio('en','photo');
	parseFolio('en','print');
	parseFolio('en','3d');

	// initialize state from location hash #en/web  #ru/3d
	languageSet();
	sectionSet();

	// Language switch
	$('#lang>a.ru').click( function(event){
		event.preventDefault();
		if(lang=='ru') return false;
		$('#cont-en').hide();
		$('#cont-ru').show();
		switchLang('ru');
	});
	$('#lang>a.en').click( function(event){
		event.preventDefault();
		if(lang=='en') return false;
		$('#cont-ru').hide();
		$('#cont-en').show();
		switchLang('en');
	});

	// Textarea hints on click/blur
	$('#cont-'+lang+' div.feedback>textarea').click(function() {
		$(this).val('');
	});
	$('#cont-'+lang+' div.feedback>textarea').blur(function() {
		if ($(this).val() == '') {
			$(this).val(folio[lang+'-'+'msg2']);
		};
	});

	// Menu click
	$('div.services>ul>li>a').click( function(event){
		event.preventDefault();
		if(holdit) return; holdit = true;

		var url = $(this).attr('href');
		var sec = url.substr(4);
		mngLoc( sec);		
		initFolio(sec);
	});

	function switchLang( l) {
		if		( l=='ru' ) { lang='ru'}
		else if	( l=='en' ) { lang='en'}
		sectionSet( );
	}
	
	function sectionSet() {
		var loc = window.location.toString();
		var sec = loc.substr(loc.search('#')+4);
		if ( sec=='web' || sec=='print' || sec=='photo' || sec=='3d') initFolio( sec);
	}
	
	function languageSet() {
		var loc = window.location.toString();
		var urlang = loc.substr(loc.search('#')+1,2);
		if ( urlang=='ru') {
			lang='ru';
			$('#cont-ru').show();
			$('#cont-en').hide();
		} else if (urlang=='en') {
			lang='en';
			$('#cont-ru').hide();
			$('#cont-en').show();
		}
	}
	
	function mngLoc( sec) {
		var loc = window.location.toString();
		var hash = loc.search('#');
		if( hash>0) {
			window.location = loc.substr(0, hash) + '#' + lang + (sec?'/'+sec:'');
		} else {
			window.location = window.location + '#' + lang + (sec?'/'+sec:'');
		}
	}

	function flip() {
		shown = !shown;
	}
	
	function initFolio(s) {
		if (fkey == s && shown) { // menu switches off the display
			$('#cont-'+lang+' div.folio').fadeOut(speed/3,function(){
				shown = false;
				$("#imageA"+lang).html('');
				$("#imageB"+lang).html('');
				holdit = false;
			});
			for(var i=0;i<offset.length;i++){
				$('#menu'+(i+1)+lang).removeClass('act');
			}
			mngLoc( '');
		} else {
			fkey = s;
			findex = 0;
			flength = Math.floor(folio[lang+'-'+fkey].length/2);
			LtoR = true;
			setimg(true);
			for(var i=0;i<offset.length;i++){ // set menu items
				if(s == offset[i]){
					$('#menu'+(i+1)+lang).addClass('act');
				} else {
					$('#menu'+(i+1)+lang).removeClass('act');
				}
			}
			if (!shown) $('#cont-'+lang+' div.folio').fadeIn(speed,function(){shown = true;});
			preload(1);
			preload(flength-1);
		}
	}
	
	// Slidoshoww
	$(".prev").click(function(event){
		event.preventDefault();
		if(holdit) return; holdit = true;
		findex--;
		if(findex<0) findex = flength - 1;
		LtoR = false;
		setimg();
	});
	$(".next").click(function(event){
		event.preventDefault();
		if(holdit) return; holdit = true;
		findex++;
		if(findex>=flength) findex-=flength;
		LtoR = true;
		setimg();
	});

	function setimg(short) { // we know the new image, we know A or B is currently on, and we know which direction to slide
		short = typeof(short) == 'undefined' ? false : short;
		LtoR = !LtoR;
		var delta = short ? 5 : 25;
		var divOld = imgA?"#imageA"+lang:"#imageB"+lang;
		var divNew = imgA?"#imageB"+lang:"#imageA"+lang;
		
		var xOld = LtoR ? 5+delta : 5-delta;
		var xNew = LtoR ? 5-delta : 5+delta;
		
		$('#text-'+lang).hide();
		
		$(divNew).html(imgtag(findex));
		// Preload next and previous pics
		var iNext = (findex+1) >= flength ? findex-flength+1 : findex+1;
		var iNext2 = (findex+2) >= flength ? findex-flength+2 : findex+2;
		var iPrev = (findex-1) < 0 ? flength-1 : findex-1;
//		console.log("i: "+iPrev+"  next:"+iNext);
		if (short) {
/*
			preload(iPrev);
			preload(iNext);
*/
		} else {
			LtoR ? preload(iPrev) : preload(iNext); // LtoR reversed in the beginning
		}
		
		$(divNew).css({'left':xNew, 'opacity':0, 'z-index':1000});
		$(divOld).css({'z-index':10});
		$(divNew).animate({left:'5px',opacity:1},speed, function(){
			imgA=!imgA;
			holdit=false;
			$('#text-'+lang).css('display','table-cell');
		});
		$(divOld).animate({left:xOld, opacity:0},speed, function(){
			$(this).html('');
		});
		$("#text-"+lang).html(caption(findex));
		$(divNew).click(function(){$(".next").click();});
	}

	$('#cont-'+lang+' .buttn').click(function(event) {
		event.preventDefault();
		var message = $('#cont-'+lang+' div.feedback>textarea').val();
		if (message == '' || message == folio[lang+'-'+'msg0'] || message == folio[lang+'-'+'msg0']) {
		  return false;
		}

		var dataString = {message: message};
		$.ajax({
			type: "POST",
			url: "hello.php",
			data: dataString,
			success: function() {
				$('#cont-'+lang+' div.feedback').html("<h2>Я получил Ваше сообщение!</h2>")
				.append("<p>Будем на связи.</p>")
				.hide()
				.fadeIn(1500, function() {
/* 					$('#feedback').append("<img id='checkmark' src='submit.png' />");   */
				});
			}
		});
		return false;
	});
	
	// preload first images for each gallery
	for(var i=0;i<offset.length;i++){
		preload(0, offset[i]);
	}
	
	function preload(u, m){
		m = typeof(m)=='undefined' ? fkey : m;
		var s = folio[lang+'-'+m][u*2];
		if(s.indexOf('<iframe')!=-1) return false;
		var url = s.match( /src="[^"]+/);
		if( url) {
			url = url[0].substr(5);
		} else return (false);
		$('<img />')
		    .attr('src', url)
		    .load(function(){
		    });
	}
});  

