/* General */
function $(name)
	{
	return document.getElementById(name);
	}
var uiControl = new Object();

Array.prototype.sortNumber = function(a,b)
	{
	return a - b;
	}

Array.prototype.remove=function(s)
	{
	for(i=0;i<this .length;i++)
		{
		if(s==this[i]) this.splice(i, 1);
		}
	}

String.prototype.toParameters = function(s,vs){
	var sep = ";";
	var valsep = "=";
	
	if(s)	{
		sep = s;
		valsep = vs;
		}

	var par = {}
	var prop = this.split(sep);
					
	for(var i=0;i<prop.length;i++)
		{
		var cprop = prop[i].split(valsep);
		if(cprop.length>=2)
			{
			var param = cprop.shift();
			par[param] = cprop.join("=");
			}
		}
	return par;
	}


/* Forum functions */
function insertStyling(tag, txtarea, noEndTag)
	{
	if(!txtarea) return false;
	txtarea = document.getElementById(txtarea);
	var scrollHere = txtarea.scrollTop;

	var editorCode = txtarea.value;
	var wrapIt = editorCode.substring(txtarea.selectionStart, txtarea.selectionEnd);
	newString = new String (wrapIt);
	if(!noEndTag)
		{
		newString = "["+tag+"]"+wrapIt+"[/"+tag+"]";
		}
	else	newString = wrapIt+"["+tag+"]";
	var startPos = txtarea.selectionStart;
	var endPos = txtarea.selectionEnd;
	txtarea.value = txtarea.value.substring(0, startPos) + newString + txtarea.value.substring(endPos, txtarea.value.length);

	txtarea.scrollTop = scrollHere;
	}

var wrapContainer = new Array();
var wrapContainerI;
var testi;
var wrappedCode;

function insertAtCursor(myField, myValue)
	{
	if (document.selection)
		{
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
		}

	else if (myField.selectionStart || myField.selectionStart == '0')
		{
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
		}
	else	{
		myField.value += myValue;
		}
	}



/* CSS */
function attachStyles()
	{
	var attachElements = document.getElementsByTagName("div");
	for(var i=0; i<attachElements.length; i++)
		{
		if(attachElements[i].className == "rounded")
			{
			var findInput = attachElements[i].getElementsByTagName("input");
			findInput[0].onfocus = 	function(){this.parentNode.className = "roundedFocus";}
			findInput[0].onblur = 	function(){this.parentNode.className = "rounded";}
			}
		}
	}

function formatFormElements()
	{
	// Textarea
	var attachElements = document.getElementsByTagName("textarea");
	for(var i=0; i<attachElements.length; i++)
		{
		attachElements[i].onfocus = function(){this.className = "focus"}
		attachElements[i].onblur = function(){this.className = ""}
		}
	}


// ******* NEWS ****** //
function updateNewsPage(lastID, targetElement)
	{
	var testi = document.getElementsByTagName("div");
	for (var i=0; i < testi.length; i++)
		{
		if(testi[i].className.indexOf('widgetLatestNews') != -1)
			{
			targetID = testi[i];
			}
		}
	fixedPointAjaxFramework.addToLine(['/components/news/widget_latest_news.php?lastID='+lastID, targetID, true, false, false]);
	}




/* Passcode */
var passCode;
function randomizePassCode()
	{
	passCode = Math.round(Math.random()*89999)+10000;
	if(document.getElementById("passCode"))
		{
		document.getElementById("passCode").innerHTML = passCode;
		document.getElementById("passcode").value= passCode;
		}
	}

function validatePassCode(submitForm, elem, elem2)
	{
	if(elem.value == passCode)
		{
		if(!elem2 || elem2.value != "") document.forms[submitForm].submit();
		}
	else	alert('Tarkistuskoodi väärin');
	}


function validateForm(submitForm, elem, togglediv)
	{
	var x=0;
	var mustFill = document.getElementsByTagName("input");
	for(var i=0; i < mustFill.length; i++)
		{
		if(mustFill[i].className == "mustfill" && mustFill[i].value == "")
			{
			mustFill[i].style.background = "#ffeeee";
			x++;
			}
		else	{
			mustFill[i].style.background = "#ffffff";
			}
//		alert(mustFill[i].className);
		}
	if(x>0)
		{
		document.getElementById(togglediv).style.display = "block";
		}
	else 	{
		document.getElementById(togglediv).style.display = "none";
		if(elem.value == passCode)
			{
			document.forms[submitForm].submit();
			}
		else	alert('Tarkistuskoodi väärin');
		}
	return false;
	}



function toggleExpander(item)
	{
	if($(item).scrollHeight != parseInt($(item).style.height)) fpTools.animate.init($(item), animate._height, 0, $(item).scrollHeight, 8, 30);
	else  fpTools.animate.init($(item), animate._height, $(item).scrollHeight, 0, 8, 30);
	}
	

function addLoadEvent(func)
	{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
		{
		window.onload = func;
		}
	else	{
		window.onload = function()
			{
			if (oldonload)
				{
				oldonload();
				}
			}
		}
	}


/* Google Maps */
var map = null;
var geocoder = null;

function googleMapsLoad()
	{
	if(!document.getElementById("map")) return false;
	var festivalCity = $("gmapsCity").value;
	var festivalCountry = $("gmapsCountry").value;
	var festivalCoords = $("gmapsCoords").value;

	if(festivalCoords != '')
		{
		var festivalCoordsX = festivalCoords.split(',')[0];
		var festivalCoordsY = festivalCoords.split(',')[1];
		}

	if (GBrowserIsCompatible())
		{
		var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
		map = new GMap2(document.getElementById("map"));
		if(festivalCoords != '')
			{
			map.setCenter(new GLatLng(festivalCoordsX, festivalCoordsY), 11);
			var point = new GLatLng(festivalCoordsX, festivalCoordsY);
			var marker = new GMarker(point);
			map.addOverlay(new GMarker(point));
			}
		map.addControl(new GSmallMapControl());	// Zoom
		map.addControl(new GMapTypeControl(), bottomRight);
		geocoder = new GClientGeocoder();
		}
	if(festivalCoords == '')
		{
		var festivalLocation = festivalCity + ", " + festivalCountry;
		showAddress(festivalLocation);
		}
	}

function showAddress(address)
	{
	geocoder.getLatLng(address,function(point)
		{
		if (!point)
			{
			showAddress2($("gmapsCity").value);
			}
		else	{
			map.setCenter(point, 11);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			}
		});
	}

function showAddress2(address)
	{
	geocoder.getLatLng(address,function(point)
		{
		if (!point)
			{
			map.setCenter(new GLatLng(64.7553, 25.5761), 1);
			var center= new GLatLng(64.7553, 25.5761);
			var marker = new GMarker(center);
			map.addOverlay(marker);
			marker.openInfoWindowHtml('Osoitetta ei löytynyt');
			}
		else	{
			map.setCenter(point, 11);
			var marker = new GMarker(point);
			map.addOverlay(marker);
			}
		});
	}

window.onresize = function()
	{
	fixedPointUiControl.init();
	}

onload = function()
	{
	attachStyles();
	formatFormElements();
	randomizePassCode();
	fixedPointUiControl.init();
	googleMapsLoad();
	}

function showBandInfo(elem)
	{
	var bandInfo = elem.parentNode.getElementsByTagName('div');
	if(!bandInfo[0].style.display || bandInfo[0].style.display == 'none')
		{
		bandInfo[0].style.display = 'block';
		}
	else	{
		bandInfo[0].style.display = 'none';
		}
	}