// JavaScript Document
// Global variables
var m_xmlHttp;
var m_page;
var m_lang = (window.location.pathname.match(/en/)) ? './en/' : './';



//Basic
function $(id)
{
	return document.getElementById(id);
}

//AJAX
function CreateAjaxObject()
{	
	try
	{  // Firefox, Opera 8.0+, Safari  
	  	m_xmlHttp=new XMLHttpRequest();  
	}
	catch (e)
	{  // Internet Explorer  
		try
		{    
			m_xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
		}
	  	catch (e)
		{    
			try
		  	{      
				m_xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");      
			}
			catch (e)
			{      
				alert("Your browser does not support AJAX!");      
				return false;      
			}    
		}  
	}  
}

function GetPage(str,id,type,notrack)
{
  //console.log(m_lang);
	var sUrl;
	CreateAjaxObject();
	
	if (id != null)
	{
		sUrl = './getpage.php?page=' + str + '&id=' + id + '&comment_type=' + type;
	}
	else
	{
		sUrl = './getpage.php?page=' + str;
	}
	m_page = str;
	
	m_xmlHttp.onreadystatechange=stateChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
	/* 
	Google analytics koda za sledenje posameznim stranem, kljub Ajax-u
	dodal: Vanja
	*/
	if(typeof(notrack)=='undefined'){ GAtrack(sUrl); }
	//pageTracker._trackPageview(sUrl); - ni več v uporabi, preseljeno v GAtrack funkcijo
}

function GetContentByYear(page,year)
{
	CreateAjaxObject();

	var sUrl = "./getpage.php?page=" + page + "&year=" + year;
	
	m_xmlHttp.onreadystatechange=stateChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateChanged() 
{ 
  
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{
 		$('content').innerHTML = m_xmlHttp.responseText;
		
 		try{ supersleight.run(); } catch(e){}
 		
		if (m_page == 'default')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/01_uvodnastran.jpg)';
		}
		else if (m_page == 'kdoSmo')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/02_kdosmo.jpg)';
		}
		else if (m_page == 'glasba')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/03_glasba.jpg)';
		}
		else if (m_page == 'koncerti')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/04_koncerti.jpg)';
		}
		else if (m_page == 'novice')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/05_novice.jpg)';
			//$j('#news_wrapper').trigger('init');
			initNews();
			//console.log('returned novice');
			
		}
		else if (m_page == 'foto')
		{
			//$('content').style.backgroundImage = 'url(img/ozadja/07_foto.jpg)';
			$j('.gallery').trigger('init');
		}
		else if (m_page == 'trac')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/06_trac.jpg)';
		}
		else if (m_page == 'mnenja')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/08_mnenja.jpg)';
		}
		else if (m_page == 'poucno')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/09_poucno.jpg)';
		}
		else if (m_page == 'povezave')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/10_povezave.jpg)';
		}
		else if (m_page == 'mediji')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/11_press.jpg)';
		}
		else if (m_page == 'kontakt')
		{
			$('content').style.backgroundImage = 'url(img/ozadja/12_kontakt.jpg)';
		}
 	} 
}

