/*****************************
--- multilayer v1.1
--- Author: Maxim Bandurko.
*****************************/

var bottomActive = false;
var multilayerReady = false;
var documentReady = false;
var cssReady = true;
var initReady = false;
var interval_delayedInit;
var interval_delayedInitVal;
var interval_cssReadyCheck;
var siteRoot = '';
var externalFiles = '';
var activeSub;
var listing_list_interval_delayedInit;
var listing_list_interval_delayedInitVal;
var listing_list;
var listing_item;
var listing_params;

(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)

jQuery.preLoadImages("assets/images/global/bg_splash.png", "assets/images/global/bg_footer.png", "assets/images/navigation/bg.png");


if(is_safari3){
	cssReady = false;
	interval_cssReadyCheck = setInterval(checkCssReady, 500);
}

jQuery(function($){
	$(document).ready(function(){
		documentReady = true;
		checkDocument();
	});
	
});

function checkDocument(){
	
	if(multilayerReady && documentReady && cssReady){
		if(!initReady){
			_init();
		}
	}
}

function checkCssReady(){
	if($("#cssLoaded").css("color") == 'rgb(18, 52, 86)'){
		clearInterval(interval_cssReadyCheck);
		cssReady = true;
		$("body #cssLoaded").remove();
		checkDocument();
	}
}


function initSkin(){
	if(is_safari3){
		$("body").append('<div id="cssLoaded">&nbsp;</div>');
	}
	
	_proceedPreInit();
	
	$("#site").multilayer({path:(siteRoot + 'assets/xml/')});
}


function _proceedPreInit(){

	

}




function _init(){
		
		initReady = true;
		
		updateCopyRight();
		
		_autoStart();
		
		
		_proceedBottom();
		_proceedPages();
		

		 
		 //proceedPageHeadingTitle();
		 //proceedSysBoxTitle();
		 
		 
		 
		 
		 interval_delayedInit = setInterval(_delayedInit, 1000);
		 
		 proceedFlashText();
		 
		_proceedVideoList();
		
		 //alert($("#site #contentArea").html());
}

function _autoStart(){
	//$("#page_free_samples #FPO").hide();	
}


function _delayedInit(){
	clearInterval(interval_delayedInit);
	if(jQuery.browser.msie && jQuery.browser.version == '6.0'){
		DD_belatedPNG.fix('.transparentDD');
	}
}

function proceedFlashText(){
	proceedPageTitle("#contentArea", "h1", "flashTitleHelveticaNeueCond.swf");
	proceedPageTitle("#contentArea", "h2", "flashTitleHelveticaNeueCond.swf");
	proceedPageTitle("#contentArea", "h3", "flashTitleHelveticaNeueCond.swf");
	proceedPageTitle("#contentArea", "h4", "flashTitleHelveticaNeueCond.swf");
	proceedPageTitle("#contentArea", "h5", "flashTitleHelveticaNeueCond.swf");
	proceedPageTitle("#contentArea", ".FTR", "flashTitleKlavika.swf", {$selectable:"true", $useHandCursor:"false"});
	//proceedPageTitle(".box", "h1", "flashTitleBox.swf");
	//proceedSysBoxTitle();
	
	//proceedPageTitle("#bottom", "h1", "flashTitleKlavika.swf", {$selectable:"false", $useHandCursor:"true"});
	
	proceedFlashObject();
	proceedVideoPlayer();
}

function updateCopyRight(){
	var d=new Date();
	yr=d.getFullYear();
	$("#site #footer #copyright").html('Copyright &copy; '+yr+' Boss VT. All rights reserved.');
}



function setTopMenuActive(el){
	if (el != undefined && el != ''){
		//$(".navigation .menu ul li a."+el).addClass("active");
		$("#header .navigation .menu ul li a."+el).parent().addClass("active");
	}
}



$.fn.delay = function(time, callback){
    // Empty function:
    jQuery.fx.step.delay = function(){};
    // Return meaningless animation, (will be added to queue)
    return this.animate({delay:1}, time, callback);
}


