Array.prototype.in_array = function(search_term) {
	var i = this.length;
	if (i > 0) {
		do {
			if (this[i] === search_term) {
				return true;
			}
		} while (i--);
	}
	return false;
}

function changeStore( select ) {
	
	var storeId = select.options[select.selectedIndex].value;
	window.location = location.search+'&chstid='+storeId;	
	
}

function countChars( textarea, maxlength ) {
	
	var text = textarea.value;
	if ( text.length > maxlength ) {
		text = text.substr(0, maxlength);
		textarea.value = text;
	} //end if
	document.getElementById('charCount').innerHTML = (maxlength-text.length)+' merkkiä jäljellä';
	
}

function errorField( element ) {
	alert('Pakollinen tietokenttä virheellinen tai täyttämättä. Tarkista sivun tiedot!');
	element.focus();
	return false;
} //end errorField 

function hov(loc,cls){
   if(loc.className)
      loc.className=cls;
}

function genUserName( ) {
	
	var username = '';
	for (i=1; i < arguments.length; i++) {
		var field = document.getElementById(arguments[i]);
		username += field.value;
		if ( i < arguments.length-1 ) {
			username += '.';
		} //end if
	} //end for
	
	var target_field = document.getElementById(arguments[0]);
	target_field.value = clearText(username);
	
}

function genKmId( ) {
		
	document.store_info.km_id.value = clearText(document.store_info.store_name.value);
	
}

function checkEmailField( emailField ) {
	
	var emailRegxp = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
	if ( !emailRegxp.test(emailField.value) ) {
		alert('Virheellinen sähköpostiosoite! Tarkista sähköpostiosoitteen muoto.');
		emailField.focus();
		return false;
	}
	return true;
	
} //end checkEmailField

function checkZipcode( zipField ) {
	
	if ( zipField.length != 5 || !isNumeric(zipField.value) ) {
		alert('Virheellinen postinumero! Tarkista postinumeron muoto.');
		zipField.focus();
		return false;
	}
	return false;
	
}

function isNumeric(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
   }
   return IsNumber;  
}

function isInteger(x) {
	var y = parseInt(x);
	if (isNaN(y)) return false;
	return true;
}

function cleanInput( input, defaultText ) {
	
	if ( input.value == defaultText ) {
		input.value = '';
	}
	input.style.color = '#464646';
	
}

function clearText( str ) {
	
	str = str.toLowerCase();
	str = str.replace(/ä/g, 'a');
	str = str.replace(/ö/g, 'o');
	str = str.replace(/å/g, 'a');
	str = str.replace(/ /g, '-');
	re = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|/g;
	// remove special characters like "$" and "," etc...
	return str.replace(re, "");
	
}

function matchPasswds(field1, field2) {
	
	if ( field1.value != field2.value ) {
		alert('Kirjoittamasi salasanan oikeinkirjoitus ei täsmää. Kirjoita salasanat uudelleen!');
		field1.focus();
		return false;
	} //end if
	
	return true;
	
} //end if

function checkForm() {
	
	var forms = document.getElementsByName(arguments[0]);
	var form = forms[0];
	
	if ( typeof arguments[1] != 'undefined' && arguments[1] == 'all_form_fields' ) {
		for (var i=0; i < form.length; i++) {
			if ( !form.elements[i].value ) {
				alert('Pakollinen tietokenttä täyttämättä. Tarkista sivun tiedot.');
				form.elements[i].focus();
				return false;
			} //end if
		} //end for
	} else {
		var required = new Array();
		for (var i=1; i < arguments.length; i++) {
			required[required.length] = arguments[i];
		} //end for
		for (n=0; n < form.length; n++) {
			if ( required.in_array(form.elements[n].name) && !form.elements[n].value ) {
				alert('Pakollinen tietokenttä täyttämättä. Tarkista sivun tiedot.');
				form.elements[n].focus();
				return false;
			} //end if
		} //end for
	} //end if-else
	
	form.submit();
	
} //end function

