
var vacancy_id = "";


function slideBlock(id, imgdir)
{
  if (!id)
  {
    return;
  }

  var block = document.getElementById("block" + id);
  if (!block)
  {
    return;
  }

  var image = document.getElementById("image" + id);
  if (!image)
  {
    return;
  }

  var cell = document.getElementById("cell" + id);
  if (!cell)
  {
    return;
  }


  if (block.style.display == "none")
  {
    block.style.display = "";
    //cell.className = "up";
    image.src = imgdir + "arrow-u.gif";
    image.width = 8;
    image.height = 11;
  }
  else
  {
    block.style.display = "none";
    //cell.className = "down";
    image.src = imgdir + "arrow-d.gif";
    image.width = 8;
    image.height = 11;
  }
}


function insertChild(id, description, skills, image, img_dir, jobs_dir, labels_arr)
{
  //alert("counter: " + id + "\ndescription: " + description + "\nskills: " + skills + "\nimage: " + image + "\nimg_dir: " + img_dir);

  if (!document.getElementById("child"+id))
  {
  	var elemParent = document.getElementById("vac"+id);
  	if (!elemParent)
  	{
  	  //alert("problem\n"+"vac"+id)
  	  return;
  	}

  	switchImage(img_dir + "arrow-u.gif", id);

  	img_content = (image != "") ? "<a href='"+jobs_dir+image+"' target='_blank'><img src='"+jobs_dir+image+"' border='0' /></a>" : "";

  	elemParent.innerHTML = "<table id='child"+id+"' border='0' cellspacing='1' cellpadding='2'>"
  	                       + "<tr>"
  	                       + "<td style='text-align:left; vertical-align:top; '>"
  	                       + "<table border='0' cellspacing='1' cellpadding='2'>"
                           + "<tr><td>"
                           + "<img src='"+img_dir+"spacer.gif' width='4' height='4' alt=''>"
                           + "</td></tr><tr>"
                           + "<td style='text-align:left; vertical-align:top; '>"
                           + "<strong>"+ labels_arr[0] +":</strong> "
                           + description
                           + "</td></tr><tr>"
                           + "<td style='text-align:left; vertical-align:top; '>"
                           + "<strong>"+ labels_arr[1] +":</strong> "
                           + skills
                           + "</td></tr><tr><td>"
                           + "<a href=''>"+ labels_arr[2] +"</a> "
                           + "<img src='"+img_dir+"arrow_02.gif' width='8' height='11' alt=''>"
                           + "</td></tr><tr><td>"
                           + "<a href=''>"+ labels_arr[3] +"</a> "
                           + "<img src='"+img_dir+"arrow_02.gif' width='8' height='11' alt=''>"
                           + "</td></tr><tr><td>"
                           + "<img src='"+img_dir+"spacer.gif' width='10' height='10' alt=''>"
                           + "</td></tr></table></td>"
                           + "<td style='text-align:left; vertical-align:top; '>"
                           + img_content
                           + "</td></tr></table>";
  }
  else
  {
  	switchImage(img_dir + "arrow-d.gif", id);
  	removeChild("child"+id);
  }
}

function removeChild(elemId)
{
  var elem = document.getElementById(elemId);
  elem.parentNode.removeChild(elem);
}

function removeDetails(id)
{
  var elem = document.getElementById("vac" + id);

  if (elem)
  {
  	elem.innerHTML = "<iframe name='iframe"+id+"' src='' style='display:none'> </iframe>";
  }
}


function switchImage(img, id)
{
  var image = document.getElementById("img" + id);
  if (!image)
  {
  	alert("problem img: " + id);
  	return;
  }
  image.src = img;
}


/* ************************************************************************************* */
function showBlock(id, img_dir)
{
  var elem = document.getElementById("vac" + id);
  if (!elem)
  {
  	return;
  }

  var div = document.getElementById("div" + id);
  if (!div)
  {
    return;
  }

  if (elem.attributes["opened"].value == 0)
  {
  	elem.removeAttribute("opened");
  	elem.setAttribute("opened", 1);

  	switchImage(img_dir + "arrow-u.gif", id);

  	div.className = "shown";
  }
  else
  {
  	elem.removeAttribute("opened");
  	elem.setAttribute("opened", 0);

  	switchImage(img_dir + "arrow-d.gif", id);

  	div.className = "hidden";
  }
}

function GetXmlHttpObject(handler)
{
  var objXmlHttp = null

  if (navigator.userAgent.indexOf("Opera") >= 0)
  {
    alert("This part does not work in Opera")
    return;
  }

  if (navigator.userAgent.indexOf("MSIE") >= 0)
  {
    var strName = "Msxml2.XMLHTTP"

    if (navigator.appVersion.indexOf("MSIE 5.5") >= 0)
    {
      strName = "Microsoft.XMLHTTP"
    }

    try {
      objXmlHttp = new ActiveXObject(strName)
      objXmlHttp.onreadystatechange = handler
      return objXmlHttp
    }
    catch(e)
    {
      alert("Error. Scripting for ActiveX might be disabled")
      return
    }
  }

  if (navigator.userAgent.indexOf("Mozilla") >= 0)
  {
    objXmlHttp = new XMLHttpRequest()
    objXmlHttp.onload = handler
    objXmlHttp.onerror = handler
    return objXmlHttp
  }
}