function normalizeHTML(txta){

	var regExp = /<([^>]+)/g;
		
	txta = txta.replace(regExp,
	function (p1){
		var regExp2 = /(\s\w+)=([^ \f\n\r\t\v"]+)/g;
		return p1.replace(regExp2, "$1=\'$2\'");
	});
	txta = txta.replace(/<SPAN/g,'<span');
	txta = txta.replace(/<\/SPAN/g,'</span');
	txta = txta.replace(/<BR/g,'<br');
	txta = txta.replace(/<br \//g,'<br /');
	txta = txta.replace(/<br/g,'<br /');
	txta = txta.replace(/<UL/g,'<ul');
	txta = txta.replace(/<\/UL/g,'</ul');
	txta = txta.replace(/<LI/g,'<li');
	txta = txta.replace(/<\/LI/g,'</li');
	txta = txta.replace(/<A/g,'<a');
	txta = txta.replace(/<\/A/g,'</a');
	
	
	txta = txta.replace(/rel='assets'/g,'rel="assets"');
	
	
	
	var regExp2 = /style="([^">]+)/g;
	txta = txta.replace(regExp2,function (p1,p2){return p1.toLowerCase()});
	
	if(is_ie5up){
		var regExp2b = /style="([^"]+)/g;
		txta = txta.replace(regExp2b, 'style="$1;');
	}
	
	
	var regExp3 = /<img([^>]+)/g;
	txta = txta.replace(regExp3, '<img$1 /');
	
	var regExp4 = /<input([^>]+)/g;
	txta = txta.replace(regExp4, '<input $1 /');
	
	if(is_ie){
	// IE only
		if(is_ie8up){
			
		}else{
			var reg = /\<li\>(.+)[^(\<\/li\>)]\<li\>/gim;   
			while(txta.search(reg)!=(-1)){  
				txta = txta.replace(reg,'<li>$1<\/li><li>');  
			}
		}
	}


	
	return txta;

	
}

function prepareHTML(txta){
	txta = txta.replace(/&nbsp;/g,'{{{nbsp}}}');
	txta = txta.replace(/&amp;/g,'&');
	txta = txta.replace(/&/g,'{{{amp}}}');
	
	return txta;
}

function replaceTags(txta, tags){
	var tagsArr = tags.split(',');
	for(var i=0;i<tagsArr.length;i++){
		switch(tagsArr[i]){
			case "br":
				txta = txta.replace(/<br>/g,'[[[br /]]]');
				txta = txta.replace(/<br \/>/g,'[[[br /]]]');
				break;
		}
	}
	
	return txta;
}

function prepareColor(col){
	
	if(col.split('rgb').length > 1){
	//if(is_ff || is_chrome){
		var t1 = col.split('(');
		var t2 = t1[1].split(')');
		var t3 = t2[0].split(', ');
		
		col = '#'+RGBtoHex(t3[0],t3[1],t3[2]);
	}
	return col;
}

function RGBtoHex(R,G,B) {return toHex(R)+toHex(G)+toHex(B)}

function toHex(N) {
 if (N==null) return "00";
 N=parseInt(N); if (N==0 || isNaN(N)) return "00";
 N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
 return "0123456789ABCDEF".charAt((N-N%16)/16)
      + "0123456789ABCDEF".charAt(N%16);
}

function d2h(d) {return d.toString(16);} // decimal to hex
function h2d(h) {return parseInt(h,16);} // hex to decimal

