function $(id) { return document.getElementById(id); }

/* ONLOAD */

var onload_events = [];

function onLoad(func)
{
	onload_events[onload_events.length] = func;
}

function bodyLoaded()
{
	
	for (var i = 0; i < onload_events.length; ++i)
	{
		(onload_events[i])();
	}
	
}

//pageLoad
function pageload(hash) 
{		
	window.scrollTo(0,0);
	
	var params=false;
	var page=hash;
	var pageTmp=hash;
	var loadLeft=true;
	var loadTop=true;
	var loadContent=true;
	//alert("hash"+hash);

	
	if(hash)
	{
		if(hash.indexOf('/'))
		{
			var arr= new Array();
			arr=hash.split('/');					
			pageTmp=arr[0];					
			if(arr && arr.length>0)
			{
				page=arr[0];						
				params=new Array(arr.length-1);		
				paramsOrig=new Array(arr.length-1);		
				
				for(var i=1;i<arr.length;i++)
				{		
					paramsOrig[i-1]=arr[i];												
					if(arr[i].indexOf('EN')>=0 || arr[i].indexOf('RO')>=0)
					{	
						params[i-1]="langCode="+arr[i];										
					}
					else
					{								
						if(page.toLowerCase()=='clients')
						{
							params[i-1]="idClient="+arr[i];
							
						}
						if(page.toLowerCase()=='domains')
						{
							params[i-1]="idDomain="+arr[i];								
							
						}
						if(page.toLowerCase()=='solutions')
						{									
							params[i-1]="idSolution="+arr[i];
							
						}
					}
					
				}
			}
										
		}
		
		var oldPage=document.getElementById("pageHidden").value.toLowerCase();
		var lastDynamicPage=document.getElementById("lastDynamicPage");				
		
		if(page.toLowerCase()=='achievements' || page.toLowerCase()=='clients' || page.toLowerCase()=='domains' || page.toLowerCase()=='solutions')
		{					
			if(params&& params.length && params.length>0)	
			{
				if(page.toLowerCase()==lastDynamicPage.value.toLowerCase() || (page.toLowerCase()=='clients' && lastDynamicPage.value.toLowerCase()=='achievements' ))
					loadTop=false;						
			}
			else if(page.toLowerCase()==lastDynamicPage.value.toLowerCase() || (page.toLowerCase()=='clients' && lastDynamicPage.value.toLowerCase()=='achievements' ))
			{						
				loadTop=false;		
			}
			
			lastDynamicPage.value=page;
								
		}
		else if(page.toLowerCase()=='webcast'|| page.toLowerCase()=='testimonials' || page.toLowerCase()=='casestudy')
			{		
			//	alert('aici');				
					//loadTop=false;
					//if(page.toLowerCase()==lastDynamicPage.value.toLowerCase() || (page.toLowerCase()=='clients' && lastDynamicPage.value.toLowerCase()=='achievements' ))
					
					if(page.toLowerCase()==lastDynamicPage.value.toLowerCase())
						loadTop=false;
			}
		
			lastDynamicPage.value=page;
		/*
		
		*/
		//alert("loadTop"+loadTop);
		//alert("params="+params+)
		//alert(page);
		if(page.toLowerCase()!='frrresh')		
		{
			page_manager.updateMenu(page);				
			page_manager.loadPage(page,params,loadTop,loadLeft,loadContent,paramsOrig);				
		
		}
		else
		{
			//alert(oldPage);
			if(oldPage=='')
			{
				page_manager.updateMenu("Home");				
				page_manager.loadPage("Home",false,true,true,true,false);
			}
			else
			{
				page_manager.updateMenu(page);				
				page_manager.loadPage(oldPage,params,loadTop,loadLeft,loadContent,paramsOrig);	
			}
			window.open('http://www.econceptgroup.com/blog/');			
		}
	}
	else
	{
		page_manager.updateMenu("Home");				
		page_manager.loadPage("Home",false,true,true,true,false);
	}
	
}


/* PAGE MANAGER */

