/* ########################################################################################
									IMAGE MANIPULATION
######################################################################################## */

// Init Vars
var originalImg;


function returnEvent(evt) {
	var evt = (evt) ? evt : ((event) ? event : null);	
	return evt;
}
// Dynamically get the images' ID
function getTargetId(evt) {
	var evt = returnEvent(evt); 
	var objId = (evt.target) ? evt.target.id : ((evt.srcElement) ? evt.srcElement.id : null);
	return objId;
}
// Return a swapped image to its original
function swapImageReturn(evt) {
	document.getElementById(getTargetId(evt)).src = originalImg;	
}
// Swap an Image
function swapImage(evt, newImg) {
	originalImg = document.getElementById(getTargetId(evt)).src;
	document.getElementById(getTargetId(evt)).src = newImg;
}


/* ########################################################################################
									DIV MANIPULATION
######################################################################################## */

// Init Vars
var userType = new Array("user_login", "user_register");

function hideShow_userType(name) {
	var objId = name;
	for (var i=0; i<userType.length; i++) {
		if (objId == userType[i]) {
			document.getElementById(userType[i]).style.display = "block";	
		} else {
			document.getElementById(userType[i]).style.display = "none";
		}
	}
}


/* ########################################################################################
									FILE UPLOAD STYLE
######################################################################################## */

// Init Vars
var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploadButton() {
	if (!W3CDOM) return true;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='/resource/images/button_browse.jpg';
	fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		x[i].onchange = x[i].onmouseout = function () {
			this.relatedElement.value = this.value;
		}
	}
	
	return true;
}


/* ########################################################################################
									Extra Functions
######################################################################################## */

function popUpWindow(strURL, intWidth, intHeight)
{
	intLeft = (window.screen.width - (intWidth))/2;
	intTop = (window.screen.height - (intHeight))/2;
	objWindow = window.open(strURL,'_blank', 'width=' + intWidth + ', height=' + intHeight + ', left=' + intLeft +  ', top=' + intTop + ', fullscreen=no, scrollbars=no, resizable=yes, menubar=no, status=no');
}

/* Undo the effects of replaceSpecialChars() function...	*/
function restoreWhiteSpaceCharsForHTML(specialChars)
{
	specialChars = specialChars.replace(/    /g, "&nbsp;&nbsp;&nbsp;&nbsp;"); 
	specialChars = specialChars.replace(/\n/g, "<br>"); 
	return specialChars;
}

function restoreWhiteSpaceChars(specialChars)
{
	specialChars = specialChars.replace(/__Tab__/g, "&nbsp;&nbsp;&nbsp;&nbsp;"); 
	specialChars = specialChars.replace(/__NewLine__/g, "\n"); 
	specialChars = specialChars.replace(/__CarriageReturn__/g, "\n"); 
	return specialChars;
}	
// Window will be centered..
function popUpWindow(strURL, intWidth, intHeight)
{
	intLeft = (window.screen.width - (intWidth))/2;
	intTop = (window.screen.height - (intHeight))/2;
	objWindow = window.open(strURL,'_blank', 'width=' + intWidth + ', height=' + intHeight + ', left=' + intLeft +  ', top=' + intTop + ', fullscreen=no, scrollbars=yes, resizable=yes, menubar=no, status=no');
}

/*  Victor */

function swapQuickSearchTabImages(objTab)
{
	objImage1 = $('idTabBanking');
	objImage2 = $('idTabAccounting');
	objSelectBanking = $('idCategorySelectBanking');
	objSelectAccounting = $('idCategorySelectAccounting');
	
	myRegExp = /.*_inactive.jpg/g;
	myRegExp2 = /.*_active.jpg/g;
	
	/* Only perform this if the tab is currently inactive...*/
	if(myRegExp.test(objTab.src))
	{
		if(myRegExp.test(objImage1.src) || myRegExp2.test(objImage2.src))
		{
			objImage1.src = "/resource/images/TAB_banking_active.jpg";
			objImage2.src = "/resource/images/TAB_accounting_inactive.jpg";	
			objSelectBanking.style.display = 'block';
			objSelectAccounting.style.display = 'none';
			for (var i=0;i < objSelectAccounting.length; i++) {
  			objSelectAccounting.options[i].selected = false;
			}	
			gblCurrentlySelectedTabId = objImage1.id;
		}
		else
		{
			objImage1.src = "/resource/images/TAB_banking_inactive.jpg";
			objImage2.src = "/resource/images/TAB_accounting_active.jpg";	
			objSelectBanking.style.display = 'none';
			for (var i=0;i < objSelectBanking.length; i++) {
  			objSelectBanking.options[i].selected = false;
			}	
			objSelectAccounting.style.display = 'block';
			gblCurrentlySelectedTabId = objImage2.id;
		}
	}
}

