﻿

function setGradeBg(el, grade)
    {
        if(grade <= 10)
            el.style.backgroundColor = "#ffe9e9";
        else if(grade >= 90)
            el.style.backgroundColor = "#e9ffeb";
        else
            el.style.backgroundColor = "#ffffff";
    }
    
function disableSelection(element) {
   
    element.onselectstart = function() {
        return false;
    };
    element.unselectable = "on";
    element.style.MozUserSelect = "none";
}
    
    function onGradeSucceded(response, arg, userId)
    {
        $get('gN').innerHTML = parseInt($get('gN').innerHTML) + 1;
        $get('gP').innerHTML = response;
        $get('ratingBarBox').style.display = 'none';
        
//       if(userId == anonymousID)
//        {
//            showAlert("Za ocjenjivanje postova potrebno se ulogirati.");
//            setInitGrade();
//            return;
//        }
//       if(response.isValid)
//       {
//            if(!response.isModerator)
//            {
//                var ucHid = $get("hidUC" + arg[0].toString());
//                var newUC = parseInt(ucHid.value) + 1;
//                ucHid.value = newUC.toString();
//                if(newUC > 1)
//                {
//                    arg[3].style.backgroundColor = "#dcdcdc";
//                    arg[3].parentNode.title  = arg[3].title = arg[2].title = "Već ste iskoristili maksimalne dvije promjene ocjene na ovoj poruci.";
//                }
//            }
//                
//            initialGrade = arg[1];
//            arg[2].style.background = "url('" + httpRoot + "img/ratingBarSliderRated2.gif') no-repeat left top;";
//            
//            var ug = $get("ug" + arg[0].toString());
//            var mg = $get("mg" + arg[0].toString());
//            
//            if(response.UsersGrade == null)
//                ug.innerHTML = "-";
//            else
//            {
//                ug.innerHTML = response.UsersGrade.toString() + "%"; 
//                setGradeBg(ug.parentNode, response.UsersGrade);    
//            }
//                
//            if(response.ModeratorsGrade == null)
//                mg.innerHTML = "-";
//            else
//            {
//                mg.innerHTML = response.ModeratorsGrade.toString() + "%";        
//                setGradeBg(mg.parentNode, response.ModeratorsGrade);
//            }  
//            
//            getGradeBgTimer().set_enabled(true);  
//            
//        }   
//        else
//        {
//            if(arg[2] && arg[3])
//            {
//                arg[3].style.width = initialGrade.toString() + 'px';
//                arg[2].innerHTML = initialGrade.toString() + '%';
//            }
//            
//            Array.add(invalidSlidersArray, arg[2].id);
//            alert24();
//        }
    }
        
    function setGrade(postID, grade, currSlider, currPSlider)
    {
        $get("articleSlider").style.background = "url('" + httpRoot + "img/ratingBarSlider.gif') no-repeat left top;"; 
        $get("articleSlider").style.background = "url('" + httpRoot + "img/ratingBarSliderRated2.gif') no-repeat left top;";       
        new MPortal.Article(articleId).SetArticleGrade([grade],onGradeSucceded, onSliderFailed);
        var cookie = Get_Cookie('voted');
        
        if(cookie != null)
            Set_Cookie('voted', cookie + ',' + articleId, 7 * 60 * 60 * 24 , '/','','');
        else
            Set_Cookie('voted', articleId, 7 * 60 * 60 * 24 , '/','','');
    }
    
    
    function Set_Cookie( name, value, expires, path, domain, secure ) 
    {
    // set time, it's in milliseconds
    var today = new Date();
    today.setTime( today.getTime() );

    /*
    if the expires variable is set, make the correct 
    expires time, the current script below will set 
    it for x number of days, to make it for hours, 
    delete * 24, for minutes, delete * 60 * 24
    */
    if ( expires )
    {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );

    document.cookie = name + "=" +escape( value ) +
    ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + 
    ( ( path ) ? ";path=" + path : "" ) + 
    ( ( domain ) ? ";domain=" + domain : "" ) +
    ( ( secure ) ? ";secure" : "" );
    }

    function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
}			

    function onSliderFailed(response,args,userId)
    {
        if(userId == anonymousID)
        {
            showAlert("Za ocjenjivanje postova potrebno se ulogirati.");
            setInitGrade();
            return;
        }
        onFailure(response,args,userId);
    }
    
    function sliderDown(args)
    {
         
        if(Array.contains(invalidSlidersArray, args.target.id))
        {
              alert24();
              return;
        }
        
        currY =  args.clientY;
        

        initialGrade = parseInt(args.target.innerHTML);
        currSlider = args.target;
        
        
        
        currPSlider = args.target.parentNode;//$get("parent" + args.target.id);
       
                
        //if(parseInt($get("hidUC" + args.target.id.replace("slider","")).value) < 2)
            $addHandler(document, 'mousemove', onMouseMove);
    }
    
    
    function getSliderX()
    {
        var loc = Sys.UI.DomElement.getLocation(slidersArray[0].parentNode.parentNode);
        
        var posx = loc.x;
	    posx = posx + document.body.scrollLeft
		    + document.documentElement.scrollLeft;
    
       
       return posx;
    }
    
    function onMouseMove(args)
    {

        if(currY)
        {
            if(args.clientY > currY && (args.clientY - currY > 30))
            {
                setInitGrade();
                return;
            }
            else if(args.clientY < currY && (currY - args.clientY > 30))
            {
                setInitGrade();
                return;
            }
        }
        
        var w = args.clientX - getSliderX();

        if(w > 100)
        {
            w = 100;
        }
                    
        if(w < 0)
        {
            w = 0;  
        }
        
        if(w < -10 && w > 110)
          if(hasEvent(document, 'mousemove'))
            $removeHandler(document, 'mousemove', onMouseMove);
        
        if(currPSlider && currSlider)
        {
            currPSlider.style.width = w.toString() + 'px';
            currSlider.innerHTML = w.toString() + "%";
        }
        else
        {
          setInitGrade();
        }
        
        $get("parentslider").style.backgroundColor = "#DCDCDC"; 
        
    }
    
    
    function sliderUp(args)
    {
        
        var sliderX = getSliderX();
         //alert(sliderX);
//inicijalna ocjena - nepotrebno za clanak
//        if(args.clientX > sliderX + 40 || args.clientX < sliderX)
//          {
//             setInitGrade();
//             return;
//          }
            
        if(hasEvent(document, 'mousemove'))
                $removeHandler(document, 'mousemove', onMouseMove);
        
        if(args.target.id.startsWith("ratingBar") 
            || args.target.id.startsWith("parentslider") || args.target.id.startsWith("articleSlider") )
        {
            var postID;
            
            if(args.target.id.startsWith("ratingBar"))
                postID = parseInt(args.target.id.replace("ratingBar",""));
            else if(args.target.id.startsWith("parentslider"))
                postID = parseInt(args.target.id.replace("parentslider",""));

//            if(parseInt($get("hidUC" + postID).value) < 2)
//            {
                var grade = args.clientX - sliderX; //;
            
                if(grade > 100) grade = 100;
                
                if(grade < 1) 
                {
                    setInitGrade();
                    return;
                }
                
                var sl = $get("articleSlider");
                var psl = $get("parentslider");
                
                if(Array.contains(invalidSlidersArray, sl.id))
                {
                    alert24();
                    return;
                }
        
                psl.style.width = grade.toString() + 'px';
                sl.innerHTML = grade.toString() + "%";
                
                setGrade(postID, grade, sl, psl);
           // }
            return;
        }
        
        if(!args.target.id.startsWith("article"))
        {
            if(hasEvent(document, 'mousemove'))
                $removeHandler(document, 'mousemove', onMouseMove);
            return;
        }
        
        
        //var slider = args.target;
        var slider = $get('articleSlider');
        
        if(Array.contains(invalidSlidersArray, slider.id))
            {
                alert24();
                return;
            }
        
//        if(parseInt($get("hidUC" + slider.id.replace("slider","")).value) >= 2)
//                return;
            
        if(args.clientX > sliderX + 100)
        {
            slider.parentNode.style.width = '100px';
            slider.innerHTML = "100%";
        }
        else
        {   
            var w = args.clientX - sliderX;
            if(w < 1)
                w = 1;    
                
            slider.parentNode.style.width = w.toString() + 'px';
            slider.innerHTML = w.toString() + '%';
        }
        var grade = args.clientX - sliderX;
        if(grade > 100)
            grade = 100;
        
        if(grade > 0)    
            setGrade(parseInt(slider.id.replace("slider","")), grade, slider, slider.parentNode);
        else
        {
             setInitGrade();
             return;
        }
        
        if(hasEvent(document, 'mousemove'))
            $removeHandler(document, 'mousemove', onMouseMove);
            
        currSlider = null;
        currPSlider = null;
        
    }   
    
    function selectStart()
    {
        return false;
    }
     
    function setSliders()
    {
        var slider = $get('articleSlider');
        if (slider == null)
            return;
        var cookie = Get_Cookie('voted');
        if(cookie != null)
            {
            for(var val in cookie.split(','))
            {
                if(cookie.split(',')[val] == articleId)
                    $get('ratingBarBox').style.display = 'none';
            }
        }
        disableSelection(slider);
        if(true)//!isAnonymous())
        {
            slidersArray.push($get('ratingBar'));
            $addHandler(slidersArray[0], 'mousedown', sliderDown);
            $addHandler(document, 'mouseup', sliderUp);
        }
        
//        $addHandler($find('diggBox').get_element(), 'blur', shareDialog);
    }
    
    function getGradeBgTimer()
    {
        if(!gradeBgTimer)
        {
            gradeBgTimer = new Sys.Timer();
            gradeBgTimer.set_interval(2000);
            gradeBgTimer.add_tick(gradeBgTimerTicked)
        
        }
        
        return gradeBgTimer;
    }
   
    
    function gradeBgTimerTicked()
    {
        for(var gIndex in slidersArray)
            slidersArray[gIndex].style.background = "url('" + httpRoot + "img/ratingBarSlider.gif') no-repeat left top;";
            
        getGradeBgTimer().set_enabled(false);
    }
    
    function  setInitGrade()
    {
        if(currPSlider && currSlider)
        {
            currPSlider.style.width = initialGrade.toString() + 'px';
            currSlider.innerHTML = initialGrade.toString() + '%';
            
            if(hasEvent(document, 'mousemove'))
                $removeHandler(document, 'mousemove', onMouseMove);
        }
    }
   
   function alert24()
   {
        alert("Ne možete ocijeniti postove istog korisnika više od tri puta u 24 sata.");
   } 
    
    function clearSliders()
    {
        if(hasEvent(document, 'mouseup'))  
            $removeHandler(document, 'mouseup', sliderUp);
         
        if(hasEvent(document, 'mousemove'))
            $removeHandler(document, 'mousemove', onMouseMove);
            
        for(var gIndex in slidersArray)
                $clearHandlers(slidersArray[gIndex]);
    }
    
    var invalidSlidersArray = [];
    var slidersArray = new Array();
    var currY = null;
    var currSlider = null;
    var currPSlider = null;
    var initialGrade = null;
    var gradeBgTimer = null;
    var smallFont = false;
    var changeSize = smallerFont;
    
