// |||||||||||||||||||||||||||||||||||||||||||||||||||||
//
// Coded by Laurie Klevgard
// 5/17/06
//
// For support of search_critera.jsp
//
// Contains the following functions:
//     function toggleIt(objectID) 
//     function toggleText(objectID) 
//     function findDOM(objectID, withStyle) 
//     function createQuery(f)  
//     function isAllowedString(str)
//     function validateForm(f)
//     function create_query_and_validate(f)
// |||||||||||||||||||||||||||||||||||||||||||||||||||||


var isDHTML = 0;
var isLayers = 0;
var isAll=0;
var isID=0;


if (document.getElementById) { isID = 1; isDHTML = 1;}
else {
	if (document.all) { isAll = 1; isDHTML =1;} 
	else {
		browserVersion = parseInt(navigator.appVersion); 
		if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion ==4)) {
			isLayers = 1;
			isDHTML=1;
		}
	}	
}

function findDOM(objectID, withStyle) {
	if (withStyle == 1){
		if (isID) { 
			return (document.getElementById(objectID).style); }
		else {
			if (isAll){ return (document.all[objectID].style);}
			else { 
				if (isLayers) { return (document.layers[ojbectID]); } 
			}
		}
	}
	else {
		if (isID) { return (document.getElementById(objectID));}
		else {
			if (isAll) { return (document.all[objectID]); }
			else {
				if (isLayers) { return (document.layers[objectID]); }
			}
		}
	}
}

function toggleText(objectID) {
	if (isAll || isID) {
		domStyle = findDOM(objectID, 0);
		if(domStyle.value == 'Advanced Search') {
			domStyle.value = 'Basic Search';
		}
		else {
			domStyle.value = 'Advanced Search';
		}
	}
}

function toggleIt(objectID) {
	if (isAll || isID) {
		domStyle = findDOM(objectID, 1);
		if(domStyle.display == 'inline') {
			// turn off display
			domStyle.display= 'none';
		}
		else {
			// turn on display
			domStyle.display = 'inline';
		}
	}

	toggleText('advanced_search');
}


function createQuery(f) {

  f.QueryString.value = "select * from ft_resource r where 1=1 ";
 
  if (f.grade.value != '') f.QueryString.value = f.QueryString.value + 
	  " and (select grade_order from ft_ref_grade where grade =\'" + f.grade.value + 
	  "\') >= (select grade_order from ft_ref_grade where grade = r.grade_min) " +
	  " and (select grade_order from ft_ref_grade where grade =\'" + f.grade.value + 
	  "\') <= (select grade_order from ft_ref_grade where grade = r.grade_max) ";

  if (f.subject.value != '') f.QueryString.value = f.QueryString.value + " and r.subject_area = \'" + f.subject.value + "\'";
  if (f.organization.value != '') f.QueryString.value = f.QueryString.value + " and r.organization = \'" + f.organization.value + "\'";
  if (f.contact.value != '') f.QueryString.value = f.QueryString.value + " and r.contact_info like \'%" + f.contact.value + "%\'";


  // keyword searches both title and keywords table
  if (f.keyword.value != '') f.QueryString.value = f.QueryString.value + " and (r.title like \'%" + f.keyword.value +"%\' or " +
      " r.resource_id in (select resource_id from ft_keyword where keyword = \'" + f.keyword.value + "\'))";

  if (f.benchmark_number.value != '') f.QueryString.value = f.QueryString.value + 
      " and r.resource_id in (select resource_id from ft_standard where benchmark_number = \'" + f.benchmark_number.value + "\')";

  if (f.unifying_concept.value != '') f.QueryString.value = f.QueryString.value + 
      " and r.resource_id in (select resource_id " + 
                              "from ft_ref_nv_standard t1, ft_standard t2 " +
                              "where t1.benchmark_number = t2.benchmark_number " +
                              "and t1.level_3 = \'" + f.unifying_concept.value + "\')";

} // createQuery

function isAllowedString(str){
  var re = /[^a-zA-Z0-9@\-']/g
  if (re.test(str)) return false;
  return true;
}

function validateForm(f){
  // Validate the form data to insure no funky characters allowed
  var errors = '';
  var i,e,t,n,v;

  for(i=0; i < f.elements.length; i++){
    e = f.elements[i];
    if(e.optional) continue;
    t = e.type;
    n = e.name;
    v = e.value;
    if(t == 'text'){
        if(!isAllowedString(v)){
          errors += n+' can only contain characters: A-Z,a-z,-,@\n'; 
	  continue;
        }
    } 
  }
  if(errors != '') alert(errors);
  return errors == ''
}

function create_query_and_validate(f){
  // create the query
  createQuery(f);

  // Validate the form data to insure no funky characters allowed
  return validateForm(f);

}

