(function($){
     $.fn.extend({
          center: function (options) {
               var options =  $.extend({ // Default values
                    inside:window, // element, center into window
                    transition: 0, // millisecond, transition time
                    minX:0, // pixel, minimum left element value
                    minY:0, // pixel, minimum top element value
                    vertical:true, // booleen, center vertical
                    withScrolling:true, // booleen, take care of element inside scrollTop when minX < 0 and window is small or when window is big
                    horizontal:true // booleen, center horizontal
               }, options);
               return this.each(function() {
                    var props = {position:'absolute'};
                    if (options.vertical) {
                         var top = ($(options.inside).height() - $(this).outerHeight()) / 2;
                         if (options.withScrolling) top += $(options.inside).scrollTop() || 0;
                         top = (top > options.minY ? top : options.minY);
                         $.extend(props, {top: top+'px'});
                    }
                    if (options.horizontal) {
                          var left = ($(options.inside).width() - $(this).outerWidth()) / 2;
                          if (options.withScrolling) left += $(options.inside).scrollLeft() || 0;
                          left = (left > options.minX ? left : options.minX);
                          $.extend(props, {left: left+'px'});
                    }
                    if (options.transition > 0) $(this).animate(props, options.transition);
                    else $(this).css(props);
                    return $(this);
               });
          }
     });
})(jQuery);


var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera') > -1);
var isIE = (!isOpera && ua.indexOf('msie') > -1);
var cWidth = getClientWidth() + 100;
var price = 0;
var timeId;

function getPriceLabel(obj, k) {
	clearTimeout(timeId);
	var coords = getElementPosition(obj);
	var lbl = $("#price-lbl");

	lbl.css({left: coords.left - k + "px", top: coords.top - 90 + "px", display: "block", opacity: 0}).animate({opacity: 1, top: coords.top - 140 + "px"}, 400);
	timeId = setTimeout("document.getElementById('price-lbl').style.display = 'none'", 1500);
}

function getCities(country_id){
    $.get('/getcity/'+country_id,  function(data){
        $('#ddlCity').html(data);
        $("#ddlCity").each(function() {
            var ddl = $(this);
            var curVal = ddl.find("a.curItem");
            var list = ddl.find(".list");
            var items = ddl.find("li:not('.sep')");

            items.hover(function() {
                $(this).toggleClass("rol");
            });
            items.click(function() {
                curVal.text($(this).find("span").text());
                $(this).addClass("cur").siblings().removeClass("cur");
                //alert($(this).attr('v'));
                $('#city_input').attr('value', $(this).attr('v'));
                list.hide();
                ddl.css("zIndex", "1");
            });

            curVal.click(function() {
                if (list.is(":visible")) {
                    list.hide();
                    ddl.css("zIndex", "1");
                }
                else {
                    list.show();
                    ddl.css("zIndex", "2");
                }
            });

            var sell = this;
            AddEvent(document, 'click', function(event){
                var event = event || window.event;
                var t = event.target || event.srcElement;

                if (t != sell && !isChildNode(sell, t)) {
                    list.hide();
                    ddl.css("zIndex", "1");
                }
            });
        });
    });
}