// linki novice
function GetNews(id,lang)
{
	CreateAjaxObject();

	var sUrl = "./include/"+lang+"/getnews.php?news=" + id;
	
	m_xmlHttp.onreadystatechange=stateNewsChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateNewsChanged() 
{ 
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{ 
 		$('news').innerHTML = m_xmlHttp.responseText;
 	} 
}

// linki trac
function GetGossip(id,lang)
{
	CreateAjaxObject();

	var sUrl = "./include/"+lang+"/getgossip.php?gossip=" + id;
	
	m_xmlHttp.onreadystatechange=stateGossipChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateGossipChanged() 
{ 
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{ 
 		$('gossip').innerHTML = m_xmlHttp.responseText;
 	} 
}
// linki povezave
function GetLink(id,lang)
{
	CreateAjaxObject();

	var sUrl = "./include/"+lang+"/getlink.php?link=" + id;
	
	m_xmlHttp.onreadystatechange=stateLinkChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateLinkChanged() 
{ 
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{ 
 		$('links').innerHTML = m_xmlHttp.responseText;
 	} 
}
//linki slovar
function GetGlossary(id)
{
	CreateAjaxObject();

	var sUrl = "./getglossary.php?glossary=" + id;
	
	m_xmlHttp.onreadystatechange=stateGlossaryChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateGlossaryChanged() 
{ 
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{ 
 		$('glossary').innerHTML = m_xmlHttp.responseText;
 	} 
}

//linki kdo smo
function GetWhoweare(lang,id)
{
	var sUrl;
	CreateAjaxObject();
	
	if (id != null)
	{
		sUrl = "./include/"+lang+"/getwhoweare.php?member=" + id;
	}
	else  
	{
		sUrl = "./include/"+lang+"/getwhoweare.php";
	}
	
	m_xmlHttp.onreadystatechange=stateMemberChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateMemberChanged()
{ 
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{ 
 		$('whoweare').innerHTML = m_xmlHttp.responseText;
 	} 
}

//linki komentarji
function GetComment(id,type,lang)
{
	CreateAjaxObject();

	var sUrl = "./include/"+lang+"/getcomment.php?comment=" + id + "&type=" + type;
	
	m_xmlHttp.onreadystatechange=stateCommentChanged;
	m_xmlHttp.open("GET", sUrl, true);
	m_xmlHttp.send(null);
}

function stateCommentChanged()
{ 
	if (m_xmlHttp.readyState==4 || m_xmlHttp.readyState=="complete")
 	{ 
 		$('comment').innerHTML = m_xmlHttp.responseText;
 	} 
}

//function SetContentBackground(path)
//{
//	$('content').style.background-image = path;
//}

//
function SetFunny(id)
{
	$(id).src = $(id).src.split("1")[0] + "2.jpg";
	$(id).alt = $(id).alt.split("1")[0] + "2.jpg";
}

function UnSetFunny(id)
{
	$(id).src = $(id).src.split("2")[0] + "1.jpg";
	$(id).alt = $(id).alt.split("2")[0] + "1.jpg";
}

//Rollover images:
function MM_swapImgRestore() { //v3.0
 	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//popup function
function PopUp(url,x,y) {
	newwindow=window.open(url,'name','height='+x+',width='+y);
	if (window.focus) {newwindow.focus();}
	return false;
}
function PopUpAudition(url,x,y) {
	newwindow=window.open(url);
	if (window.focus) {newwindow.focus();}
	return false;
}

function GAtrack(url){
  try{ 
      pageTracker._trackPageview(url); 
    } 
    catch(e){ }
}

function GAtrackEvent(category, action, optional_label, optional_value){
  try {
  pageTracker._trackEvent(category, action, optional_label, optional_value);
  GAtrack('/' + category +'/'+ action +'/'+ optional_label);
  }
  catch(e){ }
}


function openLyrics(song){
  lyricsUrl='/media/lyrics/'+song+'.html';
  $j.ajax({
    url: lyricsUrl,
    success: function(msg){
      $j('#lyrics').html(msg).css('display','block');
      $j('#lyrics #close').click(function(){$j('#lyrics').css('display','none');});
    }
  });
   
}
/*
 * @author: Vanja D. 
 * Adds "active" class to an element and removes it from it's siblings.
*/
function activateAmongSiblings(){
    $j(this).parent().find('.active').removeClass('active');
    $j(this).addClass('active'); 
}





$j('#news_wrapper').live('init', initNews);

$j('#article').live('update', function(){
  moreButtonInit('#comments', 800);
  window.updater.article = false;
});

$j('#news_wrapper a[rel=#article]').live('click',getNews);


function initNews(){
  
  moreButtonInit('#latest_comments ul',250);
  moreButtonInit('#article_index ul', 256);
  moreButtonInit('#comments',800);
  window.updater = { article: false, latestComments:false };
  //console.log('initnews');
  //$j('#news_wrapper a[rel=#article]').bind('click',getNews);
  if(window.location.hash=="#comments"){
			  try {
			    window.location.hash="#";
  			  $j('#content, body').scrollTo($j('#comments'), 1000, {easing:'swing', offset:{ top:-100}});
  			  //$j('#content').scrollTo($j('#comments'), 1000, {easing:'swing', offset:{ top:-100}});
		    }catch(e){}
  		}
  else {
  		  $j('#content, body').scrollTo('0',500);
  		  
  		  //$j('#content').scrollTo('0',500);
  		} 
}

function periodicalUpdate(){
  //console.log('periodical update fired');
  if ($j('#news_wrapper').size()>0){
    
    
    //initial values
    var objNotation;
      if ($j('#article .jsonData').size() && (typeof updater.article == 'undefined' || updater.article==false)){
        objNotation = '(' + $j('#article .jsonData').html() + ')';
        $j('#article .jsonData').remove();
        try { updater.article= eval(objNotation); } catch(e){return false;}
      }
      if ($j('#latest_comments .jsonData').size() && (typeof updater.latestComments == 'undefined' || updater.latestComments==false)){
        objNotation = '(' + $j('#latest_comments .jsonData').html() + ')';
        $j('#latest_comments .jsonData').remove();
        try { updater.latestComments = eval(objNotation); } catch(e){return false;}
      }
    
  var str = window.location.pathname + 'getpage.php?page=novice&target=periodicalUpdater';
  
  $j.ajax({
    cache: false,
    url : str,
    dataType: 'json',
    success : parsePeriodicalUpdate,
    data: {   latest_comments_since: updater.latestComments.last_updated,
              article_comments_since: updater.article.last_updated,
              article_id: updater.article.article_id
                   },
    type: 'GET'
  });
  
  }
}

function parsePeriodicalUpdate(data){
  //console.log(data,updater);
 if (data.latestComments){
   updater.latestComments.last_updated = data.request_time;
   $j('#latest_comments ul').prepend(data.latestComments);
   moreButtonInit('#latest_comments ul');
 }
 if (data.article){
   updater.article.last_updated = data.request_time;
   $j('ul#comments').prepend(data.article);
   moreButtonInit('ul#comments');
 }
 if(data.article || data.latestComments){
   $j('#latest_comments .ajaxNew, #comments .ajaxNew ').slideDown('slow');
   GAtrackEvent('interactions','real-time comment update','news_'+updater.article.article_id);
 }
  
}

jQuery(function(){ 
  window.periodicalUpdateInterval = setInterval(periodicalUpdate, 18000); 
  window.updater = { article:false, latestComments:false } });


function getNews(e){
  
  window.location.hash = "#";
  e.preventDefault();
  if ($j(this).attr('href').match(/^(.+)#(.+)$/)){
    url = RegExp.$1;
    hashTarget=RegExp.$2;
    window.location.hash = "#scrollTo" + hashTarget;
  }
  else {
    url = $j(this).attr('href');
    hashTarget = '#scrollToarticle';
  }
  
  $j('#article').load(url, loadNews);
  
}

function loadNews(a,c){
    $j('#article').trigger('update');
    if (window.location.hash.match(/#scrollTo(.+)$/)){
      //target = "#"+RegExp.$1;
      try {
      var scrollto="#" + RegExp.$1;
      if (/comment_\d/.test(scrollto)){
        moreButtonExpandTo.call($j('#comments .more_button')[0], scrollto);
      }
      $j('#content, body').scrollTo(scrollto, 1500, {easing:'swing', offset:{ top:-100}});
      window.location.hash ='#';
      }catch(e){}
    }
    else {
      //$j('#content, body').scrollTo('0',500);
    }
  
}
  
  
function postComment(button){
  var form = $j(button).parents('form');
  var str = form.serialize();
  if (typeof postingComment=='undefined' || !postingComment){

  form.find('input[name=submit], textarea').attr('disabled', 'disabled').addClass('loading');
    $j.ajax({
      cache: false,
      type: 'POST',
      url: form.attr('target'),
      data: str,
      dataType: 'json',
      success: parsePostComment,
      error: parsePostComment,
      _element: form
    });
  }
}


function parsePostComment(data,status){
  //console.log(data,status);
  if (status=='success'){
    if (data.status=='success'){
      $j('#new_comment input[name=submit], #new_comment textarea').removeAttr('disabled').removeClass('loading');
      this._element.find('.errors').html('');
      $j('#new_comment textarea').val('');
      periodicalUpdate();
      GAtrackEvent('interactions', 'comment', data.news_id);
      $j('#new_comment_wrapper').slideToggle('fast');
      postingComment=false;
    }
    else if (data.status=='failed'){
        this._element.find('.errors').html(data.errors).slideDown('slow');
        setTimeout(function(){ 
          $j('#new_comment input[name=submit], #new_comment textarea').removeAttr('disabled').removeClass('loading');
          postingComment=false;
          $j('#new_comment .errors').slideUp('slow'); }, 3000);
    }
  }
  else {
    $j('#new_comment input[name=submit], #new_comment textarea').removeAttr('disabled').removeClass('loading');
      this._element.find('.errors').html('Unknown error. Please try again.').slideDown(1000).fadeTo(800,0.8).fadeTo(200,1.0).slideUp('fast');
      postingComment = false;
  }
  
  
}

function loginUser(form){
  
  var str = $j(form).serialize();
  $j(form).find('[name=berry]').val('');
  $j(form).find('input').addClass('loading');
  $j.ajax({
    cache: false,
    type: 'POST',
    url: $j(form).attr('target'),
    data: str,
    dataType: 'json',
    success: parseLoginUser,
    error: parseLoginUser,
    _element: form
  }
  );
}



function parseLoginUser(data){ //console.log(data);
      $j(this._element).find('.loading').removeClass('loading');
      if (data.status=='success'){
        $j('#login_user_wrapper').slideUp('fast');
        $j('#login_user').hide();
        $j('#new_comment [name=name]').val(data.nickname).attr('disabled','disabled');
        $j('#new_comment [name=email], #new_comment [name=location]').prev('label').andSelf().slideUp('fast');
        $j('#comment_comment').prev('label').append('<img src="'+data.thumb+'" alt="tvoja slika?" style="padding: 20px;" />');
        $j('#logout_button').show();
      }
      else if (data.status=='failed'){
        $j(this._element).find('.errors').fadeIn(200).html(data.error).fadeTo(2000,0.7).fadeOut(700);
        $j(this._element).find('input:first').focus();
      }
}

function logoutUser(button){
  var url = $j('#login_user').attr('target')+'&target=logout_user';
    $j.ajax({
    cache: false,
    url: url,
    dataType: 'json',
    success: function(data){ if (data.status=='success'){
        $j('#login_user_wrapper').slideDown('fast');
        $j('#new_comment [name=name]').val('').removeAttr('disabled');
        $j('#new_comment [name=email], #new_comment [name=location]').prev('label').andSelf().slideDown('fast');
        //$j('#comment_comment').prev('label').remove('img');
        $j('#logout_button').hide();
        $j('#login_user input[name=goo],#login_user input[name=berry]').val('');
        $j('#new_comment img').remove();
      }}
  }
  );
}
  
function moreButtonResize(e){
  
  var data = $j(this).data('MBdata');
  var container = $j(this).parent();
  var newheight;

  
  if (data.reached_end){
    //console.log('return');
    $j(container).animate({ height: data.original_height}, 700);
    $j('#content').scrollTo('-='+(data.current_height - data.original_height)+'px', 700);
    data.current_height = data.original_height;
    data.reached_end = false;
    $j(this).html('more..').addClass('more').removeClass('less');
  }
  else {
  
    newheight = Math.round($j(container).innerHeight()+data.move_by);
      //console.log($j(container).find('>:last'), $j(container).find('>:last').outerHeight(true));
      //console.log('resize');  
      if(newheight+data.move_by*0.3 > data.maxheight ){
        //console.log('end');
        newheight = data.maxheight;
        data.reached_end= true;
        $j(this).html('less..').addClass('less').removeClass('more');
      }
      //console.log(container, newheight);
      var scroll_by = newheight - data.current_height;
      
      $j(container).animate({ height: newheight}, 400);
      //$j('#content').scrollTo('+='+scroll_by+'px',420);
      data.current_height = newheight;
    }
  $j(this).data('MBdata', data);
}

function moreButtonInit(element, height){
  
      if (OldData = $j(element).find('.more_button').data('MBdata')){
        OldData.maxheight= Math.round(
          $j(element).find('>:last').position().top +
          $j(element).find('>:last').outerHeight(true) + 
          $j(element).find('.more_button').outerHeight(true)
          );
          $j(element).find('.more_button').data('MBdata', OldData);
          return;
      }
  var tag = $j(element).find('>:last').attr('tagName');
  var width = Math.round($j(element).innerWidth()/2);
  var offset = Math.round(width/2);
  var MBdata = {};
  //console.log(Math.round($j(element).find('>:last').position().top - $j(element).position().top));
     //console.log($j(element).outerHeight());
     
     MBdata.maxheight =  $j(element).innerHeight();
          //= Math.round(
          //$j(element).find('>:last').position().top +
          //$j(element).position().top +
          //$j(element).find('>:last').outerHeight(true) + 
          //$j(element).find('.more_button').outerHeight(true)
          //$j(element).find('.more_button').outerHeight(true));
  if (MBdata.maxheight<=height){ return false; }
   
  $j(element).css('display', 'block').css('height',height)
             .css('position','relative').css('overflow','hidden')
             .prepend('<'+tag+'>more..</'+tag+'>').find('>:first')
             .addClass('more_button more').click(moreButtonResize);
  MBdata.maxheight += 10 + $j(element).find('.more_button').outerHeight(true);
      //console.log(    
      //    $j(element).find('>:last').position().top,
      //    $j(element).position().top ,
      //    $j(element).find('>:last').outerHeight(true) ,
      //    $j(element).find('.more_button').outerHeight(true)
      //  );
      

     //MBdata.move_by = Math.round(Math.sin(MBdata.maxheight/((height+MBdata.maxheight)))*height);
     MBdata.reached_end = false;
     MBdata.original_height = height;
     MBdata.current_height = height;
     
     var ratio = MBdata.maxheight / MBdata.original_height;
     MBdata.move_by = (ratio<3) ? 
                    MBdata.maxheight - MBdata.current_height :  
                    Math.round(((MBdata.maxheight - MBdata.current_height)*ratio*2)/Math.round(Math.pow(ratio,2)));
  
  
  $j(element).find('.more_button')
             .data('MBdata', MBdata)
             .css('width',width)
             //.css('height', '10px')
             .css('zIndex','20')
             .css('position','absolute')
             .css('left','50%')
             .css('bottom','0')
             .css('marginLeft','-'+offset+'px');

}

function moreButtonExpandTo(el){
 var data = $j(this).data('MBdata');
  var container = $j(this).parent();
  var newheight;
  //console.log(data);
  
  if (data.reached_end){
    return true;
  }
  else {
  //console.log(($j(el).position()));
    newheight = Math.round($j(el).position().top + $j(el).outerHeight(true)*4);
      //console.log($j(container).find('>:last'), $j(container).find('>:last').outerHeight(true));
   // console.log('resize');  
   if (newheight < data.current_height){
     return true;
   }
      if(newheight+data.move_by*0.3 > data.maxheight ){
        //console.log('end');
        newheight = data.maxheight;
        data.reached_end= true;
        $j(this).html('less..').addClass('less').removeClass('more');
      }
      
      //console.log(container, newheight);
 //     var scroll_by = newheight - data.current_height;
      
      $j(container).animate({ height: newheight}, 400);
      //$j('#content').scrollTo('+='+scroll_by+'px',420);
      data.current_height = newheight;
    }
  $j(this).data('MBdata', data); 
}


$j('#concerts li.with_description').live('click',function(){
  
  if ($j(this).hasClass('active')){
    $j(this).removeClass('active').find('.description').slideUp('slow');
  }
  else {
    $j(this).parent().find('.active').removeClass('active').find('.description').slideUp('fast');
    $j(this).addClass('active').find('.description').slideDown('fast');
  }
})