
function fdump() { }

/* --START functions for "search" -- */
function fn_toggleArtistCheck(artist_id,division_id)
{
  var xmlHttp;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e) {
    // Internet Explorer
    try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
      try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) {
        alert("Your browser does not support AJAX!");
        return false;
      }
    }
  }
  xmlHttp.onreadystatechange=function()
    {
      if(xmlHttp.readyState==4)
      {
        var resp = xmlHttp.responseText.split(':')
        if (resp[1]=='on') {
          document.getElementById('aSelected'+resp[0]).style.visibility='visible';
        } 
        else {
          document.getElementById('aSelected'+resp[0]).style.visibility='hidden';
        }
      }
    }
  xmlHttp.open("GET","toggleArtist?artist_id="+artist_id+'&division_id='+division_id,true);
  xmlHttp.send(null);
}


/* --END function sfor "search" -- */


/* --START functions for "artist/view" -- */
function fn_artistPreloadImages() {
	document.aArtistImages = [];
	for (i=0; i < document.artist_URLs.length; i++) {
		var img = new Image();
		img.src = document.artist_URLs[i];
		img.name = 'artist_image';
		document.aArtistImages.push(img);
	}
	document.iCurrentArtistImage = 0;
}
function fn_toggleField(id,show) {
	 if (show) {document.getElementById(id).style.removeProperty('display')}
	 else {document.getElementById(id).style.setProperty('display','none',null)}
}

function fn_artistChangeImage(change) 
{
	var isExtreme = (document.iCurrentArtistImage == 0)? 1 : (document.iCurrentArtistImage == document.aArtistImages.length-1)? -1 : 0;
	var iTarget;
	if (isExtreme*change == -1) { // Moving before beginning or past end
		iTarget = (change < 0)? document.aArtistImages.length-1 : 0;
	} else {
		iTarget = document.iCurrentArtistImage+change;
	}
	oParent = document.getElementById('avImage')
	oImg = fn_getContainedTagByName(oParent,'img')

	if (oImg.name != 'artist_image') {alert ("ERROR: Couldn't find artist image to replace.")
	} else {
		oImg.src = document.aArtistImages[iTarget].src;
                oImg.setAttribute('photoid',document.artist_IDs[iTarget]);
		document.iCurrentArtistImage = iTarget;
		document.getElementById('avImageIndex').firstChild.data = (iTarget+1)+''		
	}
}
/* --END functions for "artist view" -- */

/* --START Menu navigation functions --*/
/*function fn_handleMenuKeypress(oParent,oEvent) {
	//fn_dumpObject(oParent);
	//alert(toString(oParent)+"\n"+typeof(oParent))
	//Catch 38 (up) and 40 (down) 9 (tab)
	switch (oEvent.keyCode) {
	case (38):
	case (40):
		fn_moveFocus(oParent,1);
	case (9):
	default:
	return true;
	}
}
function fn_moveFocus(oParent,iMove) {//iMove: 0 means last, 1: up, -1 : down.
	dump("fn_moveFocus("+oParent+","+iMove+")\n");
	if (oParent.nodeName.toLowerCase() == 'a') {
		if (iMove == 1) {
			if (oTarget === oTarget.parentNode.lastChild) {
				fn_moveFocus(oTarget.parentNode.nextSibling);
			} else {
				fn_setFocus(oTarget.nextSibling);
			}
		} else { //Should be iMove=-1 as iMove= 0 should never be called with <a> as oParent
			if (oTarget === oTarget.parentNode.firstChild) {
				fn_moveFocus(oTarget.parentNode.previousSibling);
			} else {
				fn_setFocus(oTarget.previousSibling);
			}
		}
	} else {
		if (iMove == 1) {
			var oTarget = oParent.firstChild;
			if (oTarget.nodeName.toLowerCase() != 'a') fn_moveFocus(oTarget,1)
			else fn_setFocus(oTarget);
		} else {
			var oTarget = oParent.lastChild;
			if (oTarget.nodeName.toLowerCase() != 'a') fn_moveFocus(oTarget,0)
			else fn_setFocus(oTarget);
		}
	}
}
function fn_setFocus(obj) {
	obj.focus();
}*/
/* --END Menu navigation functions --*/

