﻿// JScript File

var prefix = '_ctl0_ContentPlaceHolder1_'

function cmdCopy_onclick() {
	var range=document.body.createTextRange()
	var copy=document.getElementById(prefix + "copy")
	range.moveToElementText(copy)
	range.select()
	range.execCommand("copy")
}

function checkAll(){
	//Kontrollera att fältet med antal intervall har ett rimligt värde
	if (KontrolleraAntalIntervall() == false) {
		return(false);
	}
	//Kontrollera om det finns okontrollerade textboxar:
	var txt = document.getElementById(prefix + "txtChanged")
	//strControlChanged = document.Form1.txtChanged.value;	
	strControlChanged = txt.value;	
	if( strControlChanged != "" ){
		//Kör en kontroll på vald textbox:
		elemToCheck = document.getElementById(prefix + strControlChanged);
		if( Text_Changed(elemToCheck) == false ){
			return(false);
		}
	}
	//Validera att alla fält är numeriska:
	var antInt = document.getElementById(prefix + "antalIntervall");
	//numAntalIntervall = document.Form1.antalIntervall.value;
	numAntalIntervall = antInt.value;
	for( i=1; i<=numAntalIntervall; i++){
		//Validera först min...
		strControl = "i" + i + "min";
		elem = document.getElementById(prefix + strControl);
		if (elem != null) {
			strValue = elem.value;
			//Det måste vara numeriskt :
			//(jämförelsen fungerar bäst med punkt ist kommatecken)
			strDot = replace(strValue, ",", ".");
			underkand = isNaN(strDot);
			if( underkand ){
				window.alert("Endast numeriska värden kan anges.");
				elem.focus();
				return false;
			}
		}
		//...sedan max
		strControl = "i" + i + "max";
		elem = document.getElementById(prefix + strControl);
		if (elem != null) {
			strValue = elem.value;
			//Det måste vara numeriskt :
			//(jämförelsen fungerar bäst med punkt ist kommatecken)
			strDot = replace(strValue, ",", ".");
			underkand = isNaN(strDot);
			if( underkand ){
				window.alert("Endast numeriska värden kan anges.");
				elem.focus();
				return false;
			}
		}
	}
}

function KontrolleraAntalIntervall () {
	txt = document.getElementById(prefix + "txtAntalIntervall");
	lbl = document.getElementById(prefix + "lblIntervallFel");
	if (txt.value == "") {
		lbl.innerHTML = "Ange antal intervall";
		return(false);
	}
	if (isNaN(txt.value)) {
		lbl.innerHTML = "Måste vara mellan 1-7";
		return(false);
	}
	if ((txt.value < 1) || (txt.value > 7)) {
		lbl.innerHTML = "Måste vara mellan 1-7";
		return(false);
	}
	return(true);
}

function Text_Changed(ctrl) {

	//När ett minvärde ändras ska även undre maxvärde ändras.
	//Undantag: Om det är det understa minvärdet (nr1) som ändras, 
	//ska inget annat ändras.

    var txtC = document.getElementById(prefix + "txtChanged")
	//Om inget har ändrats har vi inget här att göra:
	if( txtC.value == "" ){
		return(false);
	}else{
		//Rensa variablen för okontrollerade textboxar:
		txtC.value = "";
	}
    //Hämta vilket intevall som ändrats:
    //selectedNo = parseInt(ctrl.name.substring(1,2));
    var prefixLength = prefix.length;
    selectedNo = parseInt(ctrl.name.substring(prefixLength + 1, prefixLength + 2));
    //Kika om det är min eller max som ändrats:
    //minmaxText = ctrl.name.substring(2,5)
    minmaxText = ctrl.name.substring(prefixLength + 2, prefixLength + 5)
    if( minmaxText == "min" ) min = true; else min = false;

	//De yttre gränsvärdena får inte ändras alls:
	if( selectedNo == 1 && min == true ){
		//strMin = document.Form1.minValue.value;
		strMin = document.getElementById(prefix + "minValue").value;
		ctrl.value = strMin;
		return(false);
	}
	//numAntalIntervall = Number(document.Form1.antalIntervall.value);
	numAntalIntervall = Number(document.getElementById(prefix + "antalIntervall").value);
	if( selectedNo == numAntalIntervall && min == false ){
		//strMax = document.Form1.maxValue.value;
		strMax = document.getElementById(prefix + "maxValue").value;
		ctrl.value = strMax;
		return(false);
	}

	//Det måste vara numeriskt :
	//(jämförelsen fungerar bäst med punkt ist kommatecken)
	strDot = replace(ctrl.value, ",", ".");
	underkand = isNaN(strDot);
	if( underkand ){
		window.alert("Endast numeriska värden kan anges.");
		ctrl.focus();
		return(false);
	}
	
	//Värdet måste ligga inom vissa intervall:
	strDot = checkMyInterval(strDot, selectedNo, min) 

	//När vi kollat klart kan vi byta tillbaka till komma:
	myValue = replace(strDot, ".", ",");

    if( min == true ){
		if( selectedNo != 1 ){
			//Ändra kompisen:
			elemToChange = document.getElementById(prefix + "i" + (selectedNo-1) + "max");
			elemToChange.value = myValue;
		}
	}else{
		//if( selectedNo != parseInt(document.Form1.antalIntervall.value) ){
		if( selectedNo != parseInt(document.getElementById(prefix + "antalIntervall").value) ){
			//Ändra kompisen:
			elemToChange = document.getElementById(prefix + "i" + (selectedNo+1) + "min");
			elemToChange.value = myValue;
		}
	}
	ctrl.value = myValue;
}

