function jv_validate_name(name) {
var nameField = document.getElementById('name');
var error = document.getElementById('error_name');
var filter = /^[a-zA-Z ]+$/;

 if(!filter.test(name)) {
   error.innerHTML = 'Name can only contain string!';
   error.style.className = "msg";
   return false;
 } else {
   error.innerHTML = '';
   error.style.className = '';
 }

 if (name == null || name == '') {
   nameField.focus();
   error.innerHTML = 'Fill in your name!';
   error.style.className = "msg";
   return false;
 } else {
   error.innerHTML = '';
   error.style.className = '';
 }

 if (name.length < 5) {
   nameField.focus();
   error.innerHTML = 'Name too short!';
   error.style.className = 'msg';

   return false;
 } else {
   error.innerHTML = '';
   error.style.className = '';

 }
   return true;
}

function jv_validate_email(email) {
 var error = document.getElementById('error_email');
 var emailField = document.getElementById('email');
 var emailFilter = /^([A-Za-z0-9_\-\.\+])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  if (email == null || email == '') {
    emailField.focus();
    error.innerHTML = 'Fill in your email!';
    error.style.className = 'msg';

    return false;
  } else {
    error.innerHTML = '';
    error.style.className = '';
  }

  if (emailFilter.test(email) == false) {
      emailField.focus();
      error.innerHTML = 'Invalid Email!';
      error.style.className = 'msg';

      return false;
  } else {
    error.innerHTML = '';
       error.style.className = '';
  }

 return true;
}

function jv_validate_password(pass) {
var error = document.getElementById('error_password');

var error_msg = '';
var error_class = '';
var valid = true;

if (pass == '' || pass == null) {
    error_msg = 'No empty passwords!';
//     error_class = 'msg';
    valid = false;
}
if (pass.length>0 && pass.length < 7) {
    error_msg = 'Password too weak!'; // to do - languages? how?
//     error_class = 'msg';
    valid = false;
}

error.innerHTML = error_msg;
error.className = error_class;

return valid;
}



function jv_tab_highlight(tab) {
for (var i in tabs) {
    document.getElementById(tabs[i]).className = 'none';
}
document.getElementById(tab).className = 'selected';
}


var holding_text;

function jv_tab_content_change(id,ajax_file,tab) {

//alert(id+ ' replace with: ' + ajax_file);
// here do show loading animation.

// + ' replace with: ' + ajax_file);

var mydiv =  document.getElementById(id);

holding_text = mydiv.innerHTML;

var mytab = document.getElementById(tab);
mytab.className = mytab.className + ' loading';

ajax_get(ajax_file,
    function (text) {
        var mydiv =  document.getElementById(id);
        mydiv.innerHTML = text;
        jv_tab_highlight(tab);
    });

return false;
}

var tabs = ['tab_sector','tab_locations','tab_type'];





function jv_snippet_do(id, snippet, data) {
    // take data json encode
    // put up loading image on the element id.
    // send to /ajax/snippet.php
    // replace element id innerHTML
    // remove loading image

    var target = document.getElementById(id);
    if (target == null) return;

    var value = 5;
    target.style.opacity = value/10;
    target.style.filter = 'alpha(opacity=' + value*10 + ')';

    var str = json_encode(data);

    var ajax_file = '/ajax/snippet.php?snippet=' + snippet + '&data=' + str;
    ajax_get(ajax_file,
        function (text) {
            target.innerHTML = text;
            Cufon.replace('h1.cufon'); // needed for articles etc.
            var value = 10;
            target.style.opacity = value/10;
            target.style.filter = 'alpha(opacity=' + value*10 + ')';
        });


}



function jv_action_do(id, action, data) {
    var target = document.getElementById(id);
    if (target == null) return;

    var value = 5;
    target.style.opacity = value/10;
    target.style.filter = 'alpha(opacity=' + value*10 + ')';

    var str = json_encode(data);

    var ajax_file = '/ajax/action.php?action=' + action + '&data=' + str;
    ajax_get(ajax_file,
        function (text) {
            target.innerHTML = text;
            Cufon.replace('h1.cufon'); // needed for articles etc.
            var value = 10;
            target.style.opacity = value/10;
            target.style.filter = 'alpha(opacity=' + value*10 + ')';
        });

    // HERE we need some kind of way of doing a callback function.
}


function jv_watch(id) {
    var a = {action:'watch_job',job_id:id};
    jv_action_do('job_'+id,'watch_job',a);
}


function jv_set_topbuttons() {

// read cookies and do stuff - has dependencies on cms_v1.2.js++
var status = cms_read_cookie('status');
var recruiter_status = cms_read_cookie('recruiter_status');
var admin_status = cms_read_cookie('admin_status');

if (status == undefined && recruiter_status == undefined) return false;

var buttons = document.getElementById('topbuttons');
var url = location.pathname;
if (url.indexOf('Control/') != '-1') { 
	if (recruiter_status == 'recruiter') {
	    buttons.innerHTML = '<a href="/Control/logout.php">Logout</a><a href="/Control/Recruiter/post_job.php">Post a Job</a>';
	} else {
	    buttons.innerHTML = '<a href="/Control/logout.php">Logout</a><a href="/Jobs/search.php">Job Search</a>';
	}

} else {

	if (recruiter_status == 'recruiter') {
	    buttons.innerHTML = '<a href="/Control/logout.php">Logout</a><a href="/Control/">Control Panel</a>';
	} else  {
	    buttons.innerHTML = '<a href="/Control/logout.php">Logout</a><a href="/Control/">Control Panel</a>';
	}

}

return false;
}



//this two function will only be use when delete recruiter with ajax
function delete_recruiter(id) {
  var job_id = parseInt(id);
  if (isNaN(id)) {
    alert('Recruiter id must be an integer');
    return false;
  } else {
    var answer = confirm ("Are you sure want to delete this recruiter?");
    if (answer) {
      deleteRecruiter(id);
    }
  }
}

function deleteRecruiter(id) {
alert('id return from function ajax_get ' + id);
var mydiv =  document.getElementById('recruiter');

holding_text = mydiv.innerHTML;

ajax_get('/ajax/recruiter.php?action=delete&recruiter_id='+id,
    function (text) {
        var mydiv =  document.getElementById('recruiter');
        mydiv.innerHTML = text;
				alert(text);
    });

}

//this two function will only be use when delete branch with ajax
function delete_branch(id) {
  var job_id = parseInt(id);
  if (isNaN(id)) {
    alert('Branch id must be an integer');
    return false;
  } else {
    var answer = confirm ("Are you sure want to delete this branch?");
    if (answer) {
      deleteBranch(id);
    }
  }
}

function deleteBranch(id) {
alert('id return from function ajax_get ' + id);
var mydiv =  document.getElementById('branch');

holding_text = mydiv.innerHTML;

ajax_get('/ajax/branch.php?action=delete&branch_id='+id,
    function (text) {
        var mydiv =  document.getElementById('branch');
        mydiv.innerHTML = text;
				alert(text);
    });

}

