var Engine =  {

	domain : 'http://' + document.domain + '/',
	
	loadPage : function(page, referer)
	{
		// Apstradajam refereru 
		if (referer)
		{
			var ref = window.location.href; 
		
			var tRegExp = new RegExp(this.domain, "g");
			ref = ref.replace(tRegExp, ''); 
			ref = ref.replace(/\//g, '_'); 
		}
		// parbaudam vai ieksheja lapa - nav http 
		if (page.substring(0, 7) != 'http://')
		{
			window.location = this.domain + page + '/' + (referer ? ref : ''); 
		}
		else 
		{
			window.location = page; 
		}
	}, 

	loadEvent : function(func) 
	{ 
		var oldonload = window.onload;
		 if (typeof window.onload != 'function') 
		{ 
		   window.onload = func; 
		} 
		else 
		{ 
			window.onload = function() 
			{ 
				oldonload(); 
				func(); 
			} 
		 } 
	}

}, 

Ajax = { 

	request : {},

	createRequest : function()
	{ 
		var request = false;
		try { request = new XMLHttpRequest(); }
		catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (failed)  { request = false; } } }

		return request; 
	},

	get : function(page, target, callback)
	{
		var request = this.createRequest();
		var self = this;
		
		request.onreadystatechange = function()
		{
		
			if (request.readyState == 4 && request.status == 200)
			{
				
				if (request.getResponseHeader('X-Internal-Error') == 'true')
				{	
					Engine.messageSetTitle('Kļūda'); // lang
					Engine.messageDisplay(request.responseText, false); 
					return; 
				}
			
				if (callback)
				{
					callback(request);
				}
				else
				{	
					self.update(request, target);
				}
				
			}

			if (request.readyState == 4 && request.status == 404)
			{
				alert('404'); 
			} 
		}

		request.open('GET', page, true);
		request.setRequestHeader('X-Requested-With', 'ajax');
		request.send(null);
	},

	update : function(request, target)
	{
		target = $(target);
		
		if (target)
		{
			target.innerHTML = request.responseText;
		}	
	}
/*
	  ?nocache = (new Date().getTime()));
*/
},