/* --START General useful functions --*/

/*const GBLTut_ConsoleService = Components.classes['@mozilla.org/consoleservice;1'].getService(Components.interfaces.nsIConsoleService);
alert(GBLTut_ConsoleService);
function fn_log(aMessage)
{
    GBLTut_ConsoleService.logStringMessage('My_Extension: ' + aMessage);
}*/

function fn_addClassesById(sId,aClasses) {
	var oTarget = document.getElementById(sId);
	fn_addClassesFromObject(oTarget,aClasses);
}
function fn_addClassesToObject(oTarget,aArgs) {
	try {var aClass = oTarget.className.split(' ');}
	catch(e){var aClass=[];}
	//var aArgs = fn_argumentsToArray(arguments).splice(1);
	//alert("Classes to add: "+aArgs+"\nExisting classes: "+aClass+"\nArguments: "+arguments);
	for (iAdd in aArgs) {
		//alert("iAdd :" +iAdd+"\n");
		if (typeof(aArgs[iAdd]) == 'string') aClass.push(aArgs[iAdd]);
	}
	//alert("Totalling classes: "+aClass);
	oTarget.className = aClass.join(' ')+'';
}
function fn_removeClassesById(sId,aClasses) {
	var oTarget = document.getElementById(sId);
	fn_removeClassesFromObject(oTarget,aClasses);
}
function fn_removeClassesFromObject(oTarget,aArgs) {
	try	{
		var aClass = oTarget.className.split(' ');
	}
	catch(e) {
		var aClass=[];
	}
	//var aArgs = fn_argumentsToArray(arguments).splice(1);
	for (iRemove in aArgs) {
		if (aClass.getIndex(aArgs[iRemove]) >= 0) {
			delete aClass[aClass.getIndex(aArgs[iRemove])]
		}
	}
	if (aArgs.length < 1) {
		aClass=[];
	}
	oTarget.className = aClass.join(' ')+'';
}
/*function fn_argumentsToArray(args) { //Doesn't work in Opera
	var aResult = []
	alert("arguments: "+arguments+"\narguments.length :"+arguments.length);
	for (var i = 0; i<=args.length-1;++i) {
		aResult.push(args[i]);
	}
	return aResult;
}*/
function fn_setPropertyById(sId,property,val) {
	var oTarget = document.getElementById(sId);
	var sProp = oTarget[property];
	oTarget[property] = val;
	//DEBUG:
	//alert("setPropertyById('"+sId+"','"+property+"','"+val+"'\nProperty before: "+sProp+"\nResult: "+oTarget[property]);
}
/* Array.getIndex augumentation by Mick White */
Array.prototype.getIndex=function(val){
	for(var i=0;i<this.length;i++){
		if(this[i]==val) return i;
	}
	return -1;
}
function fn_dumpObject(obj) {
	var aOutput = [];
	for (var a in obj) {
		val = new String(obj[a])
		aOutput.push(a+": "+val.slice(0,30));
	}
	alert(aOutput.join('\n'));
}

function fn_getContainedTagByName(oParent,sNodeName) {
	var aChildren = oParent.childNodes;
	//alert(oParent.nodeName+" has "+oParent.childNodes.length+ " children: "+aChildren[0]);
	for (var iC = 0; iC < aChildren.length; iC++){ //(iC in aChildren) {
		//alert(iC+" : "+aChildren[iC]+ " ("aChildren[iC].nodeName.toLowerCase()+")\n");
		//if (iC != 'length') {
		//alert(" -> "+toString(aChildren[iC]));//.nodeName.toLowerCase()+"\n");
		//fn_dumpObj(aChildren[iC]);
		if (aChildren[iC].nodeName.toLowerCase() == sNodeName) {
			//dump("FOUND: "+aChildren[iC].nodeName);
			return aChildren[iC];
		} else {
			var branchResult = fn_getContainedTagByName(aChildren[iC],sNodeName);
			if (branchResult) {
			return branchResult;}
		} 
	}
	return null;
}

