function _e(id)
{
  return document.getElementById(id);
}

function findPos(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return {'left':curleft,'top':curtop};
}

function popupImage(largeImageId,imgRef)
{
  var largeImagePath = imgRef.src.replace("-small","");

  _e("captures_popup").style.display = "block";
  _e(largeImageId).src = largeImagePath;

  _e(largeImageId).onload = function()
  {
    this.style.left = (_e("captures_popup").offsetWidth - 40 - this.offsetWidth)/2 + "px";
  }

  _e(largeImageId).onclick = function()
  {
    this.src = "";
    _e("captures_popup").style.display = "none";
  }
}

printf = function() {
  var num = arguments.length;
  var oStr = arguments[0];
  for (var i = 1; i < num; i++) {
    var pattern = "\\{" + (i-1) + "\\}";
    var re = new RegExp(pattern, "g");
    oStr = oStr.replace(re, arguments[i]);
  }
  return oStr;
}

function submit_form(frm,frmObj)
{
  	var isValid = true;
  	var regEmail = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
  	var err = "";

  	for(var i in frmObj)
  	{
		switch(frm.elements[i].type)
		{
			case 'select-one':
				elem_value = frm.elements[i].options[frm.elements[i].selectedIndex].value;
				break;
			default:
				elem_value = frm.elements[i].value;
				break;
		}
		
		//console.log(i);
		switch(frmObj[i][1]) // type
		{
		  	case 'email':
				if (!elem_value.match(regEmail)) {
				  	isValid = false;
				  	err += printf(Msg['must_be_valid_email'] + ".\n",frmObj[i][0]);
				}
		  		break;
			case 'text':
				// set null for not empty text field
				if (frmObj[i][2] == null && !elem_value.toString().length)
				{
				  	isValid = false;
				  	err += printf(Msg['cannot_be_empty'] + ".\n",frmObj[i][0]);
				}
				else if (!isNaN(frmObj[i][2]) && elem_value.toString().length < frmObj[i][2])
				{
				  	isValid = false;
				  	err += printf(Msg['at_least_n_chars_long'] + ".\n",frmObj[i][0],frmObj[i][2]);
				}
				break;
			case 'numeric':
				if(isNaN(parseInt(elem_value) || parseFloat(elem_value)))
				{
				  	isValid = false;
				  	err += printf(Msg['must_be_numeric'] + ".\n",frmObj[i][0]);
				}
				break;
			case 'checkbox':
				var minLength = parseInt(frmObj[i][2]);				
				var elem_value = frm.elements[i];
				
				if(minLength)
				{
					var len = 0;
					for(j = 0; j < elem_value.length; j++)
					{
						if(elem_value[j].checked)	len++;
					}
					
					if(len < minLength)
					{
						isValid = false;
						err += printf(Msg['select_min_n_options'] + ".\n",frmObj[i][0],frmObj[i][2]);
					}
				}
		  		break;	
			default:
				break;
		}
  	}

  	if(!isValid)
  	{
    	alert(err);
    	return false;
  	}

  	return true;
}

function addRemoveItem(colectorVar,chkbox, max_choices)
{
	var countries = new Array();
	if(colectorVar.value.length)
	{
		countries = colectorVar.value.split(",");
	}
	
	if(chkbox.checked ==  false)
	{
		// add country id
		for(i = 0; i < countries.length; i++)
		{
			if(countries[i] == chkbox.value)
			{
				countries.splice(i,1);
			}
		}
		
		s_countries = countries.join(',');
	}
	else
	{
		if(countries.length < max_choices)
		{
			countries.push(chkbox.value);
			s_countries = countries.join(',');
		}
		else
		{
			alert("You can add maximum " + max_choices + " countries.");
			chkbox.checked = false;
			s_countries = colectorVar.value;
		}
	}

	colectorVar.value = s_countries;
	return s_countries;	
}

function createOption(v,t)
{
	var opt = document.createElement('OPTION');
	opt.value = v;
	opt.text = t;
	return opt;
}

function addOptions(selectRef,json,startIndex)
{
	try
	{
		for(i = 0; i < json.length; i++)
		{
			var j = startIndex + i;
			var opt = createOption(json[i]["value"],json[i]["text"]);
			selectRef.options.add(opt,j);
			//alert(json[i]["value"]);
		}
	}
	catch(e)
	{}
}

function clearSelect(selectRef)
{
	selectRef.options.length = 0;
}

function numeric(s)
{
	var ns = '';
	
	for(i in s)
	{
		if(!isNaN(i))
		{
			ns += i;
		}
	}
	
	return ns;
}

function toInteger(e)
{
  	if(!e)
    	var e = window.event;
  
  	var k = e.keyCode;

	var c = (k == 8) || (k == 9) || (k == 13) || (k == 27) || (k == 46) || (k >= 48 && k <= 57) || (k >= 96 && k <= 105);

	if(!c) return false;
	  
}

function getRadioGroupValue(rObj)
{
	for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
    return false;
}

function gotoPage(url)
{
	document.location.href = url;
}

function changeLanguage(selRef)
{
	if(selRef.options[selRef.selectedIndex].value != "")
	{
		selRef.form.submit();
	}
}

function swapImage(destImgId,path)
{
	document.getElementById(destImgId).src = path;
}

function showLargeImage(suffix,src)
{
	var div = document.getElementById('div' + suffix);
	var img = document.getElementById('img' + suffix);

	div.style.visibility = 'visible';
	img.src = src;
}

function changeCB(cb,values)
{
	for(i = 0; i < values.length; i++)
	{
		values[i].checked = cb.checked;
	}
}

function toggleVisible(elemId)
{
	var el = _e(elemId);
	
	if(el.className == "hidden")
	{
		el.className = "";
	}
	else
	{
		el.className = "hidden";
	}
	
	if(el.style.display == "block")
	{
		el.style.display = "none";
	}
	else
	{
		el.style.display = "block";
	}
}

// functions
function openImageList(table,params)
{
	var nw = window.open('image_list.php?params=' + params + '&table=' + table,'il','width=800,height=600');
	return nw;
}

function ExtractNumber(value) { 
	var n = parseInt(value);
	return n == null || isNaN(n) ? 0 : n;
} 

function Pause(millis){
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); } while( curDate - date < millis);

}

function Monitor(str){
	try{
		var monitor = _e("monitor");
		monitor.innerHTML = str;
	} catch(e){}
}