// Ultrafan Wrapper JS.
// .avolver'11

var IsPlaying = false;
var aAllowedForms = new Array(
 'frm_login', 'frm_search', 'frm_profile_settings'
)
var aBrowseHistory = new Array()
var sCurrentPage = null;
var iPageIteration = 0;
var sTempSUrl = null;
var sTempMethod = null;
var ufanRegEx = /http:\/\/(www.)?ultrafan.ru\/(.*)/i;
const WRAP_METHOD_GET = 1;
const WRAP_METHOD_POST = 2;
const KEY_URL = 1;
const KEY_METHOD = 2;


jQuery('document').ready(function() {
 //ModifyLinks(); //disabled
 //ModifyForms();
 //HashHook();
 LiveTick();
});

function ModifyLinks() {
 jQuery.each(jQuery('a'), function(index, value) { 
  if (jQuery(value).attr("onClick") == undefined) {
   if (jQuery(value).attr('href') != undefined) {
    currURL = jQuery(value).attr('href').toString();
    currURLMatch = currURL.match(ufanRegEx)
    if (currURLMatch != null) {
     jQuery(value).attr("onClick", 'ClickMe(\'' + currURLMatch[2] + '\'); return false;');
    }
   }
  }
 });
 
 // microblogs patch
 var lsBlockStream = new lsBlockLoaderClass();
	window.addEvent('domready', function() { 
		lsBlockStream=new lsBlockLoaderClass();
	});
 if (window.lsBlockStream) { window.lsBlockStream.type.micro_stream = { url: aRouter['micro']+'ajaxblockstream/' }; }
}

function ModifyForms() {
 jQuery.each(jQuery('form'), function(index, value) {
  if (value.name != undefined) { sGotName = value.name; }
  else if (value.id != undefined) { sGotName = value.id; }
  else { sGotName = null; }
  if (sGotName) {
   if (jQuery.inArray(sGotName, aAllowedForms) !== false) {
    if (jQuery(value).attr('onSubmit') != undefined) { lastSubmit = jQuery(value).attr('onSubmit') + '; '; } else { lastSubmit = ''; }
    if (lastSubmit.search(/submitme\(this\)/i) < 0) {
     jQuery(value).attr('onSubmit', lastSubmit + 'SubmitMe(this); return false;');
    }
   }
  }
 });
}

function ClickMe(sUrl) {
 sTempSUrl = sUrl;
 sTempMethod = WRAP_METHOD_GET;
 jQuery.ajax({ url: '/' + sUrl, global: false, success: WrapPage });
}

function HashHook() {
 var sCurrentHash = window.location.hash;
 if (sCurrentHash.substr(1, 1) == ':' & sCurrentHash.length > 2) {
  sCurrentHash = sCurrentHash.substr(2);
  sTempSUrl = sCurrentHash;
  sTempMethod = WRAP_METHOD_GET;
  jQuery.ajax({ url: '/' + sCurrentHash, global: false, success: WrapPage });
 }
}

function SubmitMe(oForm) {
 sElementsOut = '';
 sElemOut = null;
 jQuery.each(oForm.elements, function(index, value) {
  //sElemType = jQuery(value).attr('type');
  if (jQuery(value).attr('type') == 'checkbox') {
   if (jQuery(value).attr('checked')) { sElemOut = jQuery(value).attr('name') + '=on'; }
  } else {
   if (jQuery(value).attr('value') != '') {
    sElemOut = jQuery(value).attr('name') + '=' + jQuery(value).attr('value');
   }
  }
  if (sElemOut != null) { sElementsOut = sElementsOut + sElemOut + '&'; }
  sElemOut = null;
 });
 if (jQuery(oForm).attr('method').toLowerCase() == 'post') { sPostType = 'POST'; sTempMethod = WRAP_METHOD_POST; } else { sPostType = 'GET'; sTempMethod = WRAP_METHOD_GET; }
 sElementsOut = sElementsOut.substr(0, sElementsOut.length - 1);
 if (oForm.action) { sTempSUrl = oForm.action; } else { sTempSUrl = sCurrentPage; console.log(sCurrentPage); }
 jQuery.ajax({ url: oForm.action, global: false, type: sPostType, data: sElementsOut, success: WrapPage });
}