//
function smallerFont()
{
    changeSize = biggerFont;
    var fontLinkDOM = $get('fontSize');
    var elements = document.getElementsByTagName('p');
    for (el in elements)
    {
        if(elements[el].className == 'c5' || elements[el].className == 'c15')
        {
            elements[el].style.fontSize = 11 + 'px';
            elements[el].style.lineHeight = 18 + 'px';
        }
    }
    fontLinkDOM.innerHTML = 'Povećaj slova';
    smallFont = true;
}

function biggerFont()
{
    changeSize = smallerFont;
    var fontLinkDOM = $get('fontSize');
    var elements = document.getElementsByTagName('p');
    for (el in elements)
    {
        if(elements[el].className == 'c5')
        {
            elements[el].style.fontSize = 14 + 'px';
            elements[el].style.lineHeight = 22 + 'px';
        }
    }
    fontLinkDOM.innerHTML = 'Smanji slova';
    smallFont = false;
}

function sendMail()
{
    MPortal.Web.Email.SendEmail(['Mailing.aspx?Type=EmailArticle&Id=' + articleId + '&Sender=' +$get('userName').value,$get('recName').value,$get('senderName').value,'Preporuka'],createMailCallback,onFailure);
}

function createMailCallback(response)
{
   showAlert("Članak je poslan.");
   $find('SendArticleDialog').hide();
}

    
    Sys.Application.add_load(setSliders);
    Sys.Application.add_unload(clearSliders);   
    
    if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();