function PageManager()
{
	// configuration
		// if there are more than bulk_count_threshold requests withing bulk_time_threshold seconds, the web page assumes
		// that it doesn't work properly, and it will stop responding and throw an error message
	this.bulk_time_threshold = 2;
	this.bulk_count_threshold = 5;

	this.last_page = null;
	this.last_try = 'Home';
	this.first_request_in_bulk_time = (new Date()).getTime() - 1000 * 3600;
	this.bulk_request_count = 0;
}

PageManager.prototype =
{
	/*
		PageManager::loadPage(string page_name, string[] page_params)
		Loads the given page
		page_params is optional
	*/
	loadPage: function (page_name, page_params,loadTop,loadLeft,loadMain,paramsOrig)
	{
		
		var ispageAchievements=false;				
		var notLoadTopAchievements = false;				
		if(page_name.toLowerCase()=='achievements' || page_name.toLowerCase()=='clients' || page_name.toLowerCase()=='domains'|| page_name.toLowerCase()=='solutions' || page_name.toLowerCase()=='webcast'|| page_name.toLowerCase()=='testimonials' || page_name.toLowerCase()=='casestudy')
		{
			ispageAchievements=true;
			
			document.getElementById("subMenuArea").style.display='inline';	
			
			document.getElementById("subMenuClients").className='subMenuLinks';
			document.getElementById("subMenuSolutions").className='subMenuLinks';
			document.getElementById("subMenuDomains").className='subMenuLinks';
			document.getElementById("subMenuTestimonials").className='subMenuLinks';
			document.getElementById("subMenuWebCast").className='subMenuLinks';
			document.getElementById("subMenuCaseStudy").className='subMenuLinks';	
			
			document.getElementById("liSubMenuClients").className='';			
			document.getElementById("liSubMenuSolutions").className='';	
			document.getElementById("liSubMenuDomains").className='';	
			document.getElementById("liSubMenuTestimonials").className='';	
			document.getElementById("liSubMenuWebCast").className='';
			document.getElementById("liSubMenuCaseStudy").className='';				
			 
			if(loadTop==true)
			{
				LoadTopPicturesMovie();
				if(!$JQ.browser.msie)	
					notLoadTopAchievements =true;
			}
			
		}
		else
		{
			document.getElementById("subMenuArea").style.display='none';
			if($JQ.browser.msie)	
			{
				var divTop=document.getElementById("top_content");	
				var iFrame = document.getElementById("iframePictureViewer");        			
				iFrame.style.display="none";
	        	divTop.style.display="inline";
			}
		}	
		
						
			switch(page_name.toLowerCase())
			{
				
				case "clients":
					document.getElementById("liSubMenuClients").className='subMenuLiSelected';	
					document.getElementById("subMenuClients").className='subMenuLinksSelected';	
				break;    
				 
				case "solutions":
					document.getElementById("liSubMenuSolutions").className='subMenuLiSelected';	
					document.getElementById("subMenuSolutions").className='subMenuLinksSelected';	
				break;
				
				case "domains":
					document.getElementById("liSubMenuDomains").className='subMenuLiSelected';	
				  	document.getElementById("subMenuDomains").className='subMenuLinksSelected';	
				break;  
				  
				case "testimonials":
					document.getElementById("liSubMenuTestimonials").className='subMenuLiSelected';	
				  	document.getElementById("subMenuTestimonials").className='subMenuLinksSelected';	
				break; 
				 
				case "webcast":
					document.getElementById("liSubMenuWebCast").className='subMenuLiSelected';	
				  	document.getElementById("subMenuWebCast").className='subMenuLinksSelected';	
				break;
	
				case "casestudy":
					document.getElementById("liSubMenuCaseStudy").className='subMenuLiSelected';	
				  	document.getElementById("subMenuCaseStudy").className='subMenuLinksSelected';	
				break;    
			
			}

		document.getElementById("pageHidden").value=page_name;
		
		if (!page_params)
		{
			var page_params = [];			
		}
		if(paramsOrig&& paramsOrig.length>0)
		{					
				document.title='e-concept :: '+paramsOrig[paramsOrig.length-1];				
		}
		else
		{
			switch (page_name.toLowerCase())
			{				
				case 'home':
						document.title='ramai unic! e-concept Custom Software';
					break;
				case 'story':
						document.title='de ce custom software - e-concept';
					break;
				case 'services':
						document.title='Consultanta, Dezvoltare, Implementare - Custom Software - e-concept';
					break;
				case 'achievements':
						document.title='Business Intelligence, Colaborare, Comercial, Management, Operatiuni, Web - e-concept';
					break;
				case 'clients':
						document.title='e-concept :: '+page_name;		
					break;	
				case 'domains':
						document.title='e-concept :: '+page_name;		
					break;				
				case 'solutions':
						document.title='e-concept :: '+page_name;		
					break;				
				case 'webcast':
						document.title='e-concept :: '+page_name;		
					break;				
				case 'testimonials':
						document.title='e-concept :: '+page_name;		
					break;				
				case 'casestudy':
						document.title='e-concept :: '+page_name;		
					break;				
				case 'contact':
						document.title='ramai unic! e-concept Custom Software';	
					break;
			}
			
		}
		
		var location_hash = page_name;
		var that = this;
		
		if(that!=null && that.last_page!=null)
		{
			//alert(that.last_page+this.last_try);
			if(that.last_page!=location_hash)
				this.last_try=that.last_page;
		}
		else
			this.last_try=page_name;
			
		that.last_page = page_name;						
		
		if(loadMain==true)
			this.loadPageElement(page_name, page_name, 'main_content', page_params);
		
		if(loadLeft==true)
			this.loadPageElement(page_name, 'left_content', 'main_left_container', page_params);
		//alert(loadTop)
		if(loadTop==true && notLoadTopAchievements==false)		
		{		
			
			this.loadPageElement(page_name, 'top_content', 'top_content', page_params);			
		}
		
		if(ispageAchievements==true)
		{
			
			if(loadTop==false)
			{				
				if(paramsOrig&& paramsOrig.length>0)
				{
						ScriptSelectAchivements2(page_name,paramsOrig[paramsOrig.length-1],false);						
				}
			}
			else
			{				
				if(paramsOrig&& paramsOrig.length>0)
				{					
						ScriptSelectAchivements2(page_name,paramsOrig[paramsOrig.length-1],false);					
				}
			}
		}
		
	},

	getPagePosition: function ()
	{
		var top = document.body.scrollTop;
		if (!top)
		{
			if (window.pageYOffset)
			{
				top = window.pageYOffset;
			}
			else
			{
				top = (document.body.parentElement ? document.body.parentElement.scrollTop : 0);
			}
		}
		var left = document.body.scrollLeft;
		if (!left)
		{
			if (window.pageXOffset)
			{
				left = window.pageXOffset;
			}
			else
			{
				left = (document.body.parentElement ? document.body.parentElement.scrollLeft : 0);
			}
		}
		return [left, top];
	},

	updateMenu: function (page_name)
	{
		var nr = 0;
		switch (page_name.toLowerCase())
		{
			case 'home':
				nr = 1;
				break;
			case 'story':
				nr = 2;
				break;
			case 'services':
				nr = 3;
				break;
			case ('achievements' || 'clients' || 'domains'|| 'solutions' || 'webcast'|| 'testimonials' || 'casestudy'):
				nr = 4;
				break;
			case 'frrresh':
				nr = 5;
				break;
			case 'contact':
				nr = 6;
				break;
		}
		if (nr)
		{
			if(BrowserDetect.browser=="Explorer")
				$('main_menu').contentWindow.flashSetMenuSelected(nr);
				//setTimeout(function () { $('main_menu').contentWindow.flashSetMenuSelected(nr) }, 1);
			else
				flashSetMenuSelected(nr);			
		}
	},

	/*
		PageManager::loadPageElement(string page_name, string content_name, string element_id, string[] page_params)
		Load the given content as part of the given page and put that content into element_id as innerHTML
		page_params is an array of parametes to be sent to the page as part of the POST request like so: param0=page_params[0], param1=page_params[1], etc
	*/
	loadPageElement: function (page_name, content_name, element_id, page_params)
	{
		//alert(page_name);
		var that = this;
		
		// build the params_obj variable which will contain the parameters to be sent to the page
		// this is an object which will be serialized by the ajax() function
		var params_obj = {};
		switch(page_name.toLowerCase())
		{
			case ('clients' || 'domains'|| 'solutions' || 'webcast'|| 'testimonials' || 'casestudy'):
				params_obj['page'] =  page_name;
			break;
			default:
				params_obj['page'] = page_name;
			break;
		}
		//alert(content_name)
		switch(content_name.toLowerCase())
		{			
			case ('clients' || 'domains'|| 'solutions' || 'webcast'|| 'testimonials' || 'casestudy') :
				params_obj['content'] = 'Achievements';
			break;
			
			
			default:
				params_obj['content'] = content_name;
			break;
		}
				
		params_obj['ajax'] = 1;		
		if(page_params.length>0)
			params_obj['param1'] = page_params.length;
			
		for (var i = 0; i < page_params.length; ++i)
		{
			//alert(page_params[i]);
			params_obj['param' + (i + 2)] = page_params[i];
		}				
		ajax
		(		
			// url
			'/index.php',
			// page params
			params_obj,
			// callback
			//function (result) { if (result !== null) { that.last_page = page_name; $(element_id).innerHTML = result; } }
			function (result) { if (result !== null) {$(element_id).innerHTML = result; } }
		);
		
	},

	/*
		PageManager::initialize()
		Initialize the page manager, this should be called as soon as the page finishes loading (but not before)
		It loads the content for the current url hash and launches the hash watching timer
	*/
	initialize: function ()
	{
		var that = this;
		//this.checkURLInterval = setInterval(function () { that.checkURL(); }, 100);
		//alert('init_manager');
		//this.checkURLInterval = setInterval(function () { that.checkURL(); }, 5000);
		//this.checkURL();
	},

	/*
		PageManager::checkURL()
		Check the current url hash and, if it's different from the last hash we had, load the new page
	*/
	checkURL: function ()
	{		
		// if we've already loaded this hash page, gently exit the function		
		var hash = location.hash.substr(1);	
		if (hash == this.last_try)
		{			
			return;
			//exit();
		}
		
		// check if this url change is part of a massive bulk request which might be caused by a browser/server bug
		var now = (new Date()).getTime();
		if (now - this.first_request_in_bulk_time < this.bulk_time_threshold * 1000)
		{
			if (++this.bulk_request_count > this.bulk_count_threshold)
			{
				clearInterval(this.checkURLInterval);
				var msg = [
					'Oops! Apparently we\'re not perfect yet.',
					'Something went wrong and your web browser went crazy because of the JavaScript on our web page',
					'We would like to receive the URL which you were accessing and the version of your browser, to help us investigate this',
					'This is normally done automatically by the web page, but only if you agree to share that information with is',
					'',
					'Would you like to assist us by allowing that information to be sent to us?'
					];
				var msg2 = [];
				if (confirm(msg.join('\r\n')))
				{
					msg2[0] = 'Thank you for your help!';
				}
				msg2[msg2.length] = 'Our website has been roughly tested on Firefox 3, Internet Explorer 6/7, Opera and Chrome';
				msg2[msg2.length] = 'You might want to try one of those browsers, sorry for the inconvenience';
				msg2[msg2.length] = '- econcept';
				alert(msg2.join('\r\n'));
				return false;
			}
			else
			{
				// if everything was ok, this could be the begining of a new bulk request - hopefully not!
				this.first_request_in_bulk_time = (new Date()).getTime();
			}
		}
		
		// build list of page parameters from the url hash
		var page_params = [];
		var slash = hash.indexOf('/');		
		if (slash >= 0)
		{
			
			var page_params = hash.substr(slash + 1).split('/');
			var len = page_params.length;
			if (len && (page_params[len - 1] == ''))
			{
				--page_params.length;
			}
			hash = hash.substr(0, slash);
			
		}		
		
		if (hash == '')
		{
			
			hash = 'Home';
		}
		
		/*		
		var search="/#"+this.last_try;
		//alert(search);
		var pg = document.location.toString();
		*/		
		// load page
		//if(pg.indexOf(search)==-1)
		//{
			//alert('aici');
			//this.updateMenu(hash);
			//this.loadPage(hash, page_params);
		//}
		//else		
			//return;
	}

}

var page_manager = new PageManager();
onLoad(function () { page_manager.initialize() } );