function checkMyInterval(myValue, myNo, min){

	myNumValue = Number(myValue);
	//myNumMax = Number(replace(document.Form1.maxValue.value, ",", "."));
	myNumMax = Number(replace(document.getElementById(prefix + "maxValue").value, ",", "."));
	//myNumMin = Number(replace(document.Form1.minValue.value, ",", "."));
	myNumMin = Number(replace(document.getElementById(prefix + "minValue").value, ",", "."));

	//Validera att värdet ligger inom yttre intervallet:
	if( myNumValue > myNumMax ) myNumValue = myNumMax;
	if( myNumValue < myNumMin ) myNumValue = myNumMin;

	//Om det INTE är det lägsta intervallet för min, resp högsta för max,
	// ska vi även kolla mot angränsande intervall:
	//Om det ÄR det lägst för min resp hösta för max,
	//får det inte ändras alls.
	if( min == true ){
		if( myNo != 1 ){
			elemLower = document.getElementById(prefix + "i" + (myNo-1) + "min");
			elemValue = Number(replace(elemLower.value, ",", "."));
			if( myNumValue < elemValue ) myNumValue = elemValue;
		}else{
			myNumValue = myNumMin;
		}
	}else{
		//if( myNo != parseInt(document.Form1.antalIntervall.value) ){
		if( myNo != parseInt(document.getElementById(prefix + "antalIntervall").value) ){
			elemHigher = document.getElementById(prefix + "i" + (myNo+1) + "max");
			elemValue = Number(replace(elemHigher.value, ",", "."));
			if( myNumValue > elemValue ) myNumValue = elemValue;
		}else{
			myNumValue = myNumMax;
		}
	}
	
	//Ett minvärde får inte vara högre är sitt eget intervalls maxvärde
	//och precis tvärtom för maxvärden:
	if( min == true ){
		elemMax = document.getElementById(prefix + "i" + (myNo) + "max");
		elemValue = Number(replace(elemMax.value, ",", "."));
		if(myNumValue > elemValue) myNumValue = elemValue;
	}else{
		elemMin = document.getElementById(prefix + "i" + (myNo) + "min");
		elemValue = Number(replace(elemMin.value, ",", "."));
		if(myNumValue < elemValue ) myNumValue = elemValue;
	}
	
	myOutValue = String(myNumValue);
	return(myOutValue);
}

function replace( strIn, strSearch, strReplace ){

	//Letar igenom strIn, på jakt efter strSearch (ett tecken).
	//Om den hittar något byts detta mot strReplace.
	iPos = strIn.indexOf(strSearch);
	if( iPos >= 0  ){
		strOut = strIn.substring(0, iPos) + strReplace + strIn.substring( (iPos+1), strIn.length);
	}else{
		strOut = strIn;
	}
	return strOut
}