function inputIn(elem,text) {
	if ($(elem).val() == text) {
		$(elem).val('');
	}
}

function inputOut(elem,text) {
	if ($.trim($(elem).val()) == '') {
		$(elem).val(text);
	}
}

function drobBlock(elem) {
	if ($(elem).css('display') == 'none') {
		$(elem).show().animate({'height':'52px'},'fast');
	} else {
		$(elem).stop().animate({'height':'0px'},'fast',function(){$(this).hide()});
	}
}

function passwordIn(elem,tag,text,name) {
	if ($(elem).next('input').val() == text) {
		$(elem).next('input').replaceWith('<input type="password" name="'+ name +'" value="" class="'+ $(elem).next('input').attr('class') +'" onfocus="passwordIn($(this).prev(\''+ tag +'\'),\''+ tag +'\',\''+ text +'\',\''+ name +'\');" onblur="passwordOut($(this).prev(\''+ tag +'\'),\''+ tag +'\',\''+ text +'\',\''+ name +'\');" />');
		$(elem).next('input').focus();
	}
}

function passwordOut(elem,tag,text,name) {
	if ($(elem).next('input').val() == '') {
		$(elem).next('input').replaceWith('<input type="text" name="'+ name +'" value="'+ text +'" class="'+ $(elem).next('input').attr('class') +'" onfocus="passwordIn($(this).prev(\''+ tag +'\'),\''+ tag +'\',\''+ text +'\',\''+ name +'\');" />');
	}
}

function regControl(elem,prm,urlya,minL,maxL,text) {
	var val = $(elem).val();
	switch (prm) {
		case 'email': {
			if (val != text) {
				$.ajax({
					url:urlya,
					type:'get',
					data:'email='+ val,
					success:function(dt) {
						if (dt == 'ok') {
							$(elem).parents('.contentBlock').children('.errors').children('.emailError').remove();
						} else if ($(elem).parents('.contentBlock').children('.errors').children('.emailError').hasClass('emailError')) {
							$(elem).parents('.contentBlock').children('.errors').children('.emailError').html('- '+ dt);
						} else {
							$(elem).parents('.contentBlock').children('.errors').append('<p class="emailError">- '+ dt +'</p>');
						}
					}
				});
			} else {
				$(elem).parents('.contentBlock').children('.errors').children('.emailError').remove();
			}
		}
		break;
		case 'name': {
			if (val != text) {
				if (val.length < minL) {
					if ($(elem).parents('.contentBlock').children('.errors').children('.nameError').hasClass('nameError')) {
						$(elem).parents('.contentBlock').children('.errors').children('.nameError').html('- Имя должно быть не короче '+ minL +' символов');
					} else {
						$(elem).parents('.contentBlock').children('.errors').append('<p class="nameError">- Имя должно быть не короче '+ minL +' символов</p>');
					}
				} else if (val.length > maxL) {
					if ($(elem).parents('.contentBlock').children('.errors').children('.nameError').hasClass('nameError')) {
						$(elem).parents('.contentBlock').children('.errors').children('.nameError').html('- Имя должно быть не длиннее '+ maxL +' символов');
					} else {
						$(elem).parents('.contentBlock').children('.errors').append('<p class="nameError">- Имя должно быть не длиннее '+ maxL +' символов</p>');
					}
				} else {
					$.ajax({
						url:urlya,
						type:'get',
						data:'name='+ val,
						success:function(dt) {
							if (dt == 'ok') {
								$(elem).parents('.contentBlock').children('.errors').children('.nameError').remove();
							} else if ($(elem).parents('.contentBlock').children('.errors').children('.nameError').hasClass('nameError')) {
								$(elem).parents('.contentBlock').children('.errors').children('.nameError').html('- '+ dt);
							} else {
								$(elem).parents('.contentBlock').children('.errors').append('<p class="nameError">- '+ dt +'</p>');
							}
						}
					});
				}
			} else {
				$(elem).parents('.contentBlock').children('.errors').children('.nameError').remove();
			}
		}
		break;
	}
}