function proceedPageTitle(selector, tag, flash, obj){	

	//var $params = {};

	var gradient = false;
	
	if(selector == '#bottom'){
		gradient = true;
	}
	
	$(selector + " "+tag).each( function() {
			
			if($(this).hasClass("proceeded")){
				
			}else{
				
				$(this).addClass("proceeded");
				
				var txta = $(this).html();
				var twidth = $(this).width();
				var theight = $(this).height();
				
				txta = normalizeHTML(txta);
				txta = prepareHTML(txta);
				txta = $.string(txta).strip().str;
				
				var textAlign = $(this).css("text-align");
				var fontSize = Number($(this).css("font-size").split("px")[0]);
				var fontWeight = $(this).css("font-weight");
				var fontColor = prepareColor($(this).css("color"));
				
				if(fontWeight == "700"){
					fontWeight = 'bold';
				}
				
				if(fontWeight == "400"){
					fontWeight = 'normal';
				}
				
				var textTransform = $(this).css("text-transform");
				if(textTransform == 'uppercase'){
					txta = txta.toUpperCase();
				}
				
				if($(this).hasClass("FTR_u1")){
					fontSize = fontSize + 1;
				}
				
				if($(this).hasClass("FTR_u2")){
					fontSize = fontSize + 2;
				}
				
				//$(this).wrapInner('<div class="area" style="background-color:#0C0;"></div>');
				$(this).html('<div class="fpo_txt_area"></div>');
				
				$flashvars = {
					txt : txta,
					$textAlign : textAlign,
					fontSize : fontSize,
					fontColor : fontColor,
					$fontWeight : fontWeight,
					gradient : gradient
				}
				
				$params = $.extend(obj, $flashvars);
				
				
				$(".fpo_txt_area:first", this).flash({
						swf: externalFiles + ("assets/swf/text/" + flash),
						//swf: siteRoot + ("assets/swf/text/" + flash),
						width: twidth, // Recommended
						height: theight, // Recommended
						allowScriptAccess: "always",
					
					flashvars: $params,
					
						params: {
						base : ".",
						allowScriptAccess: "always",
						wmode : "transparent"
					}
				
				})
				
				//alert($(this).html());
				
			}
		});
	
}






