/** 
 * kernel.js - core javascript code based on framework
 * Copyright (c) 2008 CREATIVE ZONE Studio (http://www.cz-site.com/)
 */

$.errors.debug = false;

if (top.Kernel == undefined) {
(function() { 

/**
 *  Kernel
 */
	(function(){
		$.ajaxSetup({type:"POST"});
		var $$ = Kernel = top.Kernel = {
			isloading : false,
			arrUnits  : [],
			onload : function () {
				Kernel.Config.init($$.init);
			},
			init : function () {
				$("#loading").ajaxStart(function(){
					$$.isloading = true;
					//$().addModal("#loading",{css:{"background-color":"#222", opacity:"0.2"}});
					$(this).show();
					$("#lay_content").animate({opacity: 0.3},350);
					//$("#lay_content").css({opacity: 0.4});
				}).ajaxStop(function(){
					$$.isloading = false;
					//$().removeModal();					
					$(this).hide();
					$("#lay_content").show().animate({opacity: 1.0},350);
				}).css({position:"fixed"});
				$("#loading, #loading *, #tooltip *, #viewer *").msiefixPNG().msiefixFixed();
				$.extend($.Modal.options, {css:{"background-color":"#222", cursor: "wait", opacity:"0.5"}});
				for (var i=0; i<$$.arrUnits.length; i++) {
					var func = $$.arrUnits[i].init;
					if (func) func();					
				}
				$$.addHandlers();
				$.interrupt.add("Kernel.MainMenu.onClickItem, Kernel.FooterMenu.onClickItem, Kernel.Header.onMenuClick", function(){
					if ($$.isloading) $.interrupt.stop();
				});
				$.interrupt.add("Kernel.Content.onLoad", function(id){
					Kernel.MainMenu.setCurrItem(id);
					Kernel.Header.setCurrItem(id);
					Kernel.FooterMenu.setCurrItem(id);
				});
				$("#lay_site").show();
			},
			addUnit : function (ref) {
				$$.arrUnits.push(ref);
			},
			delUnit : function (ref) {
				for (var i=0; i<$$.arrUnits.length; i++) {
					if (ref == $$.arrUnits[i]) {
						$$.arrUnits.splice(i, 1);
						break;
					}
				}
			},
			addHandlers : function (id) {
				if (!id) id = "body";
				//$(id+" h1").Sifr({font:"AvantGardeBkBT"});
				//$(id+" .hover *").msiefixOpacity();
				$(id+" img").msiefixPNG();
				$(id+" .btn").hover(function(){$(this).addClass("btnover");},function(){$(this).removeClass("btnover");}).click(function(){this.blur();});
				$(id+" .fld").focus(function(){$(this).addClass("fldfocus");}).blur(function(){$(this).removeClass("fldfocus");});
				if (Kernel.Config.isAjax) {
					$(id+" a.menulink").click(function(){
						this.blur();
						Kernel.Content.load(this.pathname);
						return false;
					});
				}
				$(id+" input.menulink").click(function(){
					this.blur();
					var url = $(this).attr("href");
					if (Kernel.Config.isAjax) {
						Kernel.Content.load(url);
					} else {
						window.location = url;
					}
					return false;
				});
				$(id+" a.popuplink").click(function(){
					this.blur();
					var id = this.href;
					if (window.pageTracker) pageTracker._trackPageview(id); //Google Analytics
					var win = window.open(id,"");
					return false;
				});
				$(id+" .tooltiped").Tooltip({tipboxid:"#tooltip", shiftx:-0, shifty:15, cursor: false,
					onshow : function(_t){
						return !Kernel.isloading;
					},
					onmove : function(_t){
						$("#tooltip .bg").setClass("bg bg_pos_"+_t.tx+""+_t.ty);
						$("#tooltip .message").setClass("message message_pos_"+_t.tx+""+_t.ty);
					}
				});
				$(id+" a[href^=mailto]").each(function(){
					var arr, src, email="";
					if (this.href.indexOf("@")>1) return;
					arr = this.href.split(":")[1].split("..");
					if (arr.length!=2) return;
					src = arr[1].split(".");
					while (src.length>0) email += src.pop()+".";
					email = $.rtrim(email,"\.") + "@";
					src = arr[0].split(".");
					while (src.length>0) email += src.pop()+".";
					email = $.rtrim(email,"\.");
					this.href = "mailto:"+email;
				});
			}
		};
	})();



/**
 *  Kernel.Config
 */
	(function() { 
		var $$ = Kernel.Config = {
			langid       : "ru",
			langs        : ["ru"],
			isAjax       : true,
			isHijax      : true,
			isFlash      : false,
			init : function (onInit) {
				$$.isFlash = $.Flash.skipdetect || $.Flash.isValidVersion(8);
				if ($.browser.msie6 && $$.isFlash) $$.isHijax = false;
				if (top.jsProxy  && top.jsProxy.langid && top.jsProxy.langs) {
					$$._initLang(top.jsProxy.langid,top.jsProxy.langs);
					if (onInit) onInit();
				} else {
					var data = {action : "getlangid"};
					$.ajax({type:"POST", dataType:"html", data:data, url:"data.langs.php", complete:function(xml,status){
							var res = {error:"true", langid:$$.langid, langs:$$.langs};
							if (status=="success") res = $.parseJSON(xml.responseText, res);
							$$._initLang(res.langid, res.langs);
							if (onInit) onInit();
						}
					});
				}
			},			
			_initLang : function (langid,langs) {
				if (langs && langs.constructor == Array) $$.langs = langs;
				$$.langid = langid;
				$.langs.set({langid:$$.langid, type:"php", php_url:"data.langs.php", path:"langs/"});
			},
			setLang : function (langid) {
				if ($$.langid == langid) return;
				for (var i=0; i<$$.langs.length; i++) {	
					if ($$.langs[i] == langid) {
						var data = {action : "setlangid", langid : langid};
						$.ajax({type:"POST", dataType:"html", data:data, url:"data.langs.php", complete:function(xml,status){
								if (status=="success") {
									$$.langid = langid;
									$.langs.set({langid:$$.langid});
									$(".langs>div").hide();
									$(".langs>div."+Kernel.Config.langid).show();
									for (var i=0; i<Kernel.arrUnits.length; i++) {
										var func = Kernel.arrUnits[i].setLang;
										if (func) func();					
									}
								}
							}
						});
						break;
					}
				}
			}
		};
	})();
	


/**
 *  Kernel.Header
 */
	(function() { 
		var $$ = Kernel.Header = {
			init : function () {
				if (Kernel.Config.isFlash) {
					$("#lay_header .header .html").hide();
					$("#lay_header .header").Flash({url:"/media/header.swf",id:"header_swf",width:"910px",height:"295px",bgcolor:null},{intro:"/media/header_intro.swf",callback:"Kernel.Header.onClickMenu",callback_lang:"Kernel.Header.onClickLang",lang_id:Kernel.Config.langid});
				} else {
					var img = $("#lay_header .header .html img")[0];
					var newsrc = "/media/header_html_"+Kernel.Config.langid+".jpg";
					$(img).attr({"src":newsrc});
					$("#lay_header .header .html").show();
				}
			},
			onClickMenu : function (id) {
				var div = Kernel.FooterMenu.menu.findDivByIndex(id-1);
				if (div) Kernel.FooterMenu.onClickItem(div.md.id)
			},
			onClickLang : function (id) {
				//alert(id);
				Kernel.Config.setLang(id);
			},
			setCurrItem : function(id) {
			},
			setLang     :  function () {
				$$.init();
			}
		};
		Kernel.addUnit($$);
	})();





/**
 *  Kernel.MainMenu
 */
	(function(){
		var $$ = Kernel.MainMenu = {
			lay_id    : "#lay_mainmenu",
			ref       : null,
			menu      : null,
			init : function () {
				$$.ref = $($$.lay_id)[0];
			},
			make : function(id) {
				var xml_tagname = "";
				var xml_id = "submenu_"+id;
				if (!$$.menu) {
					$($$.ref).menu_Tmv1({
						xml_url      : "admin/menu_site.xml",
						xml_tagname  : xml_tagname,
						xml_id       : xml_id,
						name         : "mainmenuitem",
						data_url     : "/data.menu.php",
						langid       : Kernel.Config.langid,
						prefix       : Kernel.Config.langid,
						subsearch    : 3,
						onClickItem  : $$.onClickItem,
						isFlash      : false,
						isAutoHide   : false,
						isCache      : true,
						isGlobal     : false,
						onMake       : $$.onMake
					});
					$$.menu = $$.ref.menu_Tmv1;
				} else {
					$$.menu.load({xml_tagname:xml_tagname,xml_id:xml_id});
				}
			},
			onClickItem : function(id,md) {
				if (Kernel.Config.isAjax) Kernel.Content.load(id);
				else return true;
			},
			setCurrItem : function(id) {
				return $$.menu.setCurrItem(id);
			},
			onMake : function () {
				var id = Kernel.Content.getCurrent();
				if (!$$.setCurrItem(id)) $$.menu.clickFirstItem();
			},
			setLang : function() {
				$$.menu.make({langid:Kernel.Config.langid, prefix:Kernel.Config.langid});
			}			
		}
		Kernel.addUnit($$);
	})();

	

/**
 *  Kernel.FooterMenu
 */
	(function(){
		var $$ = Kernel.FooterMenu = {
			lay_id    : "#lay_footer .menu .items",
			ref       : null,
			menu      : null,
			init : function () {
				$$.ref = $($$.lay_id)[0];
				$($$.ref).menu_Tmv1({
					xml_url      : "admin/menu_site.xml",
					xml_tagname  : "mainmenu",
					name         : "footermenuitem",
					data_url     : "/data.menu.php",
					subsearch    : 3,
					langid       : Kernel.Config.langid,
					prefix       : Kernel.Config.langid,
					showdir      : "width",
					onClickItem  : $$.onClickItem,
					activeId     : Kernel.Content.getCurrent(),
					isIndent     : false,
					isFlash      : false,
					isAutoHide   : false,
					isCutline    : true,
					isCache      : true,
					onMake       : $$.onMake
				});
				$$.menu = $$.ref.menu_Tmv1;
			},
			onClickItem : function(id,md) {
				$$.setCurrItem(id);
			},
			setCurrItem : function(id) {
				id = $.file.delBoundSlash(id);
				var arr = id.split("/");
				var fid = arr[0]+"/"+arr[1];
				if ($$.menu.isActive(fid)) return;
				$$.menu.setCurrItem(id);
				Kernel.MainMenu.make(arr[1]);
				/*
				if (Kernel.MainMenu.menu) {
					$(Kernel.MainMenu.menu.divs).animate({height:"hide"},400,function(){
						$$.menu.setCurrItem(id);
						Kernel.MainMenu.make(arr[1]);
					});
				} else {
					$$.menu.setCurrItem(id);
					Kernel.MainMenu.make(arr[1]);
				}
				*/
			},
			onMake : function () {
				$$.setCurrItem(Kernel.Content.getCurrent());
			},
			setLang : function() {
				$$.menu.make({langid:Kernel.Config.langid, prefix:Kernel.Config.langid});
			}			
		}
		Kernel.addUnit($$);
	})();

	
	
/**
 *  Kernel.Content
 */
	(function() { 
		var $$ = Kernel.Content = {
			lay_id      : "#lay_content",
			start       : "home",
			current     : "",
			isloading   : false,
			init : function() {
				if (Kernel.Config.isAjax) {
					$.Hijax.checkLocation();
					if (Kernel.Config.isHijax) {
						$.Hijax.init($$._load);
					} else {
						$$.load($.Hijax.getCurrent());
					}
				} else {
					$$._firstLoad($.Hijax.getLocation());
				}
			},
			getStart : function () {
				if (top.jsProxy  && top.jsProxy.homepage) $$.start = top.jsProxy.homepage;
				return Kernel.Config.langid+$.file.addStartSlash($$.start);
			},
			getCurrent : function () {
				var tmp = Kernel.Config.isAjax ? $.Hijax.getCurrent() : $.Hijax.getLocation();
				return tmp ? tmp : ($$.current ? $$.current : $$.getStart());
			},
			load : function (id) {
				if (Kernel.Content.isloading) return;
				if (!id) id = $$.getStart();
				id = $.file.delStartSlash(id);
				if (!$.file.isFile(id)) id = $.file.addEndSlash(id);
				if (Kernel.Config.isHijax) {
					$.Hijax.load(id);
				} else {
					$$._load(id);
				}
			},
			_load : function (id) {
				if (Kernel.Content.isloading) return;
				if (!id) id = $$.getStart();
				if (window.pageTracker) pageTracker._trackPageview(id); //Google Analytics
				if ($$.current=="" && id==$$.getStart()) {
					$$._firstLoad(id);
					return;
				}
				$$.current = id;
				var data = {forajax : "true", content : id};
				var url = $.file.addStartSlash(id);
				if (!$.file.isFile(id)) url = $.file.addEndSlash(id);
				Kernel.Content.isloading = true;
				$$.onLoad(id);
				$.ajax({type: "POST", dataType: "html", data: data, url: url, complete:function(xml,status){
						Kernel.Content.isloading = false;
						if (status=="success") {
							//$($$.lay_id).css({opacity:0}).show();
							$$.scrollTop();
							$($$.lay_id).html(xml.responseText);
							Kernel.addHandlers($$.lay_id);
						} else {
							$($$.lay_id).html($.langs.str("Loading Error!", "Loading Error!"));
						}
						$$.onAfterLoad(id);
					}
				});
			},
			_firstLoad : function (id) {
				$($$.lay_id).css({opacity:0}).show().animate({opacity: 1.0},450);
				$$.current = id;
				Kernel.addHandlers($$.lay_id);
				//Kernel.MainMenu.setCurrItem($.Hijax.getLocation());
			},
			onLoad : function () {
				// for override
			},
			onAfterLoad : function () {
				// for override
			},
			scrollTop: function (v) {
				$(window).scrollTop(v || 0);
			},
			setLang : function () {
				var arr = $.file.delBoundSlash($$.getCurrent()).split("/");
				arr.shift();
				var newid = "/"+Kernel.Config.langid+"/"+arr.join("/");
				if (!$.file.isFile(newid)) newid = $.file.addEndSlash(newid);
				$$.load(newid);
			}
		};
		Kernel.addUnit($$);
	})();



/**
 *  Kernel.Viewer
 */
	(function() { 
		var $$ = Kernel.Viewer_swap = {
			lay_id     : "#viewer_swap",
			arrimg     : [],
			index      : 0,
			isloading  : false,
			init : function () {
			},
			setImages : function (imgs) {
				$$.arrimg = imgs.split(";");
			},
			open : function (index) {
				if (index==null) index = 0;
				var ext = $.file.getExt($$.arrimg[index]).toLowerCase();
				switch (ext) {
					case "html" :
						var win = window.open($$.arrimg[index],"","toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1");
						return;
					case "swf" :
						var data = {action: "getswfsize", filename:$$.arrimg[index]};
						var url = "data.viewer.php";
						$.ajax({type: "POST", dataType: "html", data: data, url: url, complete:function(xml,status){
								if (status=="success") {
									try { 
										var data = eval("("+xml.responseText+")");
										if (!data.error) {
											var win = window.open("","","width="+(data.width+60)+",height="+(data.height+60)+",toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0");
											s = '<head><title>popup</title></head>';
											s += '<body onerror="return true" style="background-color:#171717; margin:0px; padding:10px;">';
											s += '<div style="border:#fff 10px solid; background-color:#183967; padding:10px">';
											s += $.Flash.getHTML({url:$.file.addStartSlash($$.arrimg[index]), id:"myid",width:data.width,height:data.height,bgcolor:"222222"});
											s += '</div>';
											s += "</body>";
											win.document.write(s);
										}
									} catch(e) { }
								} else { }
							}
						});
						return;
					case "flv" :
						break
					case "jpg" :
						$(".place", $$.lay_id).append($.create("img"));
						$(".place img", $$.lay_id).load(function(e){
							$$.setLoading(false);
						});
						break;
				}
				$$.index = index;
				$$.showImage($$.index);
			},
			close : function () {
			},
			showImage : function (index) {
				index = index==undefined ? $$.index : index;
				var ext = $.file.getExt($$.arrimg[index]).toLowerCase();
				switch (ext) {
					case "html" :
					case "swf" :
						break;
					case "flv" :
						$(".place",$$.lay_id).Flash({url:"/media/videoPlayer.swf",id:"videoPlayer",width:"520px",height:"440px",bgcolor:"000000", expressinstall:false}, {filename:$.file.addStartSlash($$.arrimg[index])});
						break;
					case "jpg" :
						var param = "action=swap";
						param += "&width="+$(".imgwrap", $$.lay_id).width();
						param += "&height="+$(".imgwrap", $$.lay_id).height();
						param += "&image="+escape($$.arrimg[index]);
						$$.setLoading(true);
						$(".imgwrap img",$$.lay_id).attr("src", "/data.viewer.php?"+param);
						break;
				}
				$(window).scrollTop(300);
			},
			setLoading : function(flag) {
				if (flag) {
					$(".imgwrap img",$$.lay_id).css({opacity: 0.4});
					$(".loading",$$.lay_id).show();
				} else {
					$(".loading",$$.lay_id).hide();
					$(".imgwrap img",$$.lay_id).css({opacity: 1});
				}
				$$.isloading = flag;
			},
			setLang : function () {
			}
		};
		Kernel.addUnit($$);
	})();
	

	
/**
 *  Kernel.news
 */
	(function(){
		var $$ = Kernel.News = {
			lay_id : "#lay_feature .news",
			init : function () {
			},
			load : function() {
				var data = {};
				$.ajax({type: "POST", dataType: "html", data: data, url: "data.feature_news.php", complete:function(xml,status){
						if (status=="success") {
							$($$.lay_id).html(xml.responseText);
							Kernel.addHandlers($$.lay_id);
						}
					}
				});
			},
			setLang : function() {
				$$.load();
			}			
		}
		Kernel.addUnit($$);
	})();



/**
 *  Kernel.Port
 */
	(function() { 
		var $$ = Kernel.Port = {
			lay_id : "#lay_feature .port",
			index      : 0,
			data       : [],
			timeid     : null,
			quant      : 1,
			init : function () {
				if (top.jsProxy && top.jsProxy.feature_port) {
					$$._init(top.jsProxy.feature_port);
				} else {
					$$.load();
				}
			},
			load : function() {
				var data = {};
				$.ajax({type: "POST", dataType: "html", data: data, url: "data.feature_port.php", complete:function(xml,status){
						if (status=="success") {
							$($$.lay_id).html(xml.responseText);
							Kernel.addHandlers($$.lay_id);
							if (top.jsProxy && top.jsProxy.feature_port) $$._init(top.jsProxy.feature_port);
						}
					}
				});
				/*
				var data = {action:"getdata"};
				$.ajax({type: "POST", dataType: "html", data: data, url: "data.feature_port.php", complete:function(xml,status){
						var res = {error:"true"};
						if (status=="success") {
							var res = $.parseJSON(xml.responseText,res);
							$$._init(res);
						}
					}
				});
				*/
			},
			_init : function (res) {
				if (res && res.error=="false") {
					$$.index = 0;
					$$.data = res.data;
					$$.show();
				}
				$(".next",$$.lay_id).click(function(){
					if ($$.data.length>0) {
						var url = "/"+Kernel.Config.langid+"/portfolio/type/"+$.file.delBoundSlash($$.data[$$.index].type_uri)+"/details/"+$$.data[$$.index].id+"/";
						Kernel.Content.load(url);
					}
				});
			},			
			show : function () {
				for (var n=$$.index; n<$$.index+$$.quant; n++) {
					$$.swap((n % $$.quant), n % $$.data.length);
				}
				$$.timeid = setTimeout(function(){$$.next()}, 10000);
			},
			next : function () {
				$$.index = ($$.index+= $$.quant) % $$.data.length;
				$$.show();
			},
			swap : function (i,n) {
				$(".hitzone"+i,$$.lay_id).animate({opacity: 0.0},500, function(){
					$(".hitzone"+i+" .place", $$.lay_id).html('<img src="'+$$.data[n].image+'" />');
					var tooltip = $(".hitzone"+i, $$.lay_id)[0].Tooltip;
					if (tooltip) {
						if (tooltip.isshow) tooltip.hide();
						$$.setTooltip(i,n);
					}
					$(".hitzone"+i, $$.lay_id).animate({opacity: 1.0},500);
				});
			},
			setTooltip : function (i,n) {
				var str = "";
				str += $.langs.str($$.data[n].name);
				$(".hitzone"+i, $$.lay_id)[0].Tooltip.message = str;
			},
			setLang : function () {
				//for (var n=$$.index; n<$$.index+$$.quant; n++) {
				//	$$.setTooltip(n % $$.quant, n % $$.data.length);
				//}
				$$.load();
			}
		};
		Kernel.addUnit($$);
	})();
	
		
	
	
	
/**
 *  Initialize
 */
	$(function() {
		Kernel.onload();
	});

})();
}
Kernel = top.Kernel;
