sNavVer = navigator.appVersion;
iIEIdx = sNavVer.indexOf("MSIE");
ie=(iIEIdx!=-1)?true:false;
ns=(-1!=navigator.appName.indexOf('Netscape'))?true:false;
sNSVer='';if(ns){sNSVer=navigator.vendorSub;}
sIEVer='';if(ie){sIEVer = sNavVer.substr(iIEIdx + 5, sNavVer.indexOf(";", iIEIdx) - iIEIdx - 5);}
//ie5=((navigator.appVersion.indexOf("MSIE 5.")!=-1&&navigator.appVersion.indexOf("MSIE 5.5")==-1))?true:false;
ie5=(sIEVer>=5&&sIEVer<5.5)?true:false;
ns6x=(sNSVer>=6&&sNSVer<7)?true:false;

function GetAttrVal(obj, sAttrName) {
	var s;s=''; if(obj.attributes&&obj.attributes[sAttrName]) s=obj.attributes[sAttrName].nodeValue; return s;
}
function InitForm(sFormName) {
	var f = eval('document.' + sFormName);
	if(!f) return false;

	var c, cn, cdn, ct, cv, cd;
  for (i=0; i < f.childNodes.length-1; i+=1) {
  	c=f.childNodes[i]; if(c.nodeType!=1) continue;
    cv=c.value;ct=GetAttrVal(c, 'type');cn=GetAttrVal(c, 'name');cdn=GetAttrVal(c, 'displayname');cd=GetAttrVal(c, 'defaultvalue');
  	if((ct=='text'||c.nodeName=='TEXTAREA')&&cv==''&&cd!=''){c.value=cd;}
  }

	return true;
}




function getElementHeight(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.clip.height;
	} else {
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		if (op5) { 
			xPos = elem.style.pixelHeight;
		} else {
			xPos = elem.offsetHeight;
		}
		return xPos;
	} 
}


function GetDocumentHeight() {
	if(ns6x || (ie && sIEVer < 6)) { return GetElementHeightRecursive(document, 1); }
	return document.body.scrollHeight;
}

function GetDocumentWidth() {
	if(ns6x || (ie && sIEVer < 6)) { return GetElementWidthRecursive(document, 1); }
	return document.body.scrollWidth;
}

function GetElementHeightRecursive(e, iLevel) {
	if(iLevel > 30) return 0;
	var iCurrentHeight = 0;
	var iH = 0;
	
	var i, c;
  for (i=0; i < e.childNodes.length; i+=1) {
  	c=e.childNodes[i];
  	if(c.nodeType!=1) continue;
  	iH = c.offsetHeight + GetElementOffsetTopTotal(c);
  	if(iH > iCurrentHeight) iCurrentHeight = iH;
  	iH = GetElementHeightRecursive(c, iLevel + 1);
  	if(iH > iCurrentHeight) iCurrentHeight = iH;
  }

	return iCurrentHeight;
}

function GetElementWidthRecursive(e, iLevel) {
	if(iLevel > 30) return 0;
	var iCurrentWidth = 0;
	var iW = 0;
	
	var i, c, cn, cdn, ct, cv, cd;
  for (i=0; i < e.childNodes.length; i+=1) {
  	c=e.childNodes[i];
  	if(c.nodeType!=1) continue;
  	iW = c.offsetWidth + GetElementOffsetLeftTotal(c);
  	if(iW > iCurrentWidth) iCurrentWidth = iW;
  	iW = GetElementWidthRecursive(c, iLevel + 1);
  	if(iW > iCurrentWidth) iCurrentWidth = iW;
  }

	return iCurrentWidth;
}

function GetElementOffsetTopTotal(e) {
	var iCurrentOffset = e.offsetTop;
  for(c=e.offsetParent; c; c=c.offsetParent) {
  	iCurrentOffset += c.offsetTop;
  }
	return iCurrentOffset;
}

function GetElementOffsetLeftTotal(e) {
	var iCurrentOffset = e.offsetLeft;
  for(c=e.offsetParent; c; c=c.offsetParent) {
  	iCurrentOffset += c.offsetLeft;
  }
	return iCurrentOffset;
}

function MoveEltToBottom(objMove) {
	if(!objMove) return;
	//objMove.style.top = 0;
	objMove.style.top = GetDocumentHeight() - parseInt(objMove.style.height);
}