function regSubmit(elem,emailText,nameText) {
	if ($(elem).children('form').children('input:first').val() == emailText) {
		if ($(elem).children('.errors').children('.emailError').hasClass('emailError')) {
			$(elem).children('.errors').children('.emailError').html('- Не заполнено обязательное поле «почтовый ящик»!');
		} else {
			$(elem).children('.errors').append('<p class="emailError">- Не заполнено обязательное поле «почтовый ящик»!</p>');
		}
	}
	if ($(elem).children('form').children('input:eq(1)').attr('type') == 'text' || $(elem).children('form').children('input:eq(1)').attr('type') == '') {
		if ($(elem).children('.errors').children('.passError').hasClass('passError')) {
			$(elem).children('.errors').children('.passError').html('- Не заполнено обязательное поле «пароль»!');
		} else {
			$(elem).children('.errors').append('<p class="passError">- Не заполнено обязательное поле «пароль»!</p>');
		}
	} else if ($(elem).children('form').children('input:eq(1)').val() != $(elem).children('form').children('input:eq(2)').val()) {
		if ($(elem).children('.errors').children('.passError').hasClass('passError')) {
			$(elem).children('.errors').children('.passError').html('- Пароль не совпадает!');
		} else {
			$(elem).children('.errors').append('<p class="passError">- Пароль не совпадает!</p>');
		}
	} else {
		$(elem).children('.errors').children('.passError').remove();
	}
	if ($(elem).children('form').children('input:eq(3)').val() == nameText) {
		if ($(elem).children('.errors').children('.nameError').hasClass('nameError')) {
			$(elem).children('.errors').children('.nameError').html('- Не заполнено обязательное поле «имя на сайте»!');
		} else {
			$(elem).children('.errors').append('<p class="nameError">- Не заполнено обязательное поле «имя на сайте»!</p>');
		}
	}
	
	if ($(elem).children('.errors').children('p').length == 0) {
		$(elem).children('form').submit();
	}
}

function delElem(elem,urlya,arr,text,prm) {
	if (confirm(text)) {
		var d = '?';
		for (i = 0, lenI = arr.length; i < lenI; i++) {
			d += arr[i][0] +'='+ arr[i][1] +'&';
		}
		$.ajax({
			url:urlya,
			type:'post',
			data:d.substr(0,-1),
			success:function (dt) {
				if (dt == 'ok') {
					if (prm == 1) {
						$(elem).nextAll().each(function() {
							$(this).css('left',($(this).css('left').replace(/\D*$/ig,'') * 1 - $(this).innerWidth()));
						});
					}
					$(elem).remove();
				}
			}
		});
	}
}

function showBlock(urlya,arr,linkText) {
	popUpWindow(null,null,'<h3 class="link">прямая ссылка на эту открытку</h3><input type="text" value="'+ linkText +'" /><h3 class="send">отправить ссылку друзьям</h3><input type="text" /><div>электронные адреса друзей через запятую, не более 5</div><a href="#" class="button" onclick="showSend(\''+ urlya +'\',\''+ arr +'\',\'emails=\'+ $(this).parents(\'contentBlock\').children(\'input:last\').val()); return false;">поехали!</a>','showBlock');
}

function showSend(urlya,arr,str) {
	darkBlockHide();
	d = '';
	for (i = 0, lenI = arr.length; i < lenI; i++) {
		d += arr[i][0] +'='+ arr[i][1] +'&';
	}
	$.ajax({
		url:urlya,
		type:'post',
		data:d + str
	});
}

/*** SCROLL BLOCK ***/

scrollBlockArr = []; //0 - id; 1 - direct; 2 - razmer blocka-roditelya dvigaushegosya blocka (s overflow:hidden); 3 - razmer dvigaushegosya blocka; 4 - razmer blocka-roditelya scrollera; 5 - razmer scrollera; 6 - levij/verhnij stop scrollera; 7 - pravij/nizhnij stop scrollera; 8 - cursor start position; 9 - scroller start position; 10 - koeff, svyazivaushij smeshenie scrollera i dvigaushegosya blocka; 11 - can move or not; 12 - wheelDelta; 13 - scroll step; 14 - mnozhitel prokrutki kolesom; 15 - timeout prokrutki strelkami; 16 - delay prokrutki strelkami;