function confirmForm(Form) {

	for (i=1; i < arguments.length; i++) {
		
		if ( !arguments[i].value ) {
			alert('Pakollinen tietokenttä täyttämättä. Tarkista sivun tiedot.');
			arguments[i].focus();
			return false;
		} //end if
		
	} //end for
	
	arguments[0].submit();
	
}

function confirmRelay(url, text) {
	
	if ( confirm(text) ) {
		window.open(url, 'newwin');
		return true;
	} 
	return false;
	
}

function confirmDelete(okUrl, Text) {
	
	if (confirm(Text)) {
		window.location = okUrl;
	}
	return false;
	
}

function confirmUrl(okUrl, Text) {
	
	if (confirm(Text)) {
		window.location = okUrl;
	}
	return false;
	
}

function getOrder() {
	  var orderList = '';
	  orderedNodes = document.getElementById("sortable_list").getElementsByTagName("li");
	  for (var i=0;i < orderedNodes.length;i++) {
	    orderList += orderedNodes[i].getAttribute('id') + ', ';
	    }
		alert(Sortable.serialize('sortable_list')+'\r\n'+orderList);
}

function selectShow( select ) {
	
	for (var i=0; i < select.options.length; i++ ) {
		if ( i == select.selectedIndex ) {
			ShowContent(select.options[i].value);
		} else {
			HideContent(select.options[i].value);
		} //end if
	} //end for
	
} //end function

function adrSlide() {
	ShowContent('newadr');
	
	var newadrslide = new Fx.Slide('newadr');
	$('addadr').addEvent('click', function(e){
		e = new Event(e);
		newadrslide.toggle();
		e.stop();
	});
	newadrslide.show();
	
}

function HideContent(d) {
	
	document.getElementById(d).style.display = "none";
	
}

function ShowContent(d) {
	
	document.getElementById(d).style.display = "block";
	
}

function ReverseDisplay(d) {
	
	if(document.getElementById(d).style.display != "block") { 
		ShowContent(d); 
	} else { 
		HideContent(d); 
	}
	
}

function ReverseLightbox(d) {
	ReverseDisplay(d);
	ReverseDisplay('fade');
	centerLightboxes('lightbox');
	addNewEvent(window, "resize", centerLightboxes);
	addNewEvent(window, "scroll", centerLightboxes);
}

function ReverseGuidebox(d) {
	ReverseDisplay(d);
	ReverseDisplay('fade');
	centerLightboxes('lightbox');
}

function ReverseImagebox(d) {
	ReverseDisplay(d);
	ReverseDisplay('fade');
	centerImageboxes();
	addNewEvent(window, "resize", centerImageboxes);
}

function ShowImagebox(d, ImgFile, Num) {
	
	window.scrollTo(0, 0);
	
	var box = document.getElementById('ibcontent');
	
	box.innerHTML = '<div align="center">'
				   +'Ladataan tilausikkunaa...'
				   +'<br/><br/>'
				   +'<img src="layout/bcloader.gif" align="middle" alt="Lataus on kesken" />'
				   +'<br/><br/>'
				   +'</div>';
	
	ReverseDisplay(d);
	ReverseDisplay('fade');
	centerImageboxes();
	addNewEvent(window, "resize", centerImageboxes);
	csGetImagebox(ImgFile, Num);
	setTimeout("updateButtons('boxbtn')", 2000);
	setTimeout("activateMoo()", 3000);
}

function UpdateImagebox(ImgFile, Num) {
	
	window.scrollTo(0,0);
	
	var box = document.getElementById('ibcontent');
	
	box.innerHTML = '<div align="center">'
				   +'Ladataan tilausikkunaa...'
				   +'<br/><br/>'
				   +'<img src="layout/bcloader.gif" align="middle" alt="Lataus on kesken" />'
				   +'<br/><br/>'
				   +'</div>';
	
	csGetImagebox(ImgFile, Num);
	setTimeout("updateButtons('boxbtn')", 2000);
	setTimeout("activateMoo()", 2500);
	
}