function MoveEltToCenter(objMove) {
	if(!objMove) return;
	iLeft = (document.body.clientWidth - parseInt(objMove.style.width)) / 2;
	if(iLeft > 0) { objMove.style.left = iLeft; } else { objMove.style.left = 0; }
}

//setInterval("InitForm('frmTellAFriend');", 1000);
function CheckFields(sFormName) {
	return CheckMandatoryFieldsGeneric(sFormName);
}
function CheckMandatoryFieldsGeneric(sFormName) {
	var f = eval('document.' + sFormName);
	if(!f) return false;
	return CheckMandatoryFieldsOfElement(f,1);
}
function CheckMandatoryFieldsOfElement(e, iLevel) {
	if(iLevel > 30) return false;
	
	//alert('ParentInfo: Node='+e+'; NodeType='+e.nodeType+'; NodeName='+GetAttrVal(e, 'name')+'; NodeValue='+GetAttrVal(e, 'value')+'; Level='+iLevel+'; ChildNodes='+e.childNodes.length+'; ');
	var i, c, cn, cdn, ct, cv, cd;
  for (i=0; i < e.childNodes.length; i+=1) {
  	c=e.childNodes[i];
  	//alert('ChildInfo: ChildNumber='+i+'; Node='+c+'; NodeType='+c.nodeType+'; NodeName='+GetAttrVal(c, 'name')+'; NodeValue='+GetAttrVal(c, 'value')+'; Level='+iLevel+'; ');
  	if(c.nodeType!=1) continue;
    cv=c.value;ct=GetAttrVal(c, 'type');cn=GetAttrVal(c, 'name');cdn=GetAttrVal(c, 'displayname');cd=GetAttrVal(c, 'defaultvalue');
    //alert('Type='+ct+';   Name='+cn+';   Value='+cv+';   DisplayName='+cdn+';   DefaultValue='+cd+'; Level='+iLevel+'; ');
  	if((ct=='text'||c.nodeName=='TEXTAREA')&&cn.substr(cn.length-1,1)=='*'&&(cv==''||cv==cd)){alert('Polje ' + cdn + ' je obvezno!');c.value='';c.focus();return false;}
  	if(c.childNodes&&c.childNodes.length&&!CheckMandatoryFieldsOfElement(c, iLevel + 1)) return false;
  }

	return true;
}
function EnterField(c) {
	var cn, cdn, ct, cv, cd;
	if(c.nodeType!=1) return;
  cv=c.value;ct=GetAttrVal(c, 'type');cn=GetAttrVal(c, 'name');cdn=GetAttrVal(c, 'displayname');cd=GetAttrVal(c, 'defaultvalue');
  if((ct=='text'||(c.nodeName=='TEXTAREA'&&c.childNodes[0]))&&cv==cd) c.value = '';
}
function LeaveField(c) {
	var cn, cdn, ct, cv, cd;
	if(c.nodeType!=1) return;
  cv=c.value;ct=GetAttrVal(c, 'type');cn=GetAttrVal(c, 'name');cdn=GetAttrVal(c, 'displayname');cd=GetAttrVal(c, 'defaultvalue');
  if((ct=='text'||c.nodeName=='TEXTAREA')&&cv==''&&cd!=''){c.value=cd;}
}