function setScrollFunctions(id,dir,elem0,elem1,elem1Size,elem1ChildTag,elem2,elem3,elem4,elem5,firstStop,secondStop,multiWeel,delayArr) {//id - id blocka, pri navedenii na kotorij activiruetsya scroller; dir - napravlenie prokrutki; elem0 - block-roditel dvigaushegosya blocka (s overflow:hidden); elem1 - dvigaushijsya block; elem1Size - shirina/visota soderzhimogo dvigaushegosya blocka; elem1ChildTag - tag pervih potomkov blocka elem1; elem2 - block-roditel srollera; elem3 - srcoller; elem4 - strelka vlevo/vverh; elem5 - strelka vpravo/vniz; firstStop - rasstoyanie sleva/sverhu vnutri elem2, na kotorom elem3 zakanchivaet dvizhenie vlevo/vverh; secondStop - rasstoyanie sprava/snizu vnutri elem2, na kotorom elem3 zakanchivaet dvizhenie vpravo/vniz; multiWeel - mnozhitel prokrutki kolesom; delayArr - timeout prokrutki strelkami;
	
	$('#'+ id).unbind('mouseover').bind('mouseover',function() {
		scrollBlockArr[1] = dir;
		
		if (scrollBlockArr[1] == 'gorizontal') {
			scrollBlockArr[2] = $(elem0).innerWidth();
			scrollBlockArr[3] = (elem1Size != null ? elem1Size : ($(elem1).children(elem1ChildTag +':last').css('left').replace(/\D*$/ig,'') * 1 + $(elem1).children(elem1ChildTag).innerWidth() + $(elem1).children(elem1ChildTag).css('borderLeftWidth').replace(/\D*$/ig,'') * 1 + $(elem1).children(elem1ChildTag).css('borderRightWidth').replace(/\D*$/ig,'') * 1));
			scrollBlockArr[4] = $(elem2).innerWidth();
			scrollBlockArr[5] = $(elem3).innerWidth() + $(elem3).css('borderLeftWidth').replace(/\D*$/ig,'') * 1 + $(elem3).css('borderRightWidth').replace(/\D*$/ig,'') * 1;
		} else {
			scrollBlockArr[2] = $(elem0).innerHeight();
			scrollBlockArr[3] = $(elem1).innerHeight();
			scrollBlockArr[4] = $(elem2).innerHeight();
			scrollBlockArr[5] = $(elem3).innerHeight() + $(elem3).css('borderTopWidth').replace(/\D*$/ig,'') * 1 + $(elem3).css('borderBottomWidth').replace(/\D*$/ig,'') * 1;
		}
		scrollBlockArr[6] = firstStop;
		scrollBlockArr[7] = secondStop;
		
		if (scrollBlockArr[3] > scrollBlockArr[2]) {
			if (scrollBlockArr[0] != id) {
				scrollBlockArr[0] = id;
				$(elem3).unbind('mousedown').bind('mousedown',function(e) {
					e = e || event;
					if (scrollBlockArr[1] == 'gorizontal') {
						scrollBlockArr[8] = e.clientX;
						scrollBlockArr[9] = $(elem3).offset().left - $(elem2).offset().left;
					} else {
						scrollBlockArr[8] = e.clientY;
						scrollBlockArr[9] = $(elem3).offset().top - $(elem2).offset().top;
					}
					scrollBlockArr[11] = true;
					blockEvent(e);
				});
				$(elem4).unbind('mousedown').bind('mousedown',function() {
					textBlockTurn(elem1,elem3,'leftTop');
				});
				$(elem5).unbind('mousedown').bind('mousedown',function() {
					textBlockTurn(elem1,elem3,'rightBottom');
				});
				$(document).unbind('mouseup').unbind('mousemove').bind('mouseup',function() {
					scrollBlockArr[11] = false;
					clearTimeout(scrollBlockArr[15]);
				}).bind('mousemove',function(e) {
					if (scrollBlockArr[11]) {
						e = e || event;
						if (scrollBlockArr[1] == 'gorizontal') {
							setScrollBlockNewPosition(elem1,elem3,(scrollBlockArr[9] + (e.clientX - scrollBlockArr[8])));
						} else {
							setScrollBlockNewPosition(elem1,elem3,(scrollBlockArr[9] + (e.clientY - scrollBlockArr[8])));
						}
						blockEvent(e);
					}
				});
				if (document.getElementById(id).addEventListener) {
					document.getElementById(id).addEventListener('DOMMouseScroll',function(e) {scrollBlockWheel(elem1,elem3,e);},false);
				}
				document.getElementById(id).onmousewheel = function(e) {scrollBlockWheel(elem1,elem3,e);}
			}
				
			scrollBlockArr[10] = (scrollBlockArr[3] - scrollBlockArr[2]) / (scrollBlockArr[4] - scrollBlockArr[5] - scrollBlockArr[6] - scrollBlockArr[7]) * (-1);
			scrollBlockArr[13] = (scrollBlockArr[4] - scrollBlockArr[5] - scrollBlockArr[6] - scrollBlockArr[7]) / (scrollBlockArr[3] - scrollBlockArr[2]);
			scrollBlockArr[14] = multiWeel;
			scrollBlockArr[16] = delayArr;
		}
	});
}