$(document).ready(function() {	
	sliderInit();


    $.preloadCssImages();

    
    $('a.online-demo').click(function(){
        
       getPopup('contacts');
        $('#button_t').val('0');
       //return false;
    });

	$("#overlay").click(function() {
		$(this).hide();
		$(".popup").hide();
	});
	
	$(".faq dt").click(function() {
		var obj = $(this);
		if (obj.hasClass("opened")) {
			obj.removeClass("opened").next().hide();	
		}
		else {
			$(".faq dt.opened").removeClass("opened").next().hide();
			obj.addClass("opened").next().show();
			
		}
	});
	
	$(".packages .item").hover(
		function() {
            $(".packages .item").removeClass('blue').removeClass('green').removeClass('violet');
			var item = $(this);
            var pc = item.attr('pc');
            if(pc == 'blue'){
                item.addClass("blue");
            }else if(pc == 'green'){
                item.addClass("green");
            }else{
                item.addClass("violet");
            }
			/*var i = $(".packages .item").index(item);

			switch (i) {
				case 0: 
					item.addClass("violet");
					break;
				case 1: 
					item.addClass("blue");
					break;
				case 2: 
					item.addClass("green");
					break;
			}*/
		},
		function() {
            $(this).removeClass('blue').removeClass('green').removeClass('violet');
			//$(this).attr("class", "item");
		}
	);
	
	$(".cbx").each(function() {
		var obj = $(this);
		obj.hover(function() {
			obj.toggleClass("cbx-rol");
		});
		obj.click(function() {
			if (!obj.hasClass("cbx-disabled")) {
				obj.toggleClass("cbx-checked");
				obj.parent().parent().toggleClass("checked");	
			}
            calculatePrice();
            getPriceLabel(this, 170);
		});
	});
	
	$("#ddlCountry2").each(function() {
		var ddl = $(this);
		var curVal = ddl.find("a.curItem");
		var list = ddl.find(".list");
		var items = ddl.find("li:not('.sep')");

		items.hover(function() {
			$(this).toggleClass("rol");
		});
		items.click(function() {
			curVal.text($(this).find("span").text());
			$(this).addClass("cur").siblings().removeClass("cur");
            ddl.find('input').val($(this).attr('v'));
            getCities($(this).attr('v'));
			list.hide();
			ddl.css("zIndex", "1");
		});

		curVal.click(function() {
			if (list.is(":visible")) {
				list.hide();
				ddl.css("zIndex", "1");
			}
			else {
				list.show();
				ddl.css("zIndex", "2");
			}
		});

		var sell = this;
		AddEvent(document, 'click', function(event){
			var event = event || window.event;
			var t = event.target || event.srcElement;

			if (t != sell && !isChildNode(sell, t)) {
				list.hide();
				ddl.css("zIndex", "1");
			}
		});
	});
	
	$(".packages .item li").hover(
		function() {
			var li = $(this);
			var tipHtml = li.find(".tooltip-content").html();
			var pos = getElementPosition(this);
			var tooltip = $("#tooltip");
			li.addClass("rol");
			if (getClientWidth() < (pos.left + pos.width + $("#tooltip").width())) {
				tooltip.css({left: pos.left - $(this).width() - 90}).addClass("t-right");
			}
			else {
				tooltip.css({left: pos.left + pos.width}).removeClass("t-right");
			}
			tooltip.show().find(".wrap").html(tipHtml);
			tooltip.css("top", pos.top + pos.height - 0.5*tooltip.height() - 10);
		},
		function() {
			$(this).removeClass("rol");
			$("#tooltip").hide();
		}
	);

	$(".table table").each(function() {
		var table = $(this);
		var trs = table.find("tr");
		if (!table.hasClass("norol")) {
			trs.hover(
				function() {
					if (!$(this).hasClass("disabled")) {
						$(this).addClass("rol");
						if (trs.index($(this)) == (trs.length - 1)) {
							$(this).parent().parent().css("z-index", "3");
						}
						if ($.browser.mozilla) {
							$(this).find("td").css({height: "42px"});
						}
					}
				},
				function() {
					$(this).removeClass("rol");
					$(this).parent().parent().css("z-index", "1");
				}
			);
		}
	});
	$(".table table .select").each(function() {
		var inp = $("input", this);
		var val = parseInt(inp.attr("value"));

		$("a", this).click(function() {
			val = parseInt(inp.attr("value"));
			if (this.className == "up") {
				inp.attr("value", val + 1);
			}
			else {
				if (val > 1) {
					inp.attr("value", val - 1);
				}
				else {
					inp.attr("value", 0);
				}
			}
		});
	});

	$(".table table .select a").click(function() {
		calculatePrice();
		getPriceLabel(this, 0);
	});

	$(".table table .select input").focus(function() {
		var len = this.value.length;
		if (this.setSelectionRange) {
			this.focus();
			this.setSelectionRange(0, len);
		}
		else if (this.createTextRange) {
			var range = this.createTextRange();
			range.collapse(true);
			range.moveEnd('character', len);
			range.moveStart('character', 0);
			range.select();
		}
	})
	$(".table table .select input").keyup(function(e) {
		var val = parseInt(this.value, 10);

		if (val) {
			getPriceLabel(this, -100);
			calculatePrice();
		}
		else {
			this.value = 0;
		}
	});
    calculatePrice();
    //alert(price);
    $('#settings-button').click(function(){
        var modules = '';
        $('tr.checked').each(function(){
            modules += $(this).attr('nid') + ',';
        });
        $('tr.disabled').each(function(){
            modules += $(this).attr('nid') + ',';
        });

		var numerical_modules = '';
		$('div.table table.norol tr').each(function(){

			var col  = $(this).find(".select input").val();
			var pr = $(this).find("td.price strong").text();
			if (col&&col>0){
				//price += col*pr;
				numerical_modules +=  $(this).attr('nid')+'_'+col+';';
			}
			//alert("col" + col);
			//alert("price" + pr);
		});

        $('#hiddenform input[name=modules]').val(modules);
		$('#hiddenform input[name=numerical_modules]').val(numerical_modules);

        $('#hiddenform').submit();
        //alert(modules);
    });
    $("#left-menu a").each(function() {
		var aH = $(this).height();
		var sH = $("span", this).height();
		$("span", this).css("top", (aH - sH)/2 + "px");
		var wbH = $("#demo-items").height();
		var lmH = $("#left-menu").height();

		if (lmH > wbH) {
			$("#demo-items").height((lmH + 30) + "px");
		}

		$(this).click(function() {
			if (this.className != "act") {
				var links = $("#left-menu a");
				var aIndex = links.index(this);
				var items = $("#demo-items .demo-item");

				links.removeClass("act");
				this.className = "act";
				items.hide().eq(aIndex).show();



			}
		})
	});
    $('.promo-button').click(function(){
        var a = $("#left-menu a.act");

         var promo_video = a.attr('promo_video');
         var promo_text = a.attr('promo_text');
         var promo_time = a.attr('promo_time');

         $('span.video-description').text(promo_text);
         $('div.hdr span.blue').text(promo_time);

         $(".flash").html('<a href="/'+promo_video+'" style="display:block;width:640px;height:385px;" id="player"></a>');
         flowplayer("player", "/sites/default/files/flowplayer-3.2.4.swf");
    });
    

    $("#contacts .submit").live('click',function(){
		 
        $.post("/onlineformprocess", $("#contacts form").serialize(), function(html){
            //alert(html);
            $("#contacts").html(html);
        });
		return false;
    });

	$(".table table tr").hover(
		function() {
			$(".h-ico", this).show()
		},
		function() {
			$(".h-ico", this).hide()
		}
	);

    $("#faqform .submit").live('click',function(){
        $.post("/faqform", $("#faqform form").serialize(), function(html){
            if(html == ''){
               closePopup('faqform');
               // getPopup('faqformsuccess');
                location.href='/faq-request-result';
            } else {
                $("#faqform .faqform").html(html);
            }
        });
		return false;
    });

    $('div.licence .submit').click(function(){
        if($('div.license .cbx').hasClass('cbx-checked')){
            $('#license-checkbox').val('1');
            //$('div.license .e').show();
        } else{
            $('#license-checkbox').val('');
            //$('div.license .e').hide();
        }


            

        $('div.licence form').submit();
        return false;
    });


    $('.settings .h-ico').click(function(){
        var position = $(this).offset();
        //alert(position.top);
        var module_id = $(this).attr('mid');
        var p = 'description_' + module_id;
        var pp = p + '_picture'; 
        //$('#description .popup-content').html('<div style="text-align:center;padding:30px 0 30px 0">Загрузка ...</div>');
        getPopup2(p);
        $('#'+p+' .popup-content').load('/moduledescription/?nid='+module_id, function() {

            //$('#description').css('margin-top', position.top - 100);
            $('#' + p).css('margin-left', 0);
            $('#' + p).center();
            $('#' + p).css('left', '125px');

            var t = $('#' + p).css('top');
            var tt = parseInt(t);
            tt = tt - 100;
            $('#' + p).css('top', tt + 'px');

            //window.location = '/settings/#top2';
            $('#description-picture .popup-content').load('/moduledescriptionpicture/?nid='+module_id, function() {
                //$('#description .lightbox').lightBox();
                $('#'+p+' .popup-content .small_screenshot img').click(function(){
                    getPopup2('description-picture');
                    $('#description-picture').css('margin-left', 0);
                    $('#description-picture').center();
                });
            });
        });




    });
   
    $("#left-menu a").each(function() {
    		var aH = $(this).height();
    		var sH = $("span", this).height();
    		$("span", this).css("top", (aH - sH)/2 + "px");
    		var wbH = $("#demo-items").height();
    		var lmH = $("#left-menu").height();
    		
    		if (lmH > wbH) {
    			$("#demo-items").height((lmH + 30) + "px");
    		}
    		/*
    		$(this).click(function() {
    			if (this.className != "act") {
    				var links = $("#left-menu a");
    				var aIndex = links.index(this);
    				var items = $("#demo-items .demo-item");
    				
    				links.removeClass("act");
    				this.className = "act";
    				items.hide().eq(aIndex).show();
    			}
    		})  */
    	});



});

