var m_form;


var noPicture;


/**
 * Returns true if the passed value is found in the
 * array. Returns false if it is not.
 */
Array.prototype.inArray = function(value) {
	var i;
	for (i=0; i < this.length; i++) {
		// Matches identical (===), not just similar (==).
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function getElement(formId, objName) {
	var obj = new Object();
	obj = eval("document."+formId+"."+objName);
	if (obj == null) { // div tag for example
		obj = document.all ? document.all(objName) :
		      document.getElementById ? document.getElementById(objName) :
		      document.layers ? document.layers[objName] : null;
	}
	return obj;
} 

function initPicture(imgPath) {
//	alert("1");
	noPicture = new Image();
	noPicture.src = imgPath+'stuff/50x50-no-picture.gif';
	var tmp = noPicture.src;
}


// initialize m_form.
function initForm(formId) {
  m_form = eval("document."+formId);
}

// initForm must be called first
function setPageId(pageId) {
  m_form.pageId.value = pageId;
}

// initForm must be called first
function setObjectId(objectId) {
  m_form.objId.value = objectId;
}

// initForm must be called first
function setStateId(stateId) {
  m_form.stateId.value = stateId;
}

// initForm must be called first
function setEventId(eventId) {
  m_form.eventId.value = eventId;
}



   function setSysVars(formId, pageId, objectId, stateId, eventId) {
     var f = eval("document."+formId);
     if (pageId != '')     f.pageId.value = pageId;
     if (objectId != '')   f.objId.value= objectId;
     if (stateId != '')    f.stateId.value = stateId;
     if (eventId != '')    f.eventId.value = eventId;
     return f;
   }

   function myConfirm(objectName) {
     return window.confirm('Oled kindel, et soovid kustutada objekti ' + objectName + '?');
   }

   function deleteConfirm(message) {
     return window.confirm(message);
   }

   function navigate0(formId, pageId, objectId, stateId, eventId) {
     var f = setSysVars(formId, pageId, objectId, stateId, eventId);
     f.submit();
   }

/*   function cnavigate0(formId, pageId, objectId, stateId, eventId, objectName) {
     if (myConfirm(objectName)) {
       return navigate0(formId, pageId, objectId, stateId, eventId);
     }
   }*/

   
   function navigate1(formId, pageId, objectId, stateId, eventId, name1, value1) {
     var f = setSysVars(formId, pageId, objectId, stateId, eventId);
     var v1 = eval("f."+name1);
     v1.value = value1;
     f.submit();
   }

   function cnavigate1(formId, pageId, objectId, stateId, eventId, objectName, name1, value1) {
     if (myConfirm(objectName)) {
       navigate1(formId, pageId, objectId, stateId, eventId, name1, value1);
     }
   }

   function deleteItem(formId, pageId, objectId, stateId, eventId, message, name1, value1) {
     if (deleteConfirm(message)) {
       navigate1(formId, pageId, objectId, stateId, eventId, name1, value1);
     }
   }

   function navigate2(formId, pageId, objectId, stateId, eventId, name1, value1, name2, value2) {
     var f = setSysVars(formId, pageId, objectId, stateId, eventId);
     var v1 = eval("f."+name1);
     v1.value = value1;
     var v2 = eval("f."+name2);
     v2.value = value2;
     f.submit();
   }

   
   function navigate3(formId, pageId, objectId, stateId, eventId, name1, value1, name2, value2, name3, value3) {
     var f = setSysVars(formId, pageId, objectId, stateId, eventId);
     var v1 = eval("f."+name1);
     v1.value = value1;
     var v2 = eval("f."+name2);
     v2.value = value2;
     var v3 = eval("f."+name3);
     v3.value = value3;
     f.submit();
   }

/*   function cnavigate2(formId, pageId, objectId, stateId, eventId, objectName, name1, value1, name2, value2) {
     if (myConfirm(objectName)) {
       navigate2(formId, pageId, objectId, stateId, eventId, name1, value1, name2 value2);
     }
   }*/


     function eventFire(eventId, formId) {
       var form = eval("document."+formId);
       form.eventId.value=eventId;
       form.submit();
     }
     function eventFire1(formId, refId, refIdValue) {
       var form = eval("document."+formId);
       var form1 = eval("document."+formId + "." + refId);
       form1.value=refIdValue;
       form.submit();
     }
     function eventFire2(eventId, formId, refId, refIdValue) {
       var form = eval("document."+formId);
       var form1 = eval("document."+formId + "." + refId);
       form.eventId.value=eventId;
       form1.value=refIdValue;
       form.submit();
     }
     function redirect(pageId, formId) {
       var form = eval("document."+formId);
       form.pageId.value=pageId;
       form.objId.value='';
       form.stateId.value='';
       form.eventId.value='';
       form.submit();
     }
function redirectSetEventItem(formId, pageId, eventId, refId, refIdValue) {
       var form1 = eval("document."+formId + "." + refId);
       var form = eval("document."+formId);
       form.pageId.value=pageId;
       form.stateId.value='';
       form1.value=refIdValue;
       form.objId.value='';
       form.eventId.value=eventId;
       form.submit();
     }
function redirectSetStateItem(formId, pageId, stateId, refId, refIdValue) {
       var form1 = eval("document."+formId + "." + refId);
       var form = eval("document."+formId);
       form.pageId.value=pageId;
       form.stateId.value='';
       form1.value=refIdValue;
       form.objId.value='';
       form.stateId.value=stateId;
       form.submit();
     }
     function refresh(formId) {
       var form = eval("document."+formId);
       form.submit();
     }
     function changeState(stateId, formId) {
       var form = eval("document."+formId);
       form.stateId.value=stateId;
       form.eventId.value='';
       form.submit();
     }
     function setParameter(formId, name1, value1, stateId) {

       var form = eval("document."+formId);
       var v1 = eval('form.'+name1);
       v1.value = value1;
       form.eventId.value='';
       form.stateId.value = stateId;
       form.submit();
     }

     function openPopUpWin(page, formId, refId, refIdValue) {
       OpenWin = this.open(
                  'http://ahti:8080/city_broker/city24broker?pageId=' + page + '&' + refId+ '=' + refIdValue +'&lang=EST', 
                  'CtrlWindow', 
                  'toolbar=yes, menubar=yes, location=yes,scrollbars=yes,resizable=yes, width=600, height=400');
       var form = eval("document."+formId);
       form.submit();
     }
     function openSmallPopUpWin(page, formId, refId, refIdValue) {
       OpenWin = this.open(
                  '//city_broker/city24broker?pageId=' + page + '&' + refId+ '=' + refIdValue +'&lang=EST', 
                  'CtrlWindow', 
                  'toolbar=yes, menubar=yes, location=yes,scrollbars=yes,resizable=yes, width=300, height=400');
       var form = eval("document."+formId);
       form.submit();
     }
     function openPopUpWinSetState(page, formId, stateId, refId, refIdValue) {
       OpenWin = this.open(
                  '//city_broker/city24broker?pageId=' + page + '&refId=' + refIdValue +'&stateId=' + stateId +'&lang=EST', 
                  'CtrlWindow', 
                  'toolbar=yes, menubar=yes, location=yes,scrollbars=yes,resizable=yes, width=600, height=400');
       var form = eval("document."+formId);
       form.submit();
     }

     /** initForm must be called before!!! */
     function openPopUpPage(page, width, height, paramName1, paramValue1) {
       OpenWin = this.open(
                  "/city_broker/city24broker?pageId="+page+
                  "&amp;sessionId="+m_form.sessionId.value+
                  "&amp;"+paramName1+"="+paramValue1, 
                  "CtrlWindow", 
                  "toolbar=yes,menubar=yes, location=yes,scrollbars=yes,resizable=no, width=250 , height=350")
     }

function searchWish(wishId, formId) {
  var f = document.forms[formId];
  f.pageId.value='4';
  f.objId.value='SearchObject';
  f.eventId.value='SearchWishNewEvent';
  f.search_wish_id.value=wishId;
  f.stateId.value='ShowResults';
  f. submit();
}

/** Cleans the image.
 * @param formId form identifier
 * @param imgName name of the image on document
 * @param path where the images reside
 */
function cleanImg(formId, imgName, path) {
  var tmpImg = new Image();
  tmpImg.src = path+'stuff/50x50-no-picture.gif';
  for (i = 0; i < 20; i++) {
    document.images[imgName+'thumb'].src=tmpImg.src;
  }
  eval('document.'+formId+'.'+imgName+'_id').value='';
  eval('document.'+formId+'.'+imgName+'_img').value='';
  
  // clear map position elements
    var possibleLocationEl = eval('document.'+formId+'.'+imgName+'_map_point');
    
    if (typeof possibleLocationEl != "undefined") {
      eval('document.'+formId+'.'+imgName+'_map_point').value="";
    }
	    
    var possibleAreaEl = eval('document.'+formId+'.'+imgName+'_map_area');
	      
    if (typeof possibleAreaEl != "undefined") {
        eval('document.'+formId+'.'+imgName+'_map_area').value="";
    }		      
  
  return true;
}

function openPopUp(url, lang, page, refId, refIdValue) {	
	OpenWin = this.open(url + '?pageId=' + page + '&lang=' + lang + '&' + refId + '=' + refIdValue, 'CtrlWindow', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,location=no,scrollbars=yes,resizable=no,copyhistory=no,width=600,height=400');  
}

function openPopUpSession(url, lang, page, refId, refIdValue, sessionIdValue) {	
	OpenWin = this.open(url + '?pageId=' + page + '&lang=' + lang + '&' + refId + '=' + refIdValue + '&sessionId=' + sessionIdValue, 'CtrlWindow', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,location=no,scrollbars=yes,resizable=no,copyhistory=no,width=600,height=400');  
}

function openSmallPopUp(url, lang, page, refId, refIdValue) {
  OpenWin = this.open(url + '&pageId=' + page + '&lang=' + lang + '&' + refId + '=' + refIdValue, 'CtrlWindow', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,location=no,scrollbars=yes,resizable=yes,copyhistory=no,width=300,height=400');
}

function selectAllSheckboxesExceptOne(formObj, notSelected) {
   for (var i=0;i < formObj.length;i++) 
   {
      fldObj = formObj.elements[i];
      if (fldObj.type == 'checkbox' && fldObj.name!=notSelected)
      { 
        fldObj.checked = true; 
       }
   }
}

function setLang(langId, formId) {
       var form = eval("document."+formId);
       form.lang.value=langId;
       form.objId.value='';
       form.stateId.value='';
       form.eventId.value='';
       form.submit();
   }

function printall(formId, pageId, prefix) {
  var form = eval("document."+formId);

// salvestame v22rtused
  m_target = form.target;
  m_page = form.pageId.value;
  //  m_method = form.method;

// paneme uued v22rtused.

  form.prefix.value = prefix;
  form.target = 'popup';
  form.pageId.value = pageId;
  //  form.method = 'post';
  listin = open('', 'popup', 'toolbar=yes,location=yes,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=640,height=550');
  form.submit();
  listin.focus();
// taastame v22rtused.

  //  form.method = m_method;
  form.target = m_target;
  form.pageId.value = m_page;
}

function checkBanner(banner){
  inner = String(banner.document);
  if(inner.indexOf("blank.gif")>1){
    banner.height="0";
    banner.width="0";
  }
}


function openPopUpNoBrowserCache(url, name){
        var randomnumber=Math.floor(Math.random()*1000000);
        name = window.open(url+ '&rand=' + randomnumber, name, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=640,height=550,left=20,top=20,');
        name.focus();
}

function openPopUpNoBrowserCacheCustom(url, name, w, h){
        var randomnumber=Math.floor(Math.random()*1000000);
        name = window.open(url+ '&rand=' + randomnumber, name, 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=' + w + ',height=' + h + ',left=20,top=20,');
	name.focus();
}
			

function separateMoneyFormat(value){
	var separator = " ";
        if(value == null)
            return;
        var st=new String(value)
        var begin="",end="",tmpSt="";	      
        if (st.indexOf(".")>=0)	{
            begin=st.substring(0,st.indexOf("."));
            end=st.substring(st.indexOf("."),st.length);
        }
        else	
            begin=st;			
        while (begin.length>3)	{    
            tmpSt=separator+begin.substring(begin.length-3,begin.length)+tmpSt;        
            begin=begin.substring(0,begin.length-3);
        }	
        return new String(begin+tmpSt+end);
}

function popupMedia(url) {
        newWindow =
        window.open(url,'newWindow','toolbar=yes,location=yes,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=550,left=20,top=20');
        newWindow.focus();
}


//MyM
function scalePix(imgn, areaWidth, areaHeight) {

  var PixWidth;
  var PixHeight;

  var im = new Image();
  im.src = imgn;

  PixWidth  = im.width;
  PixHeight = im.height;

  var OrigHeight = PixHeight;
  var OrigWidth  = PixWidth;

  if (im.width > areaWidth) {
    im.width     = areaWidth;
    PixWidth     = im.width;
    ScalePercent = (PixWidth * 100 / OrigWidth);
    im.height    = (ScalePercent * OrigHeight / 100);
    PixHeight    = im.height;
  }

  if (im.height > areaHeight) {
    im.height    = areaHeight;
    PixHeight    = im.height;
    ScalePercent = (PixHeight * 100 / OrigHeight);
    im.width     = (ScalePercent * OrigWidth / 100);
    PixWidth     = im.width;
  }
//alert(PixWidth + 'x' + PixHeight);
 // return '<img src=' + imgn + ' width=' + PixWidth + ' height=' + PixHeight + ' >';
 return '<img border=0 src=' + imgn + ' height=' + (PixHeight - 1) + '>';
}

/**
 * Calculate and set area size value. Sets empty value if price cannot be calculated.
 * @param formId Form name
 * @param destObjName Destination object name
 * @param priceObjName Price object name
 * @param areaSizeObjName Area size object name
 */
function calcPricePerM2(formId, destObjName, priceObjName, areaSizeObjName) {
	var price = eval("document."+formId+"."+priceObjName+".value");
	var areaSize = eval("document."+formId+"."+areaSizeObjName+".value");
	var destObj = eval("document."+formId+"."+destObjName);
	var pricePerM2 = Math.round(price / areaSize);
	if (pricePerM2 == 0 || pricePerM2 == "Infinity" || isNaN(pricePerM2)) {
		pricePerM2 = "";
	}
	destObj.value = pricePerM2;
}

/**
 * Change destination combo box value to source object value
 * @param formId Form name
 * @param srcObjName Source object name
 * @param destObjName Destination object name
 */
function syncComboBoxValue(formId, srcObjName, destObjName) {
	// FIXME try to synchronize by option key
	var srcObj = eval("document."+formId+"."+srcObjName);
	var destObj = eval("document."+formId+"."+destObjName);
	destObj.selectedIndex = srcObj.selectedIndex;
}

/**
 * Change multiple objects visibility
 * @param formId Form name
 * @param srcObjName Source object name
 * @param conditionValues Array object containinc condition values
 * @param isHideValues If selected value is in objNames, then hide (true) or show (false)
 * @param destObjNames Array object containing object names
 */
function changeMultObjVisibility(formId, srcObjName, conditionValues, isHideValues, destObjNames) {
	var srcObj = eval("document."+formId+"."+srcObjName);
	var srcObjSelkey = srcObj.options[srcObj.selectedIndex].value;
	if ( document.all && document.getElementById )
		var visitype = "block";
	else
		var visitype = "table-row";
	var visibility = visitype;
	if (conditionValues.inArray(srcObjSelkey)) {
		visibility = (isHideValues) ? "none" : visitype;
	}
	else {
		visibility = (isHideValues) ? visitype : "none";
	}
	var destObj = new Object();
	for (i=0; i<destObjNames.length; i++) {
		destObj = getElement(formId, destObjNames[i]);
        if (destObj) {
		    destObj.style.display = visibility;
        }
		if (visibility == "none") {
			// give elements their default values
			try {destObj.checked = false;} catch(e) {} // checkbox
			try {destObj.selectedIndex = 0;} catch(e) {} // combo box
			// TODO check out what happens with buttons? caption gets lost?
			try {destObj.value = "";} catch(e) {} // input field
		}
	}
}

/**
 * Change destination object value if combo box value is changed
 * @param formId Form name
 * @param srcObjName Source combo box name
 * @param destObjName Destination object id. For example HTMLSpanElement or HTMLTableCellElement id.
 * @param conditions Contains array of conditions. new Array(new Array('KEY1', 'val1'), new Array('KEY2', 'val2'))
 * @param defaultValue This value is used if condiction not found
 */
function changeCaptionBySelBox(formId, srcObjName, destObjName, conditions, defaultValue) {
	var srcObj = getElement(formId, srcObjName);
	var destObj = getElement(formId, destObjName);
	var srcObjSelKey = srcObj.options[srcObj.selectedIndex].value;
	var destObjVal = defaultValue;
	
	for (i=0; i<conditions.length; i++) {
		var condition = conditions[i];
		var key = condition[0];
		var val = condition[1];
		if (key == srcObjSelKey) {
			destObjVal = val;
			break;
		}
	}
	destObj.innerHTML = destObjVal;
}