function ShowPreviewbox(ImgFile, Num) {
	
	window.scrollTo(0,0);
	
	var box = document.getElementById('ibcontent');
	
	box.innerHTML = '<div align="center">'
				   +'Ladataan esikatselukuvaa...'
				   +'<br/><br/>'
				   +'<img src="layout/bcloader.gif" align="middle" alt="Lataus on kesken" />'
				   +'<br/><br/>'
				   +'</div>';
	
	csPreviewbox(ImgFile, Num);
	as = document.getElementsByName('boxbtn');
	setTimeout("btn.beautify(as)", 1000);
	
}

function test(id) {
	
	var test = document.getElementById(id);
	if ( test != null ) {
		return false;
	} else {
		//setTimeout("wait('"+id+"', "+time+")", time);
		return true;
	} //end if-else
	
}

function activateMoo() {
	
	var accordion = new Accordion('h3.class', 'div.products', {
		opacity: true,
		'alwaysHide' : true, 
		'start': 'all-closed',
		onActive: function(toggler, element){
			toggler.setStyle('color', '#828282');
			toggler.setStyle('fontStyle', 'italic');
		},
		onBackground: function(toggler, element){
			toggler.setStyle('color', '#828282');
			toggler.setStyle('fontStyle', 'normal');
		}
	}, $('imgclasses'));
		
	var pcs = document.getElementsByTagName('div');
	for (f=0; f < pcs.length; f++) {
		if ( pcs[f].id == 'classpros' ) {
			pcs[f].style.display = 'block';
		} //end if
	} //end for
	
	//accordion.display(0);
	
	var Tips1 = new Tips($$('.phinfo'));
	var Tips2 = new Tips($$('.thumb'));
	
} //end if

function updateButtons( btnName ) {
	
	as = document.getElementsByName(btnName);
	btn.beautify(as);
	
} //end function

function centerLightboxes( ) {
	var boxes = getElementsByClass( 'lightbox' );
	for (x=0; x < boxes.length; x++) {
		winWidth = getViewportWidth();
		winHeight = getViewportHeight();
		//var div = document.getElementById(d);
		var div = boxes[x];
		var divWidth = div.style.width;
		divWidth = divWidth.substr(0, (divWidth.length-2));
		div.style.left = parseInt(((((winWidth-divWidth)/2)/winWidth)*100)-2)+'%';
		div.style.top = parseInt(getScrollTop()+30)+'px';
	}
	setMaskSize();
}
function centerImageboxes( ) {
	var boxes = getElementsByClass( 'imagebox' );
	for (x=0; x < boxes.length; x++) {
		winWidth = getViewportWidth();
		winHeight = getViewportHeight();
		//var div = document.getElementById(d);
		var div = boxes[x];
		var divWidth = div.style.width;
		divWidth = divWidth.substr(0, (divWidth.length-2));
		div.style.left = parseInt(((((winWidth-divWidth)/2)/winWidth)*100)-2)+'%';
	}
	setMaskSize();
}

/**
 * Sets the size of the popup mask.
 *
 */
function setMaskSize() {
				
	var fullHeight = getViewportHeight();
	var fullWidth = getViewportWidth();
	
	var x,y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
	     //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
		y = document.body.offsetHeight;
	}
	
	// Determine what's bigger, scrollHeight or fullHeight / width
	if (fullHeight > y) {
		popHeight = fullHeight;
	} else {
		popHeight = y;
	}
	
	if (fullWidth > x) {
		popWidth = fullWidth;
	} else {
		popWidth = x;
	}
	
	var mask = document.getElementById('fade');
	mask.style.height = (popHeight+150) + "px";
	mask.style.width = popWidth + "px";
	
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