$(window).resize(function() {
	cWidth = getClientWidth() + 100;
})

function calculatePrice(){
    price = 0;
     $(".cbx").each(function() {
         var obj = $(this);
        if (obj.hasClass("cbx-checked")||obj.hasClass("cbx-disabled")) {
            price += (+$(this).attr('price') ) || 0;
        }        
       // price += parseInt($(this).attr('price'));
    });

	$('div.table table.norol tr').each(function(){

		var col  = $(this).find(".select input").val();
		var pr = $(this).find("td.price strong").text();
		if (col&&col>0){
			
			price += col*pr;
		}
		//alert("col" + col);
		//alert("price" + pr);
	});

    $('.abonplata span').html(price + '<strong>€</strong>');
    $('#price-lbl p').html('<strong>'+ price +'</strong>' + '€');
}

function AddEvent(obj, type, fn) {
	if (obj.addEventListener)
		obj.addEventListener(type, fn, false);
	else if (obj.attachEvent)
		obj.attachEvent( "on"+type, fn );
}

function isChildNode(elem, sell) {
	for (var childItem in elem.childNodes) {
		if (elem.childNodes[childItem].nodeType == 1) {
			if (elem.childNodes[childItem] == sell)
				return true;
			else if (isChildNode(elem.childNodes[childItem], sell))
				return true;
		}
	}
	return false;
}