// function returns the keyCode of the pressed key...
function handleKeyPress(e)
{
	var keynum;
	var keychar;
	var numcheck;
	if(window.event) // IE
	{
		keynum = window.event.keyCode;
	}
	else if(e && e.which) // Netscape/Firefox/Opera
	{
		keynum = e.which;
	}
	return keynum;
}

function validateForm(objForm)
{
	/* Return true or false depending on success of the validation results... */
	return true;
}

// function used to make all fields disabled
function makeAllFormReadOnly()
{
	for(k = 0; k < document.forms.length; k++)
	{
		for(m = 0; m < document.forms[k].elements.length; m++)
		{				
			if(document.forms[k].elements[m].type != 'button')
			{	
				document.forms[k].elements[m].disabled = true;				
			}
		}
	}
}

/* moveSelectedValuesToTop:
	Reorders a select box with its selected options at the top, followed by the unselected ones. */
function moveSelectedValuesToTop(objSelect) {
	var arySelected = new Array();
	var aryUnselected = new Array();
	
if (typeof objSelect !== "undefined" && objSelect !== null) {
	
	/* Create an object to hold each option's text and value attributes
		then assign the object to the appropriate array. */
	for(i=0; i<objSelect.options.length; i++) {
		var objOption = new Object();
		
		objOption.text = objSelect.options[i].text;
		objOption.value = objSelect.options[i].value;
		
		if(objSelect.options[i].selected) {
			arySelected[arySelected.length] = objOption;
		} else {
			aryUnselected[aryUnselected.length] = objOption;
		}
	}
	
	/* Remove all of the select box's options. */
	while(objSelect.hasChildNodes()) {
		objSelect.removeChild(objSelect.firstChild);
	}
	
	/* Add the selected options to the select box first
		then add the non-selected options. */
	for(j=0; j<arySelected.length; j++) {
		elmtOption = document.createElement('option');
		elmtOption.innerHTML = arySelected[j].text;
		elmtOption.value = arySelected[j].value;
		elmtOption.selected = true;
		
		objSelect.appendChild(elmtOption);
	}
	for(k=0; k<aryUnselected.length; k++) {
		elmtOption = document.createElement('option');
		elmtOption.innerHTML = aryUnselected[k].text;
		elmtOption.value = aryUnselected[k].value;
		
		objSelect.appendChild(elmtOption);
	}
  }
}

/* ########################################################################################
START				Functions to swap options between Select boxes
######################################################################################## */
function optionExists(toSearch, optionObj) {
  /* Checks to see if an option already exists in a select box. */
  var itExists = false;
  
  for (var i=0; i<$(toSearch).length; i++) {
    if ($(toSearch).options[i].value == optionObj.value) {
      itExists = true;
    }
  }
  return itExists;
}

function addSelectOption(fromSelectID, toSelectID, optionIndex) {
  /*var optionIndex = $(fromSelectID).selectedIndex;*/
  
  if (optionIndex != -1) {
    var newOption = document.createElement('option');
    
    newOption.value = $(fromSelectID).options[optionIndex].value;
    newOption.innerHTML = $(fromSelectID).options[optionIndex].innerHTML;
    
    var exists = optionExists(toSelectID, newOption);
    if (!exists) {
      $(toSelectID).appendChild(newOption);
    }
  }
}

function removeSelectOption(fromSelectID, optionIndex) {
  /*var optionIndex = $(fromSelectID).selectedIndex;*/
  
  if (optionIndex != -1) {
    $(fromSelectID).removeChild($(fromSelectID).options[optionIndex]);
  }
}

function swapOption(fromSelectID, toSelectID) {
  for(var i=0; i<$(fromSelectID).length; i++) {
    if($(fromSelectID).options[i].selected) {
      addSelectOption(fromSelectID, toSelectID, i);
      removeSelectOption(fromSelectID, i);
      i--;
    }
  }
}
/* ########################################################################################
END					Functions to swap options between Select boxes
######################################################################################## */
