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 mousePos(evt)
{
	var e = (window.event) ? window.event : evt;
	return {'x':e.clientX,'y':e.clientY};
}

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 regUsername = /^[a-zA-Z0-9_\.]+$/;
	var regUsernameString = "a-z,A-Z,0-9,_,.";
	var err = "";
	
	//alert(frm);	
	//return false;
  	
	for(var i in frmObj)
  	{
		if(frm.elements[i] != null)
		{
			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;
			}
			//alert(elem_value);
			//console.log(i);
			switch(frmObj[i][1]) // type
			{
				case 'username':			
					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]);
					}
					
					if (!elem_value.match(regUsername))
					{
						isValid = false;
						err += printf(Msg['can_only_contain'] + ".\n",frmObj[i][0],regUsernameString);
					}										
					break;
				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 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 numeric(s)
{
	reg = /\D/g;
	return s.replace(reg,"");
}

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,bool)
{
	var el = _e(elemId);
	
	if(el.className == "hidden")
	{
		el.className = "";
	}
	else
	{
		el.className = "hidden";
	}
	
	if(el.style.display == "block" || (bool != undefined && !bool))
	{
		el.style.display = "none";
	}
	else if(el.style.display != "block" || (bool != undefined && bool))
	{
		el.style.display = "block";
	}
	else
	{}
}

function selectSetValue(sel,val)
{
	for(i = 0; i < sel.options.length; i++)
	{
		if(sel.options[i].value == val)
		{
			sel.selectedIndex = i;
			return true;
		}
	}
	
	return false;
}

function showToolTip(targetRef,tip)
{
	if(_e('tooltip') == null)
	{
		var tooltip = document.createElement("DIV");
		tooltip.className="tooltip";
		tooltip.id = "tooltip";
		
		window.document.body.appendChild(tooltip);
	}
	else
	{
		_e('tooltip').style.display = 'block';	
	}
	
	var tt = _e('tooltip');
	pos = findPos(targetRef);
	
	tt.innerHTML = tip;
	tt.style.left = pos.left + "px";

	tt.style.top = pos.top - tt.offsetHeight + "px";
	
}

function hideToolTip()
{
	try
	{
		_e('tooltip').style.display = "none";	
		_e('tooltip').innerHTML = "";
	}
	catch(e)
	{
		
	};
}

function checkVoidCBString(cbStr)
{
	var isVoid = true; 

	//alert(typeof cbStr + " : " + cbStr.length);

	if(!cbStr.length)
	{
		//alert("NULL");
		if(cbStr.checked)
		{
			isVoid = false;
		}	
	}
	else
	{
		var len = cbStr.length;
		for(i = 0; i < len; i++ )
		{
			if(cbStr[i].checked)
			{
				isVoid = false;	
				break;
			}
		}
	}

	if(isVoid && arguments[1])
	{
		alert("Nu ati selectat nimic.");
	}

	return isVoid;
	
}