var idx = 0;
var curItem;
var timeId;



function sliderInit() {
	var items = $("#slider .items li").css({left: cWidth + "px"});
	curItem = items.eq(0).css({left: "0px"}).addClass("cur-item");
	var bg = $("#content-td");
	var buttons = $("#slider .numbers a");

	$("#slider .prev").hover(
		function() {
			$(this).addClass("p-rol");
		},
		function() {
			$(this).removeClass("p-rol");
		}
	).click(function() {clearInterval(timeId); slide("prev")});

	$("#slider .next").hover(
		function() {
			$(this).addClass("n-rol");
		},
		function() {
			$(this).removeClass("n-rol");
		}
	).click(function() {clearInterval(timeId); slide("next")});;

	buttons.click(function() {
		var el = $(this);
		clearInterval(timeId);
		if (!el.hasClass("act")) {
			var elIdx = el.text() - 1;
			slideTo(idx, elIdx);
			buttons.removeClass("act");
			el.addClass("act");
		}
	});

	function slideTo(curIdx, nextIdx) {
		if (curIdx > nextIdx) {
			bg.removeAttr("class");
			bg.addClass(items.eq(nextIdx).attr("class"));
			curItem.animate({left: cWidth + "px"}, 300, function() {
				curItem = items.eq(nextIdx);
				curItem.css({left: (-1)*cWidth + "px"}).animate({left: "0px"}, 300, function() {
					items.removeClass("cur-item");
					curItem.addClass("cur-item");
				});
			});
			idx = nextIdx;
		}
		else {
			bg.removeAttr("class");
			bg.addClass(items.eq(nextIdx).attr("class"));
			curItem.animate({left: (-1)*cWidth + "px"}, 300, function() {
				curItem = items.eq(nextIdx);
				curItem.css({left: cWidth + "px"}).animate({left: "0px"}, 300, function() {
					items.removeClass("cur-item");
					curItem.addClass("cur-item");
				});
			});
			idx = nextIdx;
		}
	}
	timeId = setInterval("slide('next')", 4000);
}

function slide(param) {
	var bg = $("#content-td");
	var items = $("#slider .items li");
	var buttons = $("#slider .numbers a");

	if (param == "next") {
		bg.removeAttr("class");
		if (idx == 5) {
			idx = 0;
		}
		else {
			idx++;
		}
		bg.addClass(items.eq(idx).attr("class"));
		curItem.animate({left: (-1)*cWidth + "px"}, 300, function() {
			buttons.removeClass("act").eq(idx).addClass("act");
			curItem = items.eq(idx);
			curItem.css({left: cWidth + "px"}).animate({left: "0px"}, 300, function() {
				items.removeClass("cur-item");
				curItem.addClass("cur-item");
			});
		});
	}
	else {
		bg.removeAttr("class");
		if (idx == 0) {
			idx = 2;
		}
		else {
			idx--;
		}
		bg.addClass(items.eq(idx).attr("class"));
		curItem.animate({left: cWidth + "px"}, 300, function() {
			buttons.removeClass("act").eq(idx).addClass("act");
			curItem = items.eq(idx);
			curItem.css({left: (-1)*cWidth + "px"}).animate({left: "0px"}, 300, function() {
				items.removeClass("cur-item");
				curItem.addClass("cur-item");
			});
		});
	}
}


function getClientWidth() {
    //var t = 'CSS1Compat' && !window.opera ? '1' : '2';
    //alert(t);
	//return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
    return $(window).width();
}

function getPopup(popId) {
	$("#overlay").css({height: getDocumentHeight() + "px"}).show();
	$("#" + popId).show();
}

function getPopup2(popId) {
	$("#overlay").css({height: getDocumentHeight() + "px"}).show();
	$("#" + popId).slideUp().fadeIn('slow');
}

function closePopup(popId) {
	$("#overlay, #" + popId).hide();
}
function closePopup2(popId) {
	$("#" + popId).hide();
}
function getViewportHeight() {
	return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;
}

function getClientHeight() {
	return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
}

function getDocumentHeight() {
	return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight, getViewportHeight());
}

function getElementPosition(elem) {
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;

    var l = 0;
    var t = 0;

    while (elem) {
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }

    return { "left": l, "top": t, "width": w, "height": h };
}