Interface = {

	field_names : {},
	elements : {}, 

	toggleInfo : function(element, target) {
		
		if (typeof target !== 'object')
		{
			var target = $(target); 
		}
		
		var ele = element.parentNode.lastChild; 
		if (target.style.display == 'none')
		{
			target.style.display = 'block';
			ele.childNodes[0].nodeValue = ele.title = 'Paslēpt';
			return; 
		}
		
		ele.childNodes[0].nodeValue = ele.title = 'Parādīt';
		target.style.display = 'none';
		// Ierakstit datus cookijaa, katrai zinjai unikals id
	},
	
	hide : function(target)
	{
		
		if (typeof target !== 'object')
		{
			var target = $(target); 
		}

		target.style.display = 'none';
	
	}, 

	show : function(target)
	{
		if (typeof target !== 'object')
		{
			var target = $(target); 
		}

		target.style.display = 'block';
	}, 
	
	updateInputFields : function()
	{

		var fields = document.getElementsByTagName('label');
		
		for (var i=0, j=fields.length; i<j; i++)
		{
			var ele = fields[i]; 
			
			var parent = ele.parentNode;
			while (parent.tagName != 'FORM')
			{				
				parent = parent.parentNode;
				if (parent.tagName == null)
				{
					break;
				}
			}
	
			if (typeof ele != 'object' || !ele.htmlFor) 
 			{
				continue; 
			}
			
			var field = $(ele.htmlFor);
			if (! field)
			{
				continue; 
			}

			ele.style.display = 'none'; 

			if (field.type == 'password') // Safixojam password lauku
			{	
				field.type = 'text'; 
			}
			
			if (!field.value || field.value == '')
			{
				field.value = ele.innerHTML;
			}
			this.field_names[ele.htmlFor] = ele.innerHTML;

			field.onfocus = function loginOn() 
			{ 
				//alert(this.value + '==' + Interface.field_names[this.name]); 
				if (this.value == Interface.field_names[this.name]) 
				{ 
					this.value = ''; 
					if (this.name == 'login_password') 
					{ 
						this.type = 'password'; 
					}
				} 
			}
			field.onblur = function loginOff() 
			{ 
				if (this.value == '')
				{ 
					if (this.name == 'login_password') 
					{ 
						this.type = 'text';
					}
					this.value = Interface.field_names[this.name];
				}
			}

		}
	},

	showLogin : function() {
		
		var form = $('login_form'); 
		
		if (form.style.display == 'block')
		{
			form	.style.display = 'none';
		}
		else
		{
			form.style.display = 'block';
		}
	},

	createLayer : function(id)
	{
		var ele = $(id);

		if (! ele)
		{
			var ele = document.createElement('div');
			ele.id = id;

			document.body.appendChild(ele);
		}
		
		ele.style.display = 'block';
		var viewport = Interface.getViewportSize();
		// IE FIX
		var scrollY = (window.scrollY ? window.scrollY : (document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop)); 
		var scrollX = (window.scrollX ? window.scrollX : (document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft)); 
		
		var top = scrollY + (viewport.height - ele.offsetHeight) / 2; 
		ele.style.top = top < 0 ? 0 : top + 'px';
		ele.style.left = scrollX + (viewport.width - ele.offsetWidth) / 2 + 'px';
		
		return ele; 
	}, 

	showMaterial : function(name_clean)
	{
	
		var ele = this.createLayer('material_info'); 
			
		ele.onclick = function() 
		{ 
			ele.style.display = 'none';
			ele.innerHTML = ''; 
		}

		Ajax.get(Engine.domain + 'ajax/materials/' + name_clean + '/', 'material_info'); 

		return false; 
	}, 

	imageSwap : function(element, image)
	{
		
		if (element.className == 'active')
			return; 
		
		var target = $('image_medium'); 
		var image_small = $('item_images_small').childNodes; 
		for (var i=0, j=image_small.length; i<j; i++)
		{
			var ele = image_small[i]; 
			
			if (ele.className == 'active')
			{
				ele.className = ''; 
			}
		}

		target.src = image + '-medium.jpg';
		element.className = 'active';
	}, 
	
	
	imageZoom : function(e) {
	
	// Noversham attelu dubleshanos, var effektivak? 
	var test = $('image_large');
	if (test && test.style.display == 'block')
	{
		ele.style.display = 'none'; 
		if ( ele.hasChildNodes() )
		{
			while ( ele.childNodes.length >= 1 )
			{
				ele.removeChild( ele.firstChild );       
			} 
		}
	}

	var ele = this.createLayer('image_large');
	
	ele.onclick = function() 
	{ 
		ele.style.display = 'none';
		while (ele.hasChildNodes())
		{
			ele.removeChild(ele.lastChild);
		}
	}
				
	var img = new Image();
	img.alt = '';
	var image = e ? e.src : $('image_medium').src;
	img.src = image.replace(/medium/i, 'large').replace(/small/i, 'large');

	img.onload = function() {
			
		ele.appendChild(img);
			
		var width = (this.naturalWidth ? this.naturalWidth : this.width)

		if (width > ele.offsetWidth)
		{
			ele.style.width = this.width + 'px';
		}
			
		ele.style.height = (this.naturalHeight ? this.naturalHeight : this.height) + 'px'; 

		var viewport = Interface.getViewportSize();
		// IE FIX
		var scrollY = (window.scrollY ? window.scrollY : (document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop)); 
		var scrollX = (window.scrollX ? window.scrollX : (document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft)); 
		
		var top = scrollY + (viewport.height - ele.offsetHeight) / 2; 
		ele.style.top = top < 0 ? 0 : top + 'px';
		ele.style.left = scrollX + (viewport.width - ele.offsetWidth) / 2 + 'px';

	 }
	// IE FIX 
	img.src = image.replace(/medium/i, 'large').replace(/small/i, 'large');

	},  

	display : function(id)
	{
		
		var menu = $('nav_sub_menu');
		var submenu = menu.childNodes; 
		
		for (var i=0, j=submenu.length; i<j; i++)
		{
			var ele = submenu[i]; 
						
			if (ele.id == 'sub_menu_' + id)
			{
				ele.className = 'active'; 
			}
			else
			{
				ele.className = '';
			}
			
		}
		
	}, 

	getViewportSize : function()
	{
		var intH = 0, intW = 0;
    
		if (self.innerHeight) 
		{
			intH = window.innerHeight;
			intW = window.innerWidth;
		} 
		else
		{
			if (document.documentElement && document.documentElement.clientHeight)
			{
				intH = document.documentElement.clientHeight;
				intW = document.documentElement.clientWidth;
			 }
			else 
			{
				if (document.body)
				{
					intH = document.body.clientHeight;
					intW = document.body.clientWidth;
				}
			}
		}

	   return {
			height: parseInt(intH, 10),
			width: parseInt(intW, 10)
		};
	}

}

function $(id) 
{ 
	if ($.elements[id]) 
	{
		return $.elements[id]; 
	}
	else 
	{ 
		return $.elements[id] = document.getElementById(id);
	}
}
$.elements = {};