function setScrollBlockNewPosition(elem1,elem3,newScrollerPosition) {//elem1 - dvigaushijsya block; elem3 - scroller; newScrollPosition - poziciya scrollera;
	if (newScrollerPosition < scrollBlockArr[6]) {
		newScrollerPosition = scrollBlockArr[6];
		var newContentPosition = 0;
		clearTimeout(scrollBlockArr[15]);
	} else if (newScrollerPosition + scrollBlockArr[5] > scrollBlockArr[4] - scrollBlockArr[7]) {
		newScrollerPosition = scrollBlockArr[4] - scrollBlockArr[7] - scrollBlockArr[5];
		var newContentPosition = scrollBlockArr[2] - scrollBlockArr[3];
		clearTimeout(scrollBlockArr[15]);
	} else {
		var newContentPosition = (newScrollerPosition - scrollBlockArr[6]) * scrollBlockArr[10];
		if (newContentPosition > 0) {
			newContentPosition = 0;
		} else if (newContentPosition < scrollBlockArr[2] - scrollBlockArr[3]) {
			newContentPosition = scrollBlockArr[2] - scrollBlockArr[3];
		}
	}
	
	if (scrollBlockArr[1] == 'gorizontal') {
		$(elem1).css('left',newContentPosition +'px');
		$(elem3).css('left',newScrollerPosition +'px');
	} else {
		$(elem1).css('top',newContentPosition +'px');
		$(elem3).css('top',newScrollerPosition +'px');
	}
}

function scrollBlockWheel(elem1,elem3,e) {
	e = e || event;
    scrollBlockArr[12] = 0;
    
    if (e.wheelDelta) {
        scrollBlockArr[12] = e.wheelDelta / 120;
    } else if (e.detail) {         
        scrollBlockArr[12] = e.detail / 3 * (-1);
    }
    if (scrollBlockArr[12]) {
		if (scrollBlockArr[1] == 'gorizontal') {
			setScrollBlockNewPosition(elem1,elem3,($(elem3).css('left').replace(/\D*$/ig,'') * 1 - scrollBlockArr[12] * scrollBlockArr[13] * scrollBlockArr[14]));
		} else {
			setScrollBlockNewPosition(elem1,elem3,($(elem3).css('top').replace(/\D*$/ig,'') * 1 - scrollBlockArr[12] * scrollBlockArr[13] * scrollBlockArr[14]));
		}
    }
    
    if (e.preventDefault) {
        e.preventDefault();
    }
    e.returnValue = false;
    blockEvent(e);
}

function blockEvent(e) {
    e = e || event;
	if (e.stopPropagation) {
		e.stopPropagation();
	} else {
		e.cancelBubble = true;
	}
	if (e.preventDefault) {
		e.preventDefault();
	} else {
		e.returnValue = false;
	}
}

function textBlockTurn(elem1,elem3,dir) { 
	if (scrollBlockArr[1] == 'gorizontal') {
		cssDir = 'left';
	} else {
		cssDir = 'top';
	}

	if (dir == 'leftTop') {
		setScrollBlockNewPosition(elem1,elem3,($(elem3).css(cssDir).replace(/\D*$/ig,'') * 1 - scrollBlockArr[13]));
	} else {
		setScrollBlockNewPosition(elem1,elem3,($(elem3).css(cssDir).replace(/\D*$/ig,'') * 1 + scrollBlockArr[13]));
	}
	scrollBlockArr[15] = setTimeout(function(){textBlockTurn(elem1,elem3,dir);},scrollBlockArr[16]);
}

