// JavaScript Document
var elementPosition;           //// object which holdes position of the scrolling element from top of the whole document

var name = "#textPageMenu";    //// id diva koji se skroluje 
var menuYloc = null;           //// Y pozicija diva koji se skroluje u odnosu na div u kome se nalazi skrolabilni div

var scrollWinHeight;           //// visina diva koji se skroluje (u toku rada se stalno preracunava)
var scrollWinContainer;        //// visina kontejnera u kome se nalazi skrolabilni div
var offsetPX = 0;              //// pozicija diva koji se skroluje u odnosu na div u kome se nalazi
var scrollWinHeightOriginal;   //// original visina diva koji se skroluje
var divWithArticles;           //// Trenutna visina diva sa artiklima
var heightWithoutArticles;     //// Originalna visina diva bez artikala


$(document).ready(function() { 
    $('#cartButton').click(function(){
        var obj = $(this);
        
        if ($(this).next().hasClass('opened')) { ////ako je otvoren div u control panelu
            $(this).next().slideUp(500).removeClass('opened');   ////Zatvori taj div i skini opened klasu
            setTimeout(function() { ChangePosClose(); MeasureElements(); }, 500);

            $("#cartStrelica").removeClass('up');
            $("#cartStrelica").addClass('down');
        } else {
            var timeout = ChangePosOpen();
            
            if (timeout == 1) {
                setTimeout(function() { $(obj).next().slideDown(500).addClass('opened'); }, 500);
                setTimeout(function() { SetControlPanelHeight(); }, 1000);
            } else {
                $(obj).next().slideDown(500).addClass('opened');
                setTimeout(function() { SetControlPanelHeight(); }, 500);
            }

            $("#cartStrelica").removeClass('down');
            $("#cartStrelica").addClass('up');
        }
    });
									 
	////original size of floating div (when page is just loaded)
	SetControlPanelHeight();
									 
	////slide function
	Slide();
});

function checkCart() {
	if ($("#menuArea").hasClass('opened')) {
		
	} else {
		var timeout = ChangePosOpen();
		
		if (timeout == 1)
		{
		setTimeout(function() { $("#menuArea").slideDown(500).addClass('opened'); }, 500);
		setTimeout(function() { SetControlPanelHeight(); }, 1000);
		}
		else
		{
			 $("#menuArea").slideDown(500).addClass('opened');
			 setTimeout(function() { SetControlPanelHeight(); }, 500);
		}
		
		$("#cartStrelica").removeClass('down');
		$("#cartStrelica").addClass('up');	
	}
}

function ChangePosClose() {
    ////remeber old values
	var oldOffset          = offsetPX;
	var oldScrollWinHeight = scrollWinHeight; 
	var oldMenuLoc         = menuYloc;
	  
	  
	if ((oldOffset >= scrollWinContainer - scrollWinHeightOriginal - 2) && (parseInt($(document).scrollTop())!=0))  {
	    var offset = parseInt($(document).scrollTop())-elementPosition.top+20;
		if (offset < 0) offset = 0;
		offsetPX = offset;
	    offset = offset+"px";
	    $(name).animate({top:offset},{duration:500,queue:false});
	}
	
    MeasureElements();
}

function MeasureElements() {
    ////calculate new values
    if ($(name).css('top') != undefined) {
	    elementPosition = $('#contentText').offset();
	    menuYloc           = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px"))); 
	    scrollWinHeight    = parseInt($('#textPageMenu').height());
	    scrollWinContainer = parseInt($('#contentText').height());
	    divWithArticles    = parseInt($('#menuArea').height());	  
    }
}

function ChangePosOpen() {
    ////remeber old values
	var oldOffset          = offsetPX;         ///x px od vrha do skrolabilnog diva
	var oldScrollWinHeight = scrollWinHeight;  ///je visina zatvorenog diva
	var oldMenuLoc         = menuYloc;         ///y pozicija
	  
	if ((oldOffset + scrollWinHeightOriginal >= scrollWinContainer) && (parseInt($(document).scrollTop())!=0)) {
	    var offset = parseInt(scrollWinContainer - scrollWinHeightOriginal - 2);
		if (offset < 0) offset = 0;
		offsetPX = offset;
		
        if(offset > 0) {
	        offset = offset+"px";
			$(name).animate({top:offset},{duration:500,queue:false});
			return 1;
		} else {
		    return 2;
		} 
	} else {
	    return 0;  
	}
}

function Slide() {
    $(window).scroll(function () {						
        MeasureElements();	

        if ($(name).css('top') != undefined) {
            if (parseInt($(document).scrollTop()) > elementPosition.top) {
                offset = parseInt($(document).scrollTop())-elementPosition.top+20;
                if (offset+scrollWinHeight >= scrollWinContainer) { offset = scrollWinContainer - scrollWinHeight - 2; }
                if (offset < 0) offset = 0;
                offsetPX = offset;
                offset = offset+"px";
                $(name).animate({top:offset},{duration:500,queue:false});  
            } else {
                offset = 0;
                offsetPX = offset;
                offset = offset+"px";
                $(name).animate({top:offset},{duration:500,queue:false});
            }
        }
    });	
}

function SetControlPanelHeight() {
    MeasureElements();
    scrollWinHeightOriginal = parseInt($('#textPageMenu').height());	
	heightWithoutArticles = scrollWinHeightOriginal - divWithArticles;
}

function ChangePosBuy() {
    ////remeber old values
	var oldOffset          = offsetPX;
	var oldScrollWinHeight = scrollWinHeight;
	var oldMenuLoc         = menuYloc;
	  
	  
	if (oldOffset + scrollWinHeightOriginal > scrollWinContainer) {
	    var offset = parseInt(scrollWinContainer - scrollWinHeightOriginal - 2);
		if (offset < 0) offset = 0;
		offsetPX = offset;
	    offset = offset+"px";
	    $(name).animate({top:offset},{duration:500,queue:false});
	}
}

function getProperty(el, cssproperty, csspropertyNS){
    if (el.currentStyle)
        return el.currentStyle[cssproperty]
    else if (window.getComputedStyle){
        var elstyle=window.getComputedStyle(el, "")
        return elstyle.getPropertyValue(csspropertyNS)
    }
}

function showHeight(element){
    heightString = getProperty(document.getElementById("test"),"height","height");
    alert(heightString);
}