function showDetails(culture, id, vac_id, img_dir)
{
  var elem = document.getElementById("vac" + id);
  if (!elem)
  {
  	return;
  }

  if (elem.attributes["opened"].value == 0)
  {
  	elem.removeAttribute("opened");
  	elem.setAttribute("opened", 1);

  	var elemParent = document.getElementById("vac" + id);
  	if (!elemParent)
  	{
  	  return;
  	}

  	switchImage(img_dir + "arrow-u.gif", id);

    traceDetails(culture, id, vac_id);
  }
  else
  {
  	elem.removeAttribute("opened");
  	elem.setAttribute("opened", 0);

  	switchImage(img_dir + "arrow-d.gif", id);
  	removeDetails(id);
  }
}

function traceDetails(vacancyCulture, id, vacancyId)
{
  //vacancy_id = vacancyId;
  vacancy_id = id;

  http = GetXmlHttpObject(handleResponse);

  // go to Details Module, Vacancy Template
  http.open("GET", "/" + vacancyCulture + "/details/vacancy?vacancy_id=" + vacancyId);
  http.send(null);
}

function handleResponse()
{
  var elemParent = document.getElementById("vac" + vacancy_id);

  if (http.readyState == 4)
  {
  	elemParent.innerHTML = http.responseText;
  }
  else
  {
  	elemParent.innerHTML = "Loading details...";
  }
}



function validate (formName)
{
  var form = document.forms[formName];
  if (!form)
  {
  	return false;
  }
  var elements = form.elements.length;
  var error = false;
  var alerts = "";
  var elem;

  for (var j = 0; j < elements; ++j)
  {
  	var elem = form.elements[j];

  	//alert("obligatory["+j+"]: " + elem.attributes["obligatory"].value + "\nelem.value: " + elem.value);

  	if (elem.attributes["obligatory"] && elem.value == "")
  	{
  	  error = true;
  	}

  	if (elem.attributes["email_check"] && !emailCheck(elem.attributes["id"].value))
  	{
  	  error = true;
  	}

  	if (error && elem.attributes["err_msg"])
  	{
  	  alerts += elem.attributes["err_msg"].value + "\n";
  	}

  	error = false;/**/
  }

  if (alerts != "")
  {
  	alert(alerts);
  	return false;
  }

  return true;
}


function emailCheck (elem) {

  var emailStr = document.getElementById(elem).value;

  var checkTLD = 1;

  var knownDomsPat=/^(com|net|org|edu|gov|mil|int|arpa|aero|biz|coop|info|pro|museum|name|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cd|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zr|zw)$/;

  //var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

  var emailPat=/^(.+)@(.+)$/;

  var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

  var validChars="\[^\\s" + specialChars + "\]";

  var quotedUser="(\"[^\"]*\")";

  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

  var atom=validChars + '+';

  var word="(" + atom + "|" + quotedUser + ")";

  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat);

  if (matchArray==null)
      return false;

  var user=matchArray[1];
  var domain=matchArray[2];

// check domain
  var pos = domain.indexOf(".") ;
  if (pos == -1) {
      return false ;
  }

  var subdom = domain.substr(pos+1, domain.length);
  subdom = subdom.toLowerCase() ;

  if (subdom != "com" && subdom != "info" && subdom != "biz" && subdom != "net" && subdom != "org" && subdom != "name" &&
      subdom != "us" && subdom != "de" && subdom != "tv" && subdom != "cc" && subdom != "co.uk" && subdom != "me.uk" &&
      subdom != "org.uk" && subdom != "ca" && subdom != "cn" && subdom != "ch" && subdom != "fr" && subdom != "nl" &&
      subdom != "bg" && subdom != "ru")
      return false ;

// Start by checking that only basic ASCII characters are in the strings (0-127).

  for (i=0; i<user.length; i++) {
       if (user.charCodeAt(i)>127)
           return false;
  }
  for (i=0; i<domain.length; i++) {
       if (domain.charCodeAt(i)>127)
           return false;
  }

// See if "user" is valid

  if (user.match(userPat)==null)
      return false;

  var IPArray = domain.match(ipDomainPat);
  if (IPArray!=null) {

      for (var i=1;i<=4;i++) {
           if (IPArray[i]>255)
               return false;
      }
      return true;
  }

// Domain is symbolic name.  Check if it's valid.

  var atomPat=new RegExp("^" + atom + "$");
  var domArr=domain.split(".");
  var len=domArr.length;
  for (i=0;i<len;i++) {
       if (domArr[i].search(atomPat)==-1)
           return false;
  }

  if (checkTLD && domArr[domArr.length-1].length!=2 &&
      domArr[domArr.length-1].search(knownDomsPat)==-1)
      return false;

  if (len<2)
      return false;

  return true;
}