/*** SLIDER ***/

sliderArr = [true];
function slider(elem,dir,speed) {
	if (sliderArr[0]) {
		sliderArr[0] = false;
		var widthOne = $(elem).children('.move').children('div').innerWidth();
		var widthAll = $(elem).children('.move').children('div:last').css('left').replace(/\D*$/ig,'') * 1 + widthOne;
		if (dir == 'left' && $(elem).children('.move').css('left').replace(/\D*$/ig,'') * 1 < 0) {
			$(elem).children('.move').animate({'left':(($(elem).children('.move').css('left').replace(/\D*$/ig,'') * 1 + widthOne) +'px')},speed,function(){sliderArr[0] = true;});
		} else if (dir == 'right' && $(elem).children('.move').css('left').replace(/\D*$/ig,'') * 1 > $(elem).innerWidth() - widthAll) {
			$(elem).children('.move').animate({'left':(($(elem).children('.move').css('left').replace(/\D*$/ig,'') * 1 - widthOne) +'px')},speed,function(){sliderArr[0] = true;});
		} else {
			sliderArr[0] = true;
		}
	}
}

/*** DROP BLOCK ***/

function toggleDropBlock(elem) {
	if ($(elem).css('display') == 'none') {
		$(elem).show();
	} else {
		$(elem).hide();
	}
}

function selectDropElem(elem,arr,sbmt) {
	$(elem).parents('.dropBlock').children('span').html($(elem).html());
	toggleDropBlock($(elem).parents('.drop'));
	$('input[name='+ arr[0] +']').val(arr[1]);
	if (sbmt == 1) {
		$(elem).parents('form').submit();
	}
}

/*** POP UP BLOCK ***/

userAgent = navigator.userAgent.toLowerCase();
isIE = ((userAgent.indexOf("msie") != -1 && userAgent.indexOf("opera") == -1) ? true : false);

function popUpWindow(urlya,id,dt,cl) {
	if (urlya != null) {
		$.ajax({
			url:urlya,
			type:'get',
			success:function(dt) {
				$('body').append('<div class="cBlock popUpWindow'+ (cl != '' ? ' '+ cl : '') +'"><div class="c0"></div><div class="c1"></div><div class="c2"></div><div class="c3"></div><div class="l0"></div><div class="contentBlock"><a href="#" class="close" onclick="darkBlockHide(); return false;"></a>'+ dt +'</div><div class="l1"></div></div>');
				darkBlockShow();
			}
		});
	} else {
		if (id != null) {
			dt = $('#'+ id).html();
		}
		$('body').append('<div class="cBlock popUpWindow'+ (cl != '' ? ' '+ cl : '') +'"><div class="c0"></div><div class="c1"></div><div class="c2"></div><div class="c3"></div><div class="l0"></div><div class="contentBlock"><a href="#" class="close" onclick="darkBlockHide(); return false;"></a>'+ dt +'</div><div class="l1"></div></div>');
		darkBlockShow();
	}
}

function darkBlockShow() {
	if (isIE) {
		$('html').css('overflow','hidden');
	}
	if (!$('body').children('.darkBlock').hasClass('darkBlock')){
		$('body').append('<div class="darkBlock"></div>');
	}
	
	$('body').children('.darkBlock').addClass('darkBlockBg');
		  
	$('body').children('.darkBlock').css('opacity',0).fadeTo('fast',0.70);
	$('body').children('.popUpWindow').fadeIn('fast');
	$('.popUpWindow').css({'marginLeft':'-'+ ($('.popUpWindow').innerWidth() / 2) +'px','width':$('.popUpWindow').innerWidth() +'px'});
	
	document.onkeyup = function(e){      
		if (e == null) { // ie
			keycode = event.keyCode;
		} else { // mozilla
			keycode = e.which;
		}
		if(keycode == 27){ // esc = close
			 darkBlockHide();
		}
	};
}

function darkBlockHide() {
	$('body').children('.popUpWindow').fadeOut('fast',function(){
		$(this).remove();
	});
	$('body').children('.darkBlock').fadeOut('fast',function(){
		$(this).remove();
		if (isIE) {
			$('html').css('overflow','');
		}
	});
	document.onkeyup = '';
}