function proceedVideoPlayer(){
	$(".videoPlayer").each( function() {

		var $params = {};
		
		$("object param", this).each( function() {
			_name = $(this).attr("name");
			_val = $(this).attr("value");
			$params[_name] = _val;
		});



		
		var $video = $("object param[name='$video']", this).attr("value");
		var $assets = $("object param[name='$assets']", this).attr("value");
		var $thumbnail = $("object param[name='$thumbnail']", this).attr("value");
		var $externalPathToFiles = assignValue($("object param[name='$externalPathToFiles']", this).attr("value"), true);
		var $maintainAspect = $("object param[name='$maintainAspect']", this).attr("value");
		var $autoSize = assignValue($("object param[name='$autoSize']", this).attr("value"), false);
		var $autoStart = $("object param[name='$autoStart']", this).attr("value");
		var $onComplete = $("object param[name='$onComplete']", this).attr("value");
		var $autoHide = $("object param[name='$autoHide']", this).attr("value");
		
		
		
		var $videoPlayerAlign = assignValue($("object param[name='$videoPlayerAlign']", this).attr("value"), "TL");
		
		var $replayButtonAlign = $("object param[name='$replayButtonAlign']", this).attr("value");
		var $replayButtonAlignPadding = $("object param[name='$replayButtonAlignPadding']", this).attr("value");
		var $replayButtonSnapToVideo = $("object param[name='$replayButtonSnapToVideo']", this).attr("value");
		var $replayButtonColor = $("object param[name='$replayButtonColor']", this).attr("value");
		var $replayButtonAlpha = $("object param[name='$replayButtonAlpha']", this).attr("value");
		var $replayButtonTheme = assignValue($("object param[name='$replayButtonTheme']", this).attr("value"), true);
		if($replayButtonTheme){
			$replayButtonColor = '#1e689c';
			$replayButtonAlpha = '100';
		}
		
		var $playButtonAlign = $("object param[name='$playButtonAlign']", this).attr("value");
		var $playButtonAlignPadding = $("object param[name='$playButtonAlignPadding']", this).attr("value");
		var $playButtonColor = $("object param[name='$playButtonColor']", this).attr("value");
		var $playButtonAlpha = $("object param[name='$playButtonAlpha']", this).attr("value");
		var $playButtonTheme = assignValue($("object param[name='$playButtonTheme']", this).attr("value"), true);
		if($playButtonTheme){
			$playButtonColor = '#1e689c';
			$playButtonAlpha = '100';
		}
		
		
		var $buffer_backgroundAlpha = assignValue($("object param[name='$buffer_backgroundAlpha']", this).attr("value"), "100");
		var $buffer_backgroundHighlight = assignValue($("object param[name='$buffer_backgroundHighlight']", this).attr("value"), "#6e6e6e");
		var $buffer_backgroundShading = assignValue($("object param[name='$buffer_backgroundShading']", this).attr("value"), "#303030");
		var $buffer_indicatorHighlight = assignValue($("object param[name='$buffer_indicatorHighlight']", this).attr("value"), "#01415F");
		var $buffer_indicatorShading = assignValue($("object param[name='$buffer_indicatorShading']", this).attr("value"), "#17488A");
		var $buffer_textColor = assignValue($("object param[name='$buffer_textColor']", this).attr("value"), "#FFFFFF");
		
		var $controller_backgroundAlpha = assignValue($("object param[name='$controller_backgroundAlpha']", this).attr("value"), "100");
		var $controller_backgroundHighlight = assignValue($("object param[name='$controller_backgroundHighlight']", this).attr("value"), "#515151");
		var $controller_backgroundShading = assignValue($("object param[name='$controller_backgroundShading']", this).attr("value"), "#303030");
		var $controller_buttonHighlight = assignValue($("object param[name='$controller_buttonHighlight']", this).attr("value"), "#FFFFFF");
		var $controller_buttonShading = assignValue($("object param[name='$controller_buttonShading']", this).attr("value"), "#CCCCCC");
		var $controller_indicatorHighlight = assignValue($("object param[name='$controller_indicatorHighlight']", this).attr("value"), "#2C9ED4");
		var $controller_indicatorShading = assignValue($("object param[name='$controller_indicatorShading']", this).attr("value"), "#17488A");
		
		
		var $controllerPosition = assignValue($("object param[name='$controllerPosition']", this).attr("value"), "outside");
		var $controllerRoundedCorners = assignValue($("object param[name='$controllerRoundedCorners']", this).attr("value"), false);
		var $controllerRePosition = assignValue($("object param[name='$controllerRePosition']", this).attr("value"), false);
		var $controllerPositionToStage = assignValue($("object param[name='$controllerPositionToStage']", this).attr("value"), false);
		var $controllerPadding = $("object param[name='$controllerPadding']", this).attr("value");
		
		
		
		var $btnClose = $("object param[name='$btnClose']", this).attr("value");
		
		var $bg = $("object param[name='$bg']", this).attr("value");
		if($bg == 'default'){
			$bg = '#242424';
		}
				
		
		
		if($controllerPosition == "outside" && $controllerRePosition){
			$(this).css("height",$(this).height() + 36);
			
		}
		
		var twidth = $(this).width();
		var theight = $(this).height();
		
		var $flashvars = {
			
			$video : $video,
			$assets : $assets,
			$externalPathToFiles : $externalPathToFiles,
			$thumbnail : $thumbnail,
			$autoStart : $autoStart,
			$onComplete : $onComplete,
			$maintainAspect : $maintainAspect,
			$autoSize : $autoSize,
			$autoHide : $autoHide,
			
			$videoPlayerAlign : $videoPlayerAlign,
			
			$replayButtonAlign : $replayButtonAlign,
			$replayButtonAlignPadding : $replayButtonAlignPadding,
			$replayButtonColor : $replayButtonColor,
			$replayButtonAlpha : $replayButtonAlpha,
			$replayButtonSnapToVideo : $replayButtonSnapToVideo,
			$replayButtonColor : $replayButtonColor,
			
			$playButtonAlign : $playButtonAlign,
			$playButtonAlignPadding : $playButtonAlignPadding,
			$playButtonColor : $playButtonColor,
			$playButtonAlpha : $playButtonAlpha,
			$playButtonColor : $playButtonColor,
			
			
			$buffer_backgroundAlpha : $buffer_backgroundAlpha,
			$buffer_backgroundHighlight : $buffer_backgroundHighlight,
			$buffer_backgroundShading : $buffer_backgroundShading,
			$buffer_indicatorHighlight : $buffer_indicatorHighlight,
			$buffer_indicatorShading : $buffer_indicatorShading,
			$buffer_textColor : $buffer_textColor,
			$controller_backgroundAlpha : $controller_backgroundAlpha,
			$controller_backgroundHighlight : $controller_backgroundHighlight,
			$controller_backgroundShading : $controller_backgroundShading,
			$controller_buttonHighlight : $controller_buttonHighlight,
			$controller_buttonShading : $controller_buttonShading,
			$controller_indicatorHighlight : $controller_indicatorHighlight,
			$controller_indicatorShading : $controller_indicatorShading,
			
			
			$controllerPosition : $controllerPosition,
			$controllerRePosition : $controllerRePosition,
			$controllerRoundedCorners : $controllerRoundedCorners,
			$controllerPositionToStage : $controllerPositionToStage,
			$controllerPadding : $controllerPadding,
			
			
			$bg : $bg,
			$btnClose : $btnClose
			
		}
		
		$params = $.extend($params, $flashvars);
		
		//$externalPathToFiles
		
		//$(this).html('<div class="FPO">&nbsp;</div>');
		
		if(!$(this).hasClass("processed")){
		
			$(this).html('<div class="fpo_video_area"></div>');
			
			$(".fpo_video_area:first", this).flash({
					swf: siteRoot + ("assets/swf/VideoPlayerExtended.swf"),
					width: twidth, // Recommended
					height: theight, // Recommended
					hasVersion: 9,
					expressInstall: 'assets/swf/expressInstall.swf',
					allowScriptAccess: "always",
				
				flashvars: $params,
					params: {
					base : ".",
					allowScriptAccess: "always",
					wmode : "transparent"
				}
			
			})
			
			
			$(this).addClass("processed");
		}
		//alert($(this).html());
	});
}

