// Funkcija ki vstavi javaScript za željenim vozliščem
function insertAfter( referenceNode, newNode )
{
    referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}
/**
* @Konstruktor
*
**/
BMICalculator = function() {

  //spremenljivke ki jih potrebujemo
	var isInitialized;
	var standardMetricFlag;
	var weight;	
	var meters;
	var error;
	var results;
	var bmiVariable;
	var targetDivId;
	var importJsStr;
	
	//teh spremenljivk več ne rabimo
	//var feet;
	//var inches;
	

	//tukaj nastavimo vrednosti spremenljivkam
	this.importJsStr='';
	this.isInitialized = true;
	
	//Nastavimo začetne vrednosti na metric in spremenljivke na 10000 za izračun
	this.standardMetricFlag = "metric";
	this.bmiVariable = 10000;
	this.targetDivId = '';	

	}


	BMICalculator.prototype={

		/**
		* Nastavimo trenutne vrednosti
		*
		**/
		initializeBMICalculator:function() {

			if (!(this.isInitialized)){ this.initializeBMICalculator(); }

			this.isInitialized = false;
			this.weight = document.getElementById("bmiCurrentWeight");
			this.error = document.getElementById("calcErrorBox");
			this.meters = document.getElementById("bmiMeters");
			this.results = document.getElementById("bmiResult");
			//ne nastavljamo več ameriških vrednosti
			//this.feet = document.getElementById("bmiFeet");
			//this.inches = document.getElementById("bmiInches");
			//this.appendScripts();
		} //end initializeBMICalculator
		,
		/**
		* Koda za izpis izgleda kalkulatorja
		*
		**/
		buildCalculator:function() {
			
        
		//	var htmlChunk = '<div class="bmiHolder"><div class="bmiCalculatorBox"><div class="doubleLine"></div>';
		    var htmlChunk = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">';
		    htmlChunk += '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body>';
		    htmlChunk += '<div class="bmiHolder"><div class="bmiCalculatorBox"><div class="doubleLine"></div>';
				htmlChunk += '<div class="bmiCalculatorBoxLeft">';
				htmlChunk += '<div class="titleHolder">';
				htmlChunk += '<div class="calculatorTitle">Oceni svojo težo z ITM</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div id="calcErrorBox" class="bmiErrorBox errorText ">';
				htmlChunk += '</div>';
				htmlChunk += '<div class="calculatorInputRow">';
				
        
        // Odvečna koda
        
        /*
        htmlChunk += '<div class="calculatorInputSection">';
				htmlChunk += '<div class="calculatorHeading">Merski sistem</div>';
				htmlChunk += '<div class="calculatorSubHeading  calculatorSubHeadingMargin">metrični</div>';
				htmlChunk += '<select id="measurement" class="calculatorSubHeading" onchange="bmi.setStandardMetricFlag(this.value);" style="width:100px;" size="1">';
				htmlChunk += '<option value="metric">metrični</option>';
				htmlChunk += '<option value="standard">ameriški</option>';
				htmlChunk += '</select>';
				htmlChunk += '</div>';
				*/
				
				htmlChunk += '<div class="calculatorInputSection bmiMarginLg">';
				htmlChunk += '<div class="calculatorHeading">tvoja teža</div>';
				htmlChunk += '<div class="calculatorSubHeading  calculatorSubHeadingMargin">vpiši kg</div>';
				htmlChunk += '<input type="input" id="bmiCurrentWeight" class="calculatorSubHeading" style="width:87px;_margin-left:-13px;" value="" /> ';
				htmlChunk += '</div>';
				htmlChunk += '<div class="calculatorInputSection bmiMarginSm">';
				htmlChunk += '<div class="calculatorHeading">tvoja višina </div>';
				
				// Odvečna koda
				
        /*
				htmlChunk += '<div id="bmiFeetRow" class="calculatorInputSectionInner">';
				htmlChunk += '<div class="calculatorSubHeading  calculatorSubHeadingMargin">Feet</div>';
				htmlChunk += '<input type="input" id="bmiFeet" class="calculatorSubHeading" style="width:40px;" value="" />';
				htmlChunk += '</div>';
				htmlChunk += '<div  id="bmiHeightRow" class="calculatorInputSectionInner">';
				htmlChunk += '<div class="calculatorSubHeading  calculatorSubHeadingMargin">Inches</div>';
				htmlChunk += '<input type="input" id="bmiInches" class="calculatorSubHeading" style="width:40px;" value=""	/>';
				htmlChunk += '</div>';
				*/
				
				htmlChunk += '<div id="bmiMeterRow" class="calculatorInputSectionInner">';
				htmlChunk += '<div class="calculatorSubHeading  calculatorSubHeadingMargin">vpiši cm</div>';
				htmlChunk += '<input type="input" id="bmiMeters" class="calculatorSubHeading" style="width:40px;" value="" />';
				htmlChunk += '</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="calculatorInputSectionButton">';
				htmlChunk += '<div class="calculateButton" onclick="return bmi.calculateBMIFormula()"></div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="line"></div>';
				htmlChunk += '<div class="bmiKeyBox">';
				htmlChunk += '<div class="bmiKeyBoxTitleRow1">vaš ITM rezultat</div>';
				htmlChunk += '<div class="bmiKeyBoxDataRow bmiKeyBoxDataRowBB">';
				htmlChunk += '<div>manj kot 18.5</div>';
				htmlChunk += '<div>ste presuhi</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="bmiKeyBoxDataRow bmiKeyBoxDataRowBB">';
				htmlChunk += '<div>18.5 - 24.9</div>';
				htmlChunk += '<div>normalna teža</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="bmiKeyBoxDataRow bmiKeyBoxDataRowBB">';
				htmlChunk += '<div>25.0 - 29.9</div>';
				htmlChunk += '<div>ste debeli</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="bmiKeyBoxDataRow">';
				htmlChunk += '<div>30.0 in več</div>';
				htmlChunk += '<div>izredno debeli</div>';
				htmlChunk += '</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="bmiResultBox">';
				htmlChunk += '<div class="bmiKeyBoxTitleRow2">rezultat</div>';
				htmlChunk += '<div id="bmiResult" class="bmiResultText">0.0</div>';
				htmlChunk += '</div>';
				htmlChunk += '</div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="bmiCalculatorBoxRight"></div>';
				htmlChunk += '</div>';
				htmlChunk += '<div class="doubleLine"></div>';
				htmlChunk += '</div>';
				htmlChunk += '</body></html>';

      //Vstavljanje kode na željeno mesto
			if (document.getElementById(this.targetDivId))	{
				document.getElementById(this.targetDivId).innerHTML=htmlChunk;				
			}
			else {
        temp = document.getElementById("uvod");
				var obj = document.createElement("DIV");
				obj.innerHTML = htmlChunk;
        insertAfter(temp,obj);
			}

		}
		,
		/**
		* Funkcija za izračun BMI po formuli
		*
		**/
		calculateBMIFormula:function() {

			var bmi;

			
			//Preverimo pravilnosti vnosov v vnosna polja ( višino, težo )
			var inputValidationSuccess = this.validateInputs();
			if (inputValidationSuccess) return false;
			
			//Kličemo funkcijo za izračun BMI po formuli
			bmi = this.calculateBMI();
						
			//Prikažemo rezultate
			this.results.innerHTML = bmi;
			this.results.className = 'bmiResultTextD';

		} //end calculateBMIFormula
		,
		/**
		* Izračunamo BMI samo še za metrične vrednosti / standard ignoriramo vedno
		*
		**/
		calculateBMI:function() {
			var bmi = 0;
			
			if (this.standardMetricFlag == "standard") {
				//Calculate Total Height in Inches*/
				var totalHeightInInches = (Math.abs(this.feet.value) * 12) + Math.abs(this.inches.value);

				//English BMI Formula: BMI = ( Weight in Pounds / ( Height in inches ) x ( Height in inches ) ) x 703	
				bmi = (Math.abs(this.weight.value) /  (Math.abs(totalHeightInInches) * Math.abs(totalHeightInInches))) * this.bmiVariable;
		
			} 
      else {
				bmi = Math.abs(this.weight.value) /  (Math.abs(this.meters.value) * Math.abs(this.meters.value)) * this.bmiVariable;;
			}

			return this.roundNumber(bmi,1);
			

		}//end calculateEnglishBMIFormula
		,
		/**
		* public 
		* @param num
		* @param dec
		**/
		roundNumber:function(num,dec) {

			var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
			return result;

		}
		,
		/**
		* Funkcija ki preverja napake ob vnosu
		*
		**/
		validateInputs:function() {
			
			//Check to see if value is entered
			if (this.weight.value.isEmpty())
			{
				//this.displayErrorBox(errorMsgEnterValue)
				
				//izpiši napako, če uporabnik ne vnese teže
				this.displayErrorBox('Prosimo vnesite težo!')
				this.weight.focus();
				return true;
			}
			else {
				clearText(this.error);
			}

			//Check to see if it is a valid number
			if (isNaN(parseFloat(this.weight.value)))
			{
				//this.displayErrorBox(errorMsgNaN)
				
				//preveri če je število
				this.displayErrorBox('Vnesite število!')
				this.weight.value='';
				this.weight.focus();
				return true;
			}
			else {
				clearText(this.error);
			}

/* Mere so le še metrične in ne več ameriške

			if (this.standardMetricFlag == "standard") {

				//Check to see if value is entered
				if (this.feet.value.isEmpty())
				{
					this.displayErrorBox(errorMsgEnterValue)
					this.feet.focus();
					return true;
				}
				else {
					clearText(this.error);
				}

				//Check to see if it is a valid number
				if (isNaN(this.feet.value))
				{
					this.displayErrorBox(errorMsgNaN)
					this.feet.value='';
					this.feet.focus();
					return true;
				}
				else {
					clearText(this.error);
				}

				//Check to see if value is entered
				if (this.inches.value.isEmpty())
				{
					this.displayErrorBox(errorMsgEnterValue)
					this.inches.focus();
					return true;
				}
				else {
					clearText(this.error);
				}

				//Check to see if it is a valid number
				if (isNaN(this.inches.value))
				{
					this.displayErrorBox(errorMsgNaN)
					this.inches.value='';
					this.inches.focus();
					return true;
				}
				else {
					clearText(this.error);
				}

				//Make sure INCHES is < 12
				if (this.inches.value > 11)
				{
					this.displayErrorBox(errorInchesMax)
					this.inches.focus();
					return true;
				}
				else {
					clearText(this.error);
				}

			}
			else {
				*/
				//Check to see if value is entered
				if (this.meters.value.isEmpty())
				{
					//this.displayErrorBox(errorMsgEnterValue)
					
					//javi napako, če uporabnik ne vnese višine
					this.displayErrorBox('Prosim vnesite višino!')
					this.meters.focus();
					return true;
				}
				else {
					clearText(this.error);
				}

				//Check to see if it is a valid number
				if (isNaN(this.meters.value))
				{
					//this.displayErrorBox(errorMsgNaN)
					
					//preveri če je število
					this.displayErrorBox('Vnesite število!')
					this.meters.value='';
					this.meters.focus();
					return true;
				}
				else {
					clearText(this.error);
				}
		

			//}

		}//end validateInputs
		,
		/**
		* public 
		* @param {String} val This is a string parameter
		**/
		displayErrorBox:function(message) {
		
			this.error.innerHTML=message;
			this.error.className='bmiErrorBox errorText show';
		
		}
		,
		/**
		*
		*
		**/
		performToggle:function() {
			
			
			if (this.standardMetricFlag == "standard") {
				
				document.getElementById("bmiFeetRow").className = 'calculatorInputSectionInner dBlock';
				document.getElementById("bmiHeightRow").className = 'calculatorInputSectionInner dBlock';
				document.getElementById("bmiMeterRow").className = 'dNone';
			}
			else {

				document.getElementById("bmiFeetRow").className = 'dNone';
				document.getElementById("bmiHeightRow").className = 'dNone';
				document.getElementById("bmiMeterRow").className = 'calculatorInputSectionInner dBlock';
			}

		}
		,
		/*
		*
		*
		*/
		appendScripts:function() {
		
			var head = document.getElementsByTagName('head').item(0);


			var jsFiles = this.importJsStr.split(",");
				
			if (!(jsFiles.length >= 1))
			{
				return true;
			}



			for (var i=0;i < jsFiles.length;i++) {

				var js = document.createElement('script');
				js.setAttribute('type', 'text/javascript');
				js.setAttribute('language', 'javascript');
				js.setAttribute('src', jsFiles[i]);
				head.appendChild(js);

			}


		}
		,
		//SETTERS
		/**
		* public 
		* @param {String} val This is a string parameter
		*
		**/
		
    /**
     * Metode za nastavljanje več ne rabimo, saj uporabljamo le Metrične vrednosti
     *
     */              
		
		/*setStandardMetricFlag:function(val) {
			
			
      this.standardMetricFlag = val;
			if (this.standardMetricFlag == "standard")
			{
				this.bmiVariable= 703;
			}
			else  {
				this.bmiVariable = 10000;
			}
				
			this.performToggle();
		}
		,*/
		/**
		* public 
		* @param {String} val This is a string parameter
		* 
		**/
		setTargetDIV:function(val) {
			this.targetDivId = val;
		}


	} //end BMICalculator.prototype



	String.prototype.isEmpty = function() {

		if (this == '')	{
			return true
		}
	}

	
	function clearText(obj) {
		
		obj.innerHTML='';
		
	}


	function ShowObj(obj) {
	
		obj.className='show';	
	
	}

	function hideObj(obj) {
	
		obj.className='hide';	
	
	}

