var locale;
var fullLocale;
var feed;
var latestProjects;
var projects;
var cvEntries;
var currentPage = 1;
var currentCvCategory = 'Beruf';
var headerText = 1;

// Hilfsmethoden

function remoteJson(listener) {
   if (listener && listener.uri) { // create dynamic script element. 
      script = document.getElementById(listener.domId);
      if (script) // script element may exist from previous call, so ..
         script.parentNode.removeChild(script);  // .. delete it.
      script = document.createElement("script"); // new script element.
      script.setAttribute("type", "text/javascript");
      script.setAttribute("id", listener.domId);
      script.setAttribute("src", listener.uri);
      document.getElementsByTagName("head")[0].appendChild(script);
   }
}

function fromJsonDate(dateString) {
	date = '';
	if (dateString != null) {
		splitted = dateString.split("-");
		date = splitted[2] + "/" + splitted[1] + "/" + splitted[0];
	}
	return date;
}

// Homepage Friendfeed

function friendFeedCallback(feedHash){
	if (feedHash != null) {
		feed = feedHash["entries"];
		if (feed != null && feed.length > 0) {
			count = 1; page = 1;
			feed.each(function(entry) {
				feed_entry_element_div = new Element('div', {className: ("teaser page" + page), style: (page > currentPage ? 'display: none;' : '')});
				feed_entry_element_div_h4 = new Element('h4').update(entry.service.name);
				feed_entry_element_div_p = new Element('p').update(entry.title + ' ');
				feed_entry_element_div_p_a = new Element('a', {href : entry.link, target: '_blank'}).update(locale == 'de' ? 'mehr' : 'more');
				feed_entry_element_div_p.insert(feed_entry_element_div_p_a);
				feed_entry_element_div.insert(feed_entry_element_div_h4)
				feed_entry_element_div.insert(feed_entry_element_div_p);
				$('newsticker').insert(feed_entry_element_div);
				$('newsticker').insert(new Element('span', {className: ("line page" + page), style: (page > currentPage ? 'display: none;' : '')}));
				if (count == 5) {
					count = 1; page++;
				} else {
					count++;
				}
			});
		}
	}
}

function displayNewstickerPage(page) {
	if (page < 1 || page > 6) {
		page = (page < 0 ? 1 : page);
		page = (page > 6 ? 6 : page);
		currentPage = page;
	} else {
		setStateOnNewstickerPagination(page, 1, 'newsticker_previous');
		setStateOnNewstickerPagination(page, 6, 'newsticker_next');
		$$('.page' + currentPage).invoke('hide');
		currentPage = page;
		$$('.newsticker_pagelink').each(function(pageLink){
			if (pageLink.innerHTML == currentPage){
				pageLink.addClassName('active');
			} else {
				pageLink.removeClassName('active');
			}
		});
		$$('.page' + currentPage).invoke('show');
	}
}

function setStateOnNewstickerPagination(page, valueChange, newstickerClassName) {
	if (page == valueChange) {
		$(newstickerClassName).addClassName('inactive');
	} else {
		$(newstickerClassName).removeClassName('inactive');
	}
}

// Homepage Latest Projects

function freelanceStatusLatestProjectsCallback(latestProjectsHash) {
	if (latestProjectsHash != null) {
		latestProjects = latestProjectsHash;
		latestProjects.each(function(project) {
			project_div = new Element('div', {className: "box1"});
			project_div_img = getProjectThumbImage(project);
			project_div_h3 = new Element('h3').update(project.name);
			project_div_p = new Element('p').update(project.description.gsub("\n", "<br/>") + ' ');
			project_div_p_a = new Element('a', {href : "/" + locale + "/projects#" + project.id}).update(locale == 'de' ? 'mehr' : 'more');
			project_div_p.insert(project_div_p_a);
			project_div.insert(project_div_img);
			project_div.insert(project_div_h3);
			project_div.insert(project_div_p);
			$('c2').insert(project_div);
		});
	}
}

function getProjectThumbImage(project) {
	if (!project.screenshot_thumbnail_url.blank() &&
		project.screenshot_thumbnail_url != "https://freelancestatus.com/images/missing.png") {
		project_div_img = new Element('img', {src: project.screenshot_thumbnail_url, alt: project.name});
    } else {
		project_div_img = new Element('img', {src: "/images/default.png", alt: project.name});
	}
	return project_div_img;
}

// Projekte

function freelanceStatusProjectsCallback(projectsHash) {
	if (projectsHash != null) {
		projects = projectsHash;
		projects.each(function(project) {
			wrapper_div = new Element('div', {className: "wrapper"});
			project_box1_div = new Element('div', {className: "box1"});
			project_div_box1_img = getProjectThumbImage(project);
			project_box1_div.insert(project_div_box1_img);
			
			project_box2_div = new Element('div', {className: "box2"});
			project_box2_div_h3 = new Element('h3').update(project.name);
			project_box2_div.insert(project_box2_div_h3);
			
			if (!project.url.blank()) {
				project_box2_div_site_div = new Element('div', {className: "site"});
				project_box2_div_site_div_h5 = new Element('h5').update(project.url);
				project_box2_div_site_div.insert(project_box2_div_site_div_h5);
				project_box2_div.insert(project_box2_div_site_div);
			}
			
			project_box2_div_h5 = new Element('h5').update(project.client + " / " + project.employer + ", " + project.location);
			project_box2_div.insert(project_box2_div_h5);
			
			project_box2_div_p = new Element('p').update(project.description.gsub("\n", "<br/>"));
			project_box2_div.insert(project_box2_div_p);
			
			wrapper_div.insert(project_box1_div);
			wrapper_div.insert(project_box2_div);
			wrapper_div_anchor = new Element('a', {name: project.id});
			wrapper_div.insert(wrapper_div_anchor);
			$('c3').insert(wrapper_div);
		});
	}
}

// Lebenslauf

function cvEntriesCallback(cvEntriesHash) {
	if (cvEntriesHash != null) {
		cvEntries = cvEntriesHash;
		cvEntries.each(function(cv_entry) {
			cv_entry_box2_div = new Element('div', {className: "box2 " + cv_entry.category,
				style: (cv_entry.category == currentCvCategory ? '' : 'display: none;')});
			cv_entry_box2_div_h3 = new Element('h3').update(cv_entry.role);
			cv_entry_box2_div.insert(cv_entry_box2_div_h3);
			
			cv_entry_box2_div_date_div = new Element('div', {className: "date"});
			cv_entry_box2_div_date_div_h5 = new Element('h5').update(cv_entry.from + (cv_entry.to.blank() ? '' : (" - " + cv_entry.to)));
			cv_entry_box2_div.insert(cv_entry_box2_div_date_div.insert(cv_entry_box2_div_date_div_h5));
			
			cv_entry_box2_div_h5 = new Element('h5').update(
				cv_entry.location.blank() ? cv_entry.institution : cv_entry.institution + ", " + cv_entry.location);
			cv_entry_box2_div_p = new Element('p').update(cv_entry.description.gsub("\n", "<br/>"));
			cv_entry_box2_div.insert(cv_entry_box2_div_h5);
			cv_entry_box2_div.insert(cv_entry_box2_div_p);
			
			$('c2').insert(cv_entry_box2_div);
		});
	}
}

function toggleCvCategory() {
	if (currentCvCategory == 'Beruf') {
		$$('.Beruf').invoke('hide');
		$$('.Ausbildung').invoke('show');
		currentCvCategory = 'Ausbildung';
		$('toggleCvCategory').innerHTML = (locale == 'de' ? 'Beruf' : 'Professional');
	} else {
		$$('.Ausbildung').invoke('hide');
		$$('.Beruf').invoke('show');
		currentCvCategory = 'Beruf';
		$('toggleCvCategory').innerHTML = (locale == 'de' ? 'Ausbildung' : 'Education');
	}
}

function changeAboutText() {
	availableTexts = 5;
	new Effect.Fade('header_text',
		{afterFinish: function (obj) {
			headerText < availableTexts ? headerText++ : headerText = 1;
			new Ajax.Request('/' + locale + '/switch_text?text_no=' + headerText, {asynchronous:true, evalScripts:true});
			new Effect.Appear('header_text') }
		}
	);
}

document.observe('dom:loaded', function() {
	if ($('about_link')) {
		$('about_link').observe('click', changeAboutText);
	}
});