function proceedFlashObject(){
	var _name;
	var _val;
	
	$(".flashObject").each( function() {
		var $src = $("object param[name='$src']", this).attr("value");
		
		var twidth = $(this).width();
		var theight = $(this).height();
		
		var $params = {};
		
		$("object param", this).each( function() {
			_name = $(this).attr("name");
			_val = $(this).attr("value");
			$params[_name] = _val;
		});
		
		if($params.$selector != undefined){
			$params.$code = prepareHTML(normalizeHTML($($params.$selector, this).html()));
		}
		
		if($params.$codeTagsReplace != undefined){
			$params.$code = replaceTags($params.$code, $params.$codeTagsReplace);
		}
		
		
		
		//if(is_ie){
			//if(is_ie8up){
			//}else{
				$params.$code = encodeURIComponent($params.$code);
			//}
		//}
		
		//alert($params.$code);
		
		
		$(this).html('<div class="fpo_flash_area"></div>');
		
		//$(".FPO", this).html($params.$code);
		
		
		$(".fpo_flash_area:first", this).flash({
				swf: $src,
				width: twidth, // Recommended
				height: theight, // Recommended
				hasVersion: 9,
				expressInstall: 'assets/swf/expressInstall.swf',
			
				flashvars: $params,
			
				params: {
					base : ".",
					wmode : "transparent"
				}
		
		})
		
		
	});
}


function assignValue(val, _false){
	if(val == '' || val == ' ' || val == undefined){
		return _false;	
	}
	
	return val;
}



function _proceedBottom(){
	
	var href;
	
	$("#bottom .menu ul li").filter(function (index) {
			
		  return $(this).addClass("activated");
		}).hover(function(){
			$(this).addClass("hover");
		},function(){
			$(this).removeClass("hover");
		}).click(function(event){
			event.stopPropagation();
			event.preventDefault();
			if($("h1 a", this).attr('target') != "_blank"){
				location.href = $("h1 a", this).attr('href');
			}else{
			 	window.open($("h1 a", this).attr('href'));
			}
    });


}



function _proceedPages(){
	
	
	
	
}