function WrapPage(sData) {
 iStartPoint = sData.search(/<!-- Scheiße! -->/mg) + 17;
 iEndPoint = sData.search(/<!-- \/Scheiße... -->/mg);
 iUserStartPoint = sData.search(/<!-- Hund! -->/mg) + 14;
 iUserEndPoint = sData.search(/<!-- \/Hund... -->/mg);
 iTitleMatch = sData.match(/\<title\>(.*)\<\/title\>/i);
 if (sTempMethod == WRAP_METHOD_GET) { sAnchor = sTempSUrl.match(/#(.*)/i); }
 else { sAnchor = null; }
 if (sAnchor != null) { sAnchor = sAnchor[0]; }
 setTimeout(function() { 
   ModifyLinks(); 
   ModifyForms();
   if (sAnchor == null) {jQuery.scrollTo(jQuery('#header-top'), 800); }
   else { jQuery.scrollTo(jQuery('a[name=' + sAnchor.substr(1) + ']'), 800); }
  }, 500 ); 
 sCurrentPage = sTempSUrl;
 if (sCurrentPage.search(ufanRegEx) > -1) {
  sCurrURLMatch = sCurrentPage.match(ufanRegEx)
  if (sCurrURLMatch != null) { sCurrentPage = sCurrURLMatch[2]; }
 }
 var sCurrentPageHash = (sCurrentPage.substr(-1) == '/' ? sCurrentPage.substr(0, sCurrentPage.length - 1) : sCurrentPage);
 if (iPageIteration > 0) {
  if (aBrowseHistory[iPageIteration][0] != sCurrentPage) { iPageIteration++; aBrowseHistory[iPageIteration] = Array(sCurrentPage, sTempMethod); }
 } else { iPageIteration++; aBrowseHistory[iPageIteration] = Array(sCurrentPage, sTempMethod); }
 window.location.hash = ':' + sCurrentPageHash;
 sTempSUrl = null;
 sTempMethod = null;
 if (iTitleMatch != null) { document.title = iTitleMatch[1]; }
 //<script language="JavaScript" type="text/javascript" src="{cfg name='path.static.skin'}/js/cache_micro.js"></script>
 jQuery('#input_search').attr('value', 'Поиск'); 
 jQuery('#input_search').blur();
 jQuery('#userwrapper').html(sData.substr(iUserStartPoint, iUserEndPoint - iUserStartPoint));
 jQuery('#wrapper').html(sData.substr(iStartPoint, iEndPoint - iStartPoint));
}

function BeginPlaying() {
 jQuery("#livebutton").attr('src', 'http://ultrafan.ru/templates/skin/social/images/live_stop.png');
 jQuery("#livestatus").attr('src', 'http://ultrafan.ru/templates/skin/social/images/live_status.gif');
 jQuery("#livebutton").attr('onclick', 'StopPlaying()');
 jwplayer().play();
 IsPlaying = true;
}

function StopPlaying() {
 jQuery("#livebutton").attr('onclick', 'BeginPlaying()');
 jQuery("#livestatus").attr('src', 'http://ultrafan.ru/templates/skin/social/images/live_status.png');
 jQuery("#livebutton").attr('src', 'http://ultrafan.ru/templates/skin/social/images/live_play.png');
 jwplayer().stop();
 IsPlaying = false;
}

function BootPlayer() {
 jQuery('#outermediaspace').html("<div id='mediaspace' style=\"display: none;\"></div>");
 jwplayer('mediaspace').setup({
  'flashplayer': 'player.swf',
  'file': 'http://ultrafan.ru:7018/stream.m4a',
  'provider': 'video',
  'backcolor': '#F5F5F5',
  'frontcolor': '#F5F5F5',
  'lightcolor': '#F5F5F5',
  'screencolor': '#F5F5F5',
  'controlbar': 'none',
  'bufferlength': '12',
  'autostart': 'false',
  'icons': 'false',
  'repeat': 'none',
  'events': {
   'onIdle': function(event) { CheckIdle(); }
   //'onBuffer': function(event) {ldelim} alert('buffer'); {rdelim}
  },
  'width': '1',
  'height': '1'
 });
}

function RebootPlaying() {
 jwplayer().stop();
 jQuery('#outermediaspace').html("<div id='mediaspace' style=\"display: none;\"></div>");
 BootPlayer();
 jwplayer().play();
}

function CheckIdle() {
 console.log('CheckIdle fired. Restarting.');
 if (IsPlaying) { RebootPlaying(); }
}

function LiveTick() {
 if (IsPlaying) {
  // cookie code
  // stops here.
 }
 jQuery.ajax({
  url: '/metadata.php?oldVersion&playing=' + (IsPlaying ? 1 : 0),
  global: false,
  success: function(data){
   jsonMetadata = eval('(' + data + ')');
   jQuery('.livemetadata .liveartist').html(jsonMetadata.artist);
   jQuery('.livemetadata .livetitle').html(jsonMetadata.title);
  }
 });
 setTimeout('LiveTick()', 5000);
}