function popup(url){
  features = 'toolbar=0,scrollbars=1,resizable=1, width=500,height=400';
  window.open(url, "popup", features);
}

function popup_chpw(url){
  features = 'toolbar=0,scrollbars=1, width=200,height=200';
  window.open(url, "password", features);
}

function fn_newWin(url,toolbar){
  features = 'toolbar='+toolbar+',scrollbars=1,resizable=1';
  window.open(url, "browser_window", features);
}

var popupi = 1;
function fn_popup(mypage, w, h, scroll) {
  var winl = (screen.width - w) / 2;
  var wint = (screen.height - h) / 2;
  winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable=1';
  win = window.open(mypage, "popup"+popupi, winprops);
  popupi = popupi + 1;
//  if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

function fn_switchTab(hide,show,index) {
  document.getElementsByName('tab')[0].value=index;
  document.getElementById(hide).style.display='none';
  document.getElementById(show).style.display='block';
}

function fn_smsCounter(field,cntfield,tcntfield,maxlimit) {
  if (field.value.length > maxlimit) // if too long...trim it!
    field.value = field.value.substring(0, maxlimit);
  else // otherwise, update 'characters left' counter
    cntfield.value = field.value.length;
  if (field.value.length >= 160)
    tcntfield.value = 2;
  else
    tcntfield.value = 1;
}
/* --END General useful functions -- */
/* ----------------------------------- */

/* --START functions for "artist/shortlist" -- */
function fn_shortlistAppendChoice(voidID,sQuestion) {
	 if (document.getElementById(voidID).selected == true) return false;
	 var bHasSelection = false;
	 checkboxes = document.getElementsByName('ids:int:list')
	 //var output ='';
	 for (var i = 0; ((i < checkboxes.length) && (!bHasSelection)); i++) {
	     //output += i+': '+String(checkboxes[i].checked)+'\n'
	     if (checkboxes[i].checked == true) bHasSelection = true;
	 }
	 //alert(output)
	 if (! bHasSelection) {
	    return confirm(sQuestion)? true: false;
	 }
	 return true;
}


function fn_shortlistBriefingChoice(sQuestion) {
         var dest_briefing_id = document.getElementsByName('dest_briefing_id')[0];
         if (dest_briefing_id.value == '') return false;

	 var bHasSelection = false;
	 checkboxes = document.getElementsByName('ids:int:list')
	 for (var i = 0; ((i < checkboxes.length) && (!bHasSelection)); i++) {
	     if (checkboxes[i].checked == true) bHasSelection = true;
	 }
	 if (! bHasSelection) {
	    return confirm(sQuestion)? true: false;
	 }
	 return true;
}

function fn_shortlistToggle(toggle)
{
	 checkboxes = document.getElementsByName('ids:int:list')
	 for (var i = 0; i < checkboxes.length; i++) {
	     checkboxes[i].checked = toggle.checked; 
	 }
	 return true;
}

function fn_shortlistCheckboxToggle(checkbox)
{
    var toggle = document.getElementById('ids_toggle');
    if (toggle.checked && !checkbox.checked) { toggle.checked = false; }    
    return true;
}

/* --END functions for "artist/shortlist" -- */

/* --START functions for "artist/search" -- */
function fn_enableField(name) {
  oTargets = document.getElementsByName(name)
  for (var i = 0; i < oTargets.length; i++) {
      oTargets[i].disabled = false;
  }
}

function fn_disableField(name) {
  oTargets = document.getElementsByName(name)
  //alert("I'm asked to disable "+name+'\nIt has '+oTargets.length+' matches in the document.')
  for (var i = 0; i < oTargets.length; i++) {
      //alert("I'm asked to disable "+name)	
      oTargets[i].disabled = true;
  }
}

var searchFieldConflicts = {
  'only_pending': {
    'disables': ['include_nonregistered','only_notworked','only_notworked_project','only_special_project','only_reg_period'],
    'enables': []
  },
  'include_nonregistered': {
    'disables': ['only_pending','only_notworked','only_notworked_project','only_reg_period'],
    'enables': []
  },
  'only_notworked': {
    'disables': ['only_pending','include_nonregistered','only_notworked_project','only_special_project','only_reg_period'],
    'enables': []
  },
  'only_notworked_project': {
    'disables': ['only_pending','include_nonregistered','only_notworked','only_special_project','only_reg_period'],
    'enables': []
  },
  'only_special_project': {
    'disables': ['only_pending','only_notworked_project','only_notworked','only_notworked_project','only_reg_period'],
    'enables': []
  },
  'only_reg_period': {
    'disables': ['only_pending','include_nonregistered','only_notworked','only_notworked_project','only_special_project'],
    'enables': []
  }
}

var searchFieldObjects = []

function fn_searchUpdateFields() {
	for (var i = 0; i < searchFieldObjects.length; i++) {
		searchFieldObjects[i].disabled = false;
	}
	for (var i = 0; i < searchFieldObjects.length; i++) {
		if (searchFieldObjects[i].checked == true) {
			var disables = searchFieldConflicts[searchFieldObjects[i].name]['disables']
    for (var i = 0; i < disables.length; i++)
    	{fn_disableField(disables[i])}
  }
	}
}

function fn_searchUpdateDisabledFields(oToggled) {
  eName = oToggled.name
  eSpec = searchFieldConflicts[eName]
  //alert(eName+'\n'+eSpec);
  //alert(eName+': '+oToggled+' state: '+oToggled.checked)			 
  //alert(searchFieldConflicts);
  if (oToggled.checked == true) {
     //alert('disabling: '+eSpec['disables'].length+' fields.')
    for (var i = 0; i < eSpec['disables'].length; i++)
    	{fn_disableField(eSpec['disables'][i])}
    for (var i = 0; i < eSpec['enables'].length; i++)
    	{fn_enableField(eSpec['enables'][i])}
  } else {
      for (var i = 0; i < eSpec['disables'].length; i++)
    	{fn_enableField(eSpec['disables'][i])}
    for (var i = 0; i < eSpec['enables'].length; i++)
    	{fn_disableField(eSpec['enables'][i])}
  }
}

function fn_ArtistSearchOnLoad () {
	// Check browser version
	with (navigator){
		if ((appName == "Microsoft Internet Explorer") && (appVersion.indexOf("Mac") != -1 )) 
			fn_removeClassesById('MacIEWarning',['not_displayed']);
	}
	fn_setPropertyById('skillslanguage','isExpanded',true);
	fn_setPropertyById('appearance','isExpanded',true);
	aElements = document.getElementById('searchform').elements
	//var numCheckboxes = 0;
      	//alert(aElements[100].nodeName.toLowerCase())
	for (var i = 0; i < aElements.length; i++) {
	    if ((aElements[i].nodeName.toLowerCase() == 'input') && (aElements[i].type == 'checkbox')) {
	       //++numCheckboxes;
	       switch (aElements[i].name) {	     
                      case 'only_pending':
	       	      case 'include_nonregistered':
	       	      case 'only_notworked':
	       	      case 'only_notworked_project':
	       	      case 'only_special_project':
	       	      case 'only_reg_period': {
									searchFieldObjects.push(aElements[i])
	       	      	   //if (aElements[i].checked) {fn_searchUpdateDisabledFields(aElements[i])} 
		      }
	       }
	    }
	}
	fn_searchUpdateFields();
	//alert('Found '+numCheckboxes+' checkboxes.')
}
function fn_cloneAndInsertBefore(source_id,insert_id) {
	var o_source = document.getElementById(source_id);
	var o_insert = document.getElementById(insert_id);
	var o_clone = o_source.cloneNode(true);
	o_insert.parentNode.insertBefore(o_clone,o_insert);
}

function fn_cutBranchAtParentNodeName(o_child,s_parentNodeName) {
	
	var oToRemove = o_child;
	do {
		oToRemove = oToRemove.parentNode;
	} while (oToRemove.nodeName.toLowerCase() != s_parentNodeName)
	var oRemoved = oToRemove.parentNode.removeChild(oToRemove);
	delete oRemoved;
}

function fn_toggleSectionContraction(section_id) {
	var o_expanded = document.getElementById(section_id);
	var o_contracted = document.getElementById(section_id+'_contracted');
	try { isExpanded = o_expanded.isExpanded }
	catch (e) { isExpanded = false }
	//alert(section_id+" is expanded: "+o_expanded.isExpanded+"\nLabel class: "+o_contracted.className+"\nSection class: "+o_expanded.className+"\nisExpanded: "+isExpanded);
	fn_removeClassesFromObject(o_contracted,['fLabelHidden','fLabelShown']);
	fn_removeClassesFromObject(o_expanded,['fSectionHidden','fSectionShown']);
	if (isExpanded) {
		fn_addClassesToObject(o_expanded,['fSectionHidden']);
		fn_addClassesToObject(o_contracted,['fLabelShown']);
		o_expanded.isExpanded = false;
		var oCLink = fn_getContainedTagByName(o_contracted,'a');
		var oELink = fn_getContainedTagByName(o_expanded,'a');
		//dump('oCLink: '+oCLink.accessKey+'\noELink:'+oELink.accessKey+'\n');
		oCLink.accessKey = oELink.accessKey;
		//dump('oCLink: '+oCLink.accessKey+'\noELink:'+oELink.accessKey+'\n');
		oELink.removeAttribute('accesskey');
		//dump('oCLink: '+oCLink.accessKey+'\noELink:'+oELink.accessKey+'\n');
		if (oCLink) {oCLink.focus()}
		//o_contracted.focus()
	} else {
		fn_addClassesToObject(o_expanded,['fSectionShown']);
		fn_addClassesToObject(o_contracted,['fLabelHidden']);
		o_expanded.isExpanded = true;
		var oCLink = fn_getContainedTagByName(o_contracted,'a');
		var oELink = fn_getContainedTagByName(o_expanded,'a');
		//dump('oCLink: '+oCLink.accessKey+'\noELink:'+oELink.accessKey+'\n');
		oELink.accessKey = oCLink.accessKey;
		//dump('oCLink: '+oCLink.accessKey+'\noELink:'+oELink.accessKey+'\n');
		oCLink.removeAttribute('accesskey');
		//dump('oCLink: '+oCLink.accessKey+'\noELink:'+oELink.accessKey+'\n');
		//alert("setting focus to "+oLink.id);
		if (oELink) {oELink.focus()}
		//o_expanded.focus()
	}
	//alert(section_id+" is expanded: "+o_expanded.isExpanded+"\nLabel class: "+o_contracted.className+"\nSection class: "+o_expanded.className+"\nisExpanded: "+isExpanded);
}

function fn_changeRangeMin(o_min,max_name) {
    o_max = document.getElementsByName(max_name)[0]
    if (o_min.selectedIndex > 0 && o_max.selectedIndex > 0 && o_min.selectedIndex >= o_max.selectedIndex) { 
       o_max.selectedIndex = o_min.selectedIndex; 
    }
}
function fn_changeRangeMax(o_max,min_name) {
    o_min = document.getElementsByName(min_name)[0]
    if (o_max.selectedIndex > 0 && o_min.selectedIndex > 0 && o_max.selectedIndex <= o_min.selectedIndex) { 
       o_min.selectedIndex = o_max.selectedIndex; 
    }
}

/* --END functions for "artist/search" -- */
/* -------------------------------------- */


function ajaxObject() 
{
  var xmlHttp;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e) {
    // Internet Explorer
    try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
      try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) {
        alert("Your browser does not support AJAX!");
        return false;
      }
    }
  }
  return xmlHttp;
}