function DebugOut(sDebugText){
	objDebugOutPosition = document.getElementById('pre_debug_out');
	if(objDebugOutPosition) {
		objDebugOutPosition.innerHTML += String(sDebugText).replace(/</g, '&lt;').replace(/>/g, '&gt;<BR>').replace(/\t/g, '  ') + '<br>';
	}
}
function GetSubElementByID(e, sID) {
	return GetSubElementByIDRecursive(e, sID, 1);
}
function GetSubElementByIDRecursive(e, sID, iLevel) {
	if(iLevel > 30) return false;
	
	var i, c, cid, ctmp;
  for (i=0; i < e.childNodes.length; i+=1) {
  	c=e.childNodes[i];
  	cid = GetAttrVal(c, 'id');
  	if (cid == sID) { return c; }
  	if(c.childNodes&&c.childNodes.length) {
  		ctmp = GetSubElementByIDRecursive(c, sID, iLevel + 1);
  		if (ctmp) { return ctmp; }
  	}
  }

	return null;
}
function DeleteAnswerClient(sFormName, sAnswerID){
	var f = eval('document.' + sFormName); if(!f) return false;
	iRetVal= confirm("Zapis bo permanentno odstranjen. Naj nadaljujem z brisanjem?", 3);
	if (iRetVal !="0"){
		objAnswersPosition = GetSubElementByID(f, 'div_answers_position');
		objAnswer = GetSubElementByID(f, sAnswerID);
	  objAnswersPosition.removeChild(objAnswer);
	}
}
function InsertAnswerClient(sFormName){
	var f = eval('document.' + sFormName);
	if(!f) return false;
	objAnswersPosition = GetSubElementByID(f, 'div_answers_position');
	objAnswerTemplate = GetSubElementByID(f, 'div_answer_template');
	objAnswerCount = GetSubElementByID(f, 'iMaxAnswerID');
	if(!objAnswersPosition || !objAnswerTemplate || !objAnswerCount) return false;
	
	iMaxAnswerID = Number(objAnswerCount.getAttribute('value')) + 1;
	objAnswerCount.setAttribute('value', iMaxAnswerID);
	
	objNewAnswer = document.createElement('DIV');
	objNewAnswer.setAttribute('id', 'div_answer' + iMaxAnswerID);
	objNewAnswer.innerHTML = objAnswerTemplate.innerHTML.replace(/#ANSWER_NUMBER#/g, iMaxAnswerID).replace(/#FORM_NAME#/g, sFormName);
	objAnswersPosition.appendChild(objNewAnswer);
}

/* ********************************************************************************************* */
/* AsyncLoader                                                                                   */
/* ********************************************************************************************* */

function X_LoadRemoteData(sURL, fnCallback){
	//Tested but not ideal (can handle only one concurrent request
	//synced version not complete
	if(!fnCallback) return;
	objDummyDiv = document.createElement('div');
	//objDummyDiv.innerHTML = '<iframe id="iFrameTest" name="iFrameTest" frameborder="0" style="visibility: hidden; border-style: none;" width="0" height="0"></iframe>';
	objDummyDiv.innerHTML = '<iframe id="iFrameTest" name="iFrameTest" frameborder="1" xstyle="visibility: visible; border-style: none;" width="300" height="140"></iframe>';
	document.body.appendChild(objDummyDiv);

	objTestFrame = document.getElementById('iFrameTest');
	objTestFrame.onload = fnCallback;
	objTestFrame.src = sURL;
	
	if(ie5) { setTimeout(fnCallback, 10); }
/*
	this is for further research! (Sync loading of document)
	if(!fnCallback){
		for(i = 0; ((i < 90000)&&(frames['iFrameTest'].document.readyState != 'complete')); i++){ alert(); }
		if(frames['iFrameTest'].document.readyState != 'complete') return '';
		return frames['iFrameTest'].document.body.innerHTML
	}
*/
}

m_iMaxCalls = 256;
m_aoCalls   = new Array();

function CreateFrameLoader( iCallIdx )
{
  objFrameLoadersPosition = document.getElementById('objFrameLoadersPosition');
  if(!objFrameLoadersPosition){
		objFrameLoadersPosition = document.createElement('div');
		objFrameLoadersPosition.setAttribute('id', 'objFrameLoadersPosition');
		objFrameLoadersPosition.setAttribute('name', 'objFrameLoadersPosition');
		document.body.appendChild(objFrameLoadersPosition);
	}
	
	objDummyDiv = document.createElement('div');
	objDummyDiv.setAttribute('id', 'div_iFrameLoader' + iCallIdx);
	objDummyDiv.innerHTML = '<iframe id="iFrameLoader' + iCallIdx + '" name="iFrameLoader' + iCallIdx + '" frameborder="0" style="visibility: hidden; border-style: none;" width="0" height="0"></iframe>';
	//objDummyDiv.innerHTML = '<iframe id="iFrameLoader' + iCallIdx + '" name="iFrameLoader' + iCallIdx + '" frameborder="1" xstyle="visibility: visible; border-style: none;" width="400" height="300"></iframe>';
	objFrameLoadersPosition.appendChild(objDummyDiv);
	
	m_aoCalls[iCallIdx] = new CallObject(frames['iFrameLoader' + iCallIdx]);
}

function CallObject(objFrameLoader)
{
		this.objFrameLoader = objFrameLoader;
    this.bInUse = 0;
		this.sURL = '';
		this.asCallDataParameterArray = new Array();
}

function fnAllocCall(sURL, asCallDataParameterArray)
{
    for (var i = 0; i < m_iMaxCalls && m_aoCalls[i] && m_aoCalls[i].bInUse; i++) {}

    if (i < m_iMaxCalls){
    	if(!m_aoCalls[i]) { CreateFrameLoader(i); }
    	m_aoCalls[i].bInUse = 1;
    	m_aoCalls[i].sURL = sURL;
    	m_aoCalls[i].asCallDataParameterArray = asCallDataParameterArray;
    	
	    return i;
	  }
	  
    return null;
}

function fnDeAllocCall( iCallIdx )
{
    m_aoCalls[iCallIdx].bInUse = 0;
    m_aoCalls[iCallIdx].sURL = '';
}

function LoadRemoteDataCallBack(sURL, fnCallback, asCallDataParameterArray){
  var iCall = fnAllocCall(sURL, asCallDataParameterArray);
  
 	objLoderFrame = GetSubElementByID(objFrameLoadersPosition, 'iFrameLoader' + iCall);

	objLoderFrame.onload = Function( "fnLoadComplete( " + iCall + ',' + fnCallback + " );" );
	//objLoderFrame.src = sURL;
	frames['iFrameLoader' + iCall].location.href = sURL; //predvidoma za ie5
	if(ie || ns6x) { setTimeout(Function("fnLoadComplete( " + iCall + "," + fnCallback + ");"), 100); }
	return iCall;
}

function fnLoadComplete( iIndex, fnCallback )
{
  if( iIndex == null ) return;
  
	if (ie5 && frames['iFrameLoader' + iIndex].document.readyState != 'complete') { setTimeout(Function("fnLoadComplete( " + iIndex + "," + fnCallback + ");"), 100); return; }
	
  var oCall = m_aoCalls[ iIndex ];
  
  if(fnCallback) fnCallback(iIndex);
  
  fnDeAllocCall( iIndex );
}

function RemoteDataCallParametersArray(iIndex)
{
	return m_aoCalls[iIndex].asCallDataParameterArray;
}

/* ********************************************************************************************* */
/* End AsyncLoader                                                                               */
/* ********************************************************************************************* */

/* ********************************************************************************************* */
/* RemoteContentLoader                                                                           */
/* ********************************************************************************************* */

function LoadRemoteContent(sDestinationObjectID, sURL)
{
	//CrossSite scripting security issues apply (method does not work accross domain)
	LoadRemoteDataCallBack(sURL, LoadingRemoteContentComplete, new Array(sDestinationObjectID));
}

function ReadRemoteContentFromBuffer(iIndex)
{
	//this function can be called form LoadCompletionRoutineOnly
	
	return frames['iFrameLoader' + iIndex].document.body.innerHTML;
}

function LoadingRemoteContentComplete(iIndex){
	var objPlaceHolder = document.getElementById(m_aoCalls[iIndex].asCallDataParameterArray[0]);
	if(!objPlaceHolder) return;
	objPlaceHolder.innerHTML = ReadRemoteContentFromBuffer(iIndex);
}

/* ********************************************************************************************* */
/* End RemoteContentLoader                                                                       */
/* ********************************************************************************************* */

function DeleteFrameByName(sContainerDivName, sDeleteDivName){
	var d = document;
	objDivPosition = GetSubElementByID(d, sContainerDivName);
	
	objFrameToDelete = GetSubElementByID(objDivPosition, sDeleteDivName);
  objDivPosition.removeChild(objFrameToDelete);
}

function InsertPictureFrame(sContainerDivName, sTemplateDivName, sPictureDivName, iPictureID){
	var d = document;
	objInsertPosition = GetSubElementByID(d, sContainerDivName);
	objTemplate = GetSubElementByID(d, sTemplateDivName);
	if(!objInsertPosition || !objTemplate) return false;
	
	objNewElt = document.createElement('DIV');
	objNewElt.setAttribute('id', sPictureDivName);
	objNewElt.innerHTML = objTemplate.innerHTML.replace(/#PIC_ID#/g, iPictureID);
	objInsertPosition.appendChild(objNewElt);
}

function ShowTip(object, sTipID, bShow)
{
	var p = document.getElementById(sTipID);
	if(!p) return;
	
	if(!bShow) { p.style.visibility = 'hidden'; return; }
	p.style.visibility = 'visible';
}

function PollOneOptionChecked()
{
	var i;
	
	// Let's iterate through our voting options, returning true if
	// we come across a checked radio box
	for (i = 0; i < document.frmPoll.PollAnswerID.length; i++)
		if (document.frmPoll.PollAnswerID[i].checked) return true;
	
	// If we reach this point, then the user didn't check any voting options
	alert("Za glasovanje izberite en odgovor!");
	return false;
}
