// scripts-common.js for EES 2.3

// Creating xhr object
var getXHR = (function(){	var xhr;
	if(typeof XMLHttpRequest != 'undefined') return function(){ return xhr = new XMLHttpRequest() }
	else if(window.ActiveXObject){		var xmlVers = ['MSXML2.XMLHttp.4.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp']
		for(var i=0; i<xmlVers.length; i++){			try{				xhr = new ActiveXObject(xmlVers[i]);
				return function(){ return xhr }
			} catch(err){}
		}
		throw new Error('Невозможно создать объект XMLHttp')
	}
	return function(){ return xhr }
})()
function sendXHR( http_string, post_string, on_ready, on_false, obj ){	var xhr = getXHR()
	xhr.open('POST', http_string, true)
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
	xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
	xhr.onreadystatechange = function(){
		if(xhr.readyState != 4) return
		clearTimeout(xhrTimeOut)
		if(xhr.status == 200){
			var r = eval('('+xhr.responseText+')')
			if( +r['rc'] ){
				on_ready.call(null,r, obj)
			}
			else{				on_false.call(null,r['msg'])
			}
		}
	}
	xhr.send(post_string);
	var xhrTimeOut = setTimeout( function(){ on_false.call(null,'Время ожидания ответа истекло.'), xhr.abort() }, 10000)
}

// Trim string
function trim(str){
    charlist = ' \s\xA0';
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
    return str.replace(re, '');
}

// SetCookies
function setCookie( c_name, value, expiredays, path, domain ){
	var expdate = new Date();
	expdate.setDate(expdate.getDate()+expiredays);
	document.cookie = c_name + "=" + escape(value) +
		((expiredays==null) ? "" : ";expires=" + expdate.toGMTString()) +
		((path) ? ";path=" + path : "") +
        ((domain) ? ";domain=" + domain : "");
}

// Email click
function email(a1, a2){
	document.location.href = 'mailto:' + a1 + '@' + a2;
}

// Inseart flash
function insertFlash(node, url, width, height, params){
	var object, param, key;
	function newParam(name, value) {
		if(0 /*@cc_on + 1 @*/) return ['<param name="', name, '" value="', value, '" />'].join('');
		else {
			param = document.createElement('param');
			param.name = name;
			param.value = value;
			return param;
		}
	}
	if(0 /*@cc_on + 1 @*/) {
		object = ['<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="', width, '" height="', height, '"><param name="movie" value="', url, '" />'];
		if(params){
			for(key in params){
				if(params.hasOwnProperty(key)){
					object.push(newParam(key, params[key]));
				}
			}
		}
		object.push('</object>');
		node.innerHTML = object.join('');
	}
	else {
		object = document.createElement('object');
		object.type = 'application/x-shockwave-flash';
		object.data = url;
		object.width = width;
		object.height = height;
		if(params){
			for(key in params){
				if(params.hasOwnProperty(key)){
					object.appendChild(newParam(key, params[key]));
				}
			}
		}
		while(node.firstChild){
			node.removeChild(node.firstChild);
		}
		node.appendChild(object);
	}
}

// -----------------------------
// Navigaton in pagination block
// -----------------------------
function navPrev(obj,len){
	var _jr = $(obj).next().children();
	var left = parseInt(_jr.css('margin-left'));
	if(left + len <= 0){
		var full_shift = left + len;
		_jr.animate({marginLeft:full_shift+'px'},333)
	}
}
function navNext(obj,len){
	var _jr = $(obj).prev().children();
	var w = +_jr.width();
	var left = parseInt(_jr.css('margin-left'));
	if( left - len > -w ){
		var full_shift = left - len;
		_jr.animate({marginLeft:full_shift+'px'},333)
	}
}

// ---------------
// Horizontal menu
// ---------------
function menu_1_create_hover(){	$('div[index=services], div[index=portfolio]').hover( function(){
		menu_1_over(this)
	}, function(){
		menu_1_out(this)
	} );
	// Activate requested item immediately
	if( active == 'services' || active == 'portfolio' ){		$('div[index='+active+']').mouseover();
	}
}
function menu_1_over( obj ){
	obj.firstChild.style.color = '#ffffff';
	$('#'+obj.getAttribute('index')).fadeIn( 100 );
}
function menu_1_out( obj ){
	obj.firstChild.style.color = '#402b47';
	$('#'+obj.getAttribute('index')).fadeOut( 100 )
}

// -------------
// Vertical menu
// -------------
function onOff(obj){
	if( obj.nextSibling.childNodes[1].firstChild ){		if( obj.nextSibling.childNodes[1].className == 'db' ){			obj.nextSibling.childNodes[1].className = 'dn';
			obj.style.backgroundImage = "url('/images/plus.png')";
		}
		else{
			obj.nextSibling.childNodes[1].className = 'db';
			obj.style.backgroundImage = "url('/images/minus.png')";
		}
	}
}
function on(id){
	var obj = document.getElementById('i'+id);
	if( obj && (obj.nextSibling.childNodes[1].className == 'dn') ){		obj.nextSibling.childNodes[1].className = 'db';
		obj.style.backgroundImage = "url('/images/minus.png')";
	}
}

// ---------------------------
// Add/Remove position to/from Cart
// ---------------------------
var cart_succ = function(r, obj){
	document.getElementById('count').innerHTML = r['data']['count'];
	document.getElementById('sum').innerHTML = r['data']['sum'];

	if(obj.innerHTML == 'Отменить заказ'){		obj.innerHTML = 'Добавить к заказу';
		obj.className = 'c-violet'
	}
	else{		obj.innerHTML = 'Отменить заказ';
		obj.className = 'c-red'
	}
	$('#status-request').html(r['msg']).fadeIn(222);
	setTimeout( function(){ $('#status-request').fadeOut(222) }, 3000 )
}
var cart_false = function(msg){	$('#status-request').html(msg).fadeIn(222);
	setTimeout( function(){ $('#status-request').fadeOut(222) }, 3000 )
}
function cart(obj, id){
	sendXHR( '/cart/'+id, 'a=a', cart_succ, cart_false, obj )
}

// -----------
// Recalc cart
// -----------
var q_t = false;
var reccart_succ = function(r, obj){
	document.getElementById('count').innerHTML = r['data']['count'];
	document.getElementById('sum').innerHTML = r['data']['sum'];

	if( q_t ){ $('#'+q_t).remove(); }
	if( parseInt(r['data']['count']) == 0 ){ $('#div_cart').remove(); }

	$('#status-request').html(r['msg']).fadeIn(222);
	setTimeout( function(){ $('#status-request').fadeOut(222) }, 3000 )
}
var reccart_false = function(msg){
	$('#status-request').html(msg).fadeIn(222);
	setTimeout( function(){ $('#status-request').fadeOut(222) }, 3000 )
}
function reccart(obj, id, q){	if( !parseInt(q) ){ q_t = 'r_'+id }
	else{ q_t = false }
	sendXHR( '/cart/'+id+'/'+q, 'a=a', reccart_succ, reccart_false, obj )
}

// ------------
// Send request
// ------------
var req_succ = function(r, obj){
	$('#status-request').html(r['msg']).fadeIn(222);
	setTimeout( function(){ $('#status-request').fadeOut(222) }, 3000 );
	$(obj.parentNode.parentNode).fadeOut(444)

	if( r['data']['count'] ){		document.getElementById('count').innerHTML = r['data']['count'];
		document.getElementById('sum').innerHTML = r['data']['sum'];
		if( parseInt(r['data']['count']) == 0 ){ $('#div_cart').remove(); }
		$('#order_result').html(r['msg1']);
	}
}
var req_false = function(msg){
	$('#status-request').html(msg).fadeIn(222);
	setTimeout( function(){ $('#status-request').fadeOut(222) }, 3000 )
}
function sendRequest(obj, link){
	var name = document.getElementById('f-name').value;
	var contact = document.getElementById('f-contact').value;
	var comment = document.getElementById('f-comment').value;
	if( !trim(name) ){		return	alert('Укажите, пожалуйста, как к Вам обращаться.')
	}
	if( !trim(contact) ){		return	alert('Укажите свой контактный e-mail и/или телефон для связи')
	}
	if( !trim(comment) ){		return 	alert('Ваши вопросы/комментарии?')
	}
	sendXHR( link, 'name='+encodeURIComponent(name)+'&contact='+encodeURIComponent(contact)+'&comment='+encodeURIComponent(comment), req_succ, req_false, obj );
	return false
}

// *****************************************************************************
// ON READY
// *****************************************************************************
$(document).ready( function(){
	// Cart hover
	$('#h-cart-icon').hover( function(){ this.style.backgroundPosition = '28px -99px' }, function(){ this.style.backgroundPosition = '28px 20px' } );

	// Roll right 1st-menu and bind 'menu_1_create_mover()' on complete
	if( jQuery.browser.msie ){		setTimeout( function(){ $(menu_1).animate({left: '0px'}, {duration: 666, queue: false, complete: menu_1_create_hover}) }, 333 );
	}
	else{		menu_1.style.opacity = '0';
		setTimeout( function(){ $(menu_1).animate({left: '0px', opacity: 1}, {duration: 666, queue: false, complete: menu_1_create_hover}) }, 333 );
	}

	// Remove clicks from last-level's vertical menu items & open first level
	var uls = $('div.content-cat-left-menu ul').not(':has(*)').unbind('click').parent().prev().css( {backgroundImage: "url('/images/none.png')", cursor: 'default'} );
});