function heroShowVideo(val){
	//alert(val._video);
	
	var code = '';
	code += '<div class="videoPlayer">';
	code += '	<object>';
	code += '		<param name="$video" value="'+val._video+'" />';
	
	if(val._asset != undefined){
		code += '		<param name="$assets" value="'+val._asset+'" />';
	}
	
	if(val._maintainAspect != undefined){
		code += '		<param name="$maintainAspect" value="'+val._maintainAspect+'" />';
	}
	
	code += '		<param name="$controllerPosition" value="inside" />';
	code += '		<param name="$autoStart" value="true" />';
	code += '		<param name="$playButtonAlign" value="BL" />';
	code += '		<param name="$playButtonAlignPadding" value="15 15" />';
	code += '		<param name="$replayButtonAlign" value="TL" />';
	code += '		<param name="$replayButtonAlignPadding" value="15 15" />';
	code += '		<param name="$thumbnail" value="home_hero.swf" />';
	//code += '		<param name="$onComplete" value="function:heroHideVideo" />';
	
	//code += '		<param name="$externalPathToFiles" value="false" />';
	
	code += '	</object>';
	code += '</div><!-- EOF videoPlayer -->';

	//$("#flashLibraryObject").addClass("hide");
	$(".areaLeft").html('<div id="flashPlayerObject">&nbsp;</div>');
	$("#flashPlayerObject").html(code);
	proceedVideoPlayer();
}


function libraryShowVideo(val){
	//alert(val._video);
	
	var code = '';
	code += '<div class="videoPlayer">';
	code += '	<object>';
	code += '		<param name="$video" value="'+val._video+'" />';
	
	if(val._asset != undefined){
		code += '		<param name="$assets" value="'+val._asset+'" />';
	}
	
	if(val._maintainAspect != undefined){
		code += '		<param name="$maintainAspect" value="'+val._maintainAspect+'" />';
	}
	
	//code += '		<param name="$controllerPosition" value="outside" />';
	code += '		<param name="$autoStart" value="true" />';
	code += '		<param name="$onComplete" value="function:libraryHideVideo" />';
	code += '		<param name="$btnClose" value="true" />';
	
	//code += '		<param name="$externalPathToFiles" value="false" />';
	
	code += '	</object>';
	code += '</div><!-- EOF videoPlayer -->';

	$("#flashLibraryObject").addClass("hide");
	$(".flashLibrary").append('<div id="flashPlayerObject">&nbsp;</div>');
	$("#flashPlayerObject").html(code);
	proceedVideoPlayer();
}

function libraryHideVideo(){
	interval_delayedInit = setInterval(_delayedInitLibraryHideVideo, 500);
}

function _delayedInitLibraryHideVideo(){
	clearInterval(interval_delayedInit);
	$("#flashPlayerObject").html("loading");
	$("#flashLibraryObject").removeClass("hide");
	$("#flashPlayerObject").remove();
}


function _proceedVideoList(){
	listing_item = -1;
	if(listing_list){
		//listing_list = shuffle(listing_list);
		changeListItem();
	}
}

function changeListItem(){
	
	var video = false;
	var assets = false;
	
	listing_item++;
	if(listing_item >= listing_list.length){
		listing_item = 0;
	}
	
	if(listing_list[listing_item] instanceof Array){
		if(listing_list[listing_item][0]){
			video = listing_list[listing_item][0];
		}
		
		if(listing_list[listing_item][1]){
			assets = listing_list[listing_item][1];
		}
	}else{
		video = listing_list[listing_item];
	}
	
	var val = listing_params + ';$video=' + video + ';$onComplete=function:changeListItem';
	
	if(assets){
		val += ';$assets='+assets;	
	}
	
	changeVideo(val);	
}

function changeVideo(val){
	
	listing_list_interval_delayedInitVal = val;
	listing_list_interval_delayedInit = setInterval(_changeVideoDelayed, 800);
}

function _changeVideoDelayed(){
	clearInterval(listing_list_interval_delayedInit);
	var val = listing_list_interval_delayedInitVal;
	
	var arr;
	var params = [];
	
	var out = '<object>';
	jQuery.map(val.split(';'), function(n, i){
		arr = n.split('=');
		params[arr[0]] = arr[1];
		out += '	<param name="'+arr[0]+'" value="'+arr[1]+'" />';
    });
	out += '</object>';
	
	
	
	$(params['$target']).html(out);
	$(params['$target']).removeClass("processed");
	
	//alert(out);
	
	proceedVideoPlayer();
}
