var input_number = 2; 
var type;
var name;
var elem_id;
var target;
var checkflag = "false";

function addInput(type,name,elem_id,target) { 
	var n_div = document.createElement("div"); 
	var n_input = document.createElement("input");
	var rm_btn = document.createElement("input"); 

	n_input.setAttribute("type", type); 
	n_input.setAttribute("name", name); 
	n_input.setAttribute("id", elem_id + "_" + input_number);  
	rm_btn.setAttribute("onClick", "removeInput('" + target + input_number + "','"+target+"');"); 
	rm_btn.setAttribute("type", "button"); 
	rm_btn.setAttribute("value", "-");	
	n_div.setAttribute("id", target + input_number);
	
	n_div.appendChild(n_input);
	n_div.appendChild(rm_btn); 
	document.getElementById(target).appendChild(n_div); 
	input_number++; 
}

function removeInput(obj,target) { 
	var elem = document.getElementById(obj); 
	document.getElementById(target).removeChild(elem); 
}

function wopen(url, name, w, h)
{
  // Fudge factors for window decoration space.
  // In my tests these work well on all platforms & browsers.
  w += 32;
  h += 96;
  wleft = (screen.width - w) / 2;
  wtop = (screen.height - h) / 2;
  var win = window.open(url,
    name,
    'width=' + w + ', height=' + h + ', ' +
    'left=' + wleft + ', top=' + wtop + ', ' +
    'location=no, menubar=no, ' +
    'status=no, toolbar=no, scrollbars=1, resizable=yes');
  // Just in case width and height are ignored
  win.resizeTo(w, h);
  // Just in case left and top are ignored
  win.moveTo(wleft, wtop);
  win.focus();
}

function wSubmitNCloseNRefresh(form) {
	form.submit();
	window.close();
	setTimeout(opener.location.reload(true),2000);

}

function wcloseNreload() {
	window.close();
	
	if (window.opener && !window.opener.closed) {
		window.opener.location.reload();
	} 
}

function moveTo(where) {
    if (where == "right") {
        var target = oAll;
        var dest = oSelected;
    } else if (where == "left") {
        var target = oSelected;
        var dest = oAll;
    } else {
        return;
    }
    if (target.selectedIndex == -1) return;
    if (!target.options) target.options.length = 1;
    var firstItem = target.selectedIndex;
    var j = dest.options.length;
    for (var i=firstItem; i<target.options.length; i++) {
        if (target.options[i].selected) {
            dest.options.length = j+1;
            dest.options[j].value = target.options[i].value;
            dest.options[j].text = target.options[i].text;
            j++;
        }
    }
    for (var i=target.options.length-1; i>=firstItem; i--) {
        if (target.options[i].selected) target.options[i] = null;
    }
    cleanUp(dest);
}

function cleanUp(obj) {
    var cnt = 0;
    for (var i=0; i<obj.options.length; i++) {
        var chk = obj.options[i].value;
        for (var j=obj.options.length-1; j>i; j--) {
            if (obj.options[j].value == chk) { obj.options[j] = null; cnt++; }
        }
    }
    if (cnt) window.status = 'duplicated ' + cnt + '..';
    else window.status = window.defaultStatus;
}

function moveUp(obj) {
    if (obj.selectedIndex < 1 ) return;
    var tmpVal = obj.options[obj.selectedIndex].value;
    var tmpTxt = obj.options[obj.selectedIndex].text;
    var swapVal = obj.options[obj.selectedIndex-1].value;
    var swapTxt = obj.options[obj.selectedIndex-1].text;
    obj.options[obj.selectedIndex].value = swapVal;
    obj.options[obj.selectedIndex].text = swapTxt;
    obj.options[obj.selectedIndex-1].value = tmpVal;
    obj.options[obj.selectedIndex-1].text = tmpTxt;
    obj.selectedIndex = obj.selectedIndex -1;
}

function moveDown(obj) {
    if (obj.selectedIndex == -1 || obj.selectedIndex == obj.options.length-1) return;
    var tmpVal = obj.options[obj.selectedIndex].value;
    var tmpTxt = obj.options[obj.selectedIndex].text;
    var swapVal = obj.options[obj.selectedIndex+1].value;
    var swapTxt = obj.options[obj.selectedIndex+1].text;
    obj.options[obj.selectedIndex].value = swapVal;
    obj.options[obj.selectedIndex].text = swapTxt;
    obj.options[obj.selectedIndex+1].value = tmpVal;
    obj.options[obj.selectedIndex+1].text = tmpTxt;
    obj.selectedIndex = obj.selectedIndex +1;
}

function setValue() {
    //selected values = items on the right side
    var capsule = document.forms['items'].elements['vSelected'];
    var target = document.forms['items'].elements['test2'];
    //unselected values = items on the left side
    var ncapsule = document.forms['items'].elements['nSelected'];
    var ntarget = document.forms['items'].elements['test'];  
    
    capsule.value = "";
    for (var i=0; i<target.options.length; i++) {
        capsule.value+= target.options[i].value + "|";
    }

    ncapsule.value = "";
    for (var i=0; i<ntarget.options.length; i++) {
        ncapsule.value+= ntarget.options[i].value + "|";
    }
	//alert("Data loaded:\n" + capsule.value);
	//return false;
	//return capsule.value;
	//form.submit();
}

function addItem(value,text) {
    oAll.options.length++;
    oAll.options[oAll.options.length-1].text = text;
    oAll.options[oAll.options.length-1].value = value;
}

function clearAll(obj) {
    try {
        obj.options.length = 0;
    } catch(e) {
        // do nothing
    }
}

function loadData(url) {
	var office = ['a','b','c','d','e','f','g','h'];

	for (var x in office) addItem(office[x],office[x]);
}
function findPosX(obj)
{
 var curleft = 0;
 if (document.getElementById || document.all)
 {
  while (obj.offsetParent)
  {
   curleft += obj.offsetLeft;
   obj = obj.offsetParent;
  }
 }
 else if (document.layers)
  curleft += obj.x;
 return curleft;
}

function findPosY(obj)
{
 var curtop = 100;
 if (document.getElementById || document.all)
 {
  while (obj.offsetParent)
  {
   curtop += obj.offsetTop
   obj = obj.offsetParent;
  }
 }
 else if (document.layers)
 {
  curtop += obj.y;
 }
 return curtop;
}

function ifrmResize(obj)
{
  //find the height of the internal page
  var the_height=
    document.getElementById(obj).contentWindow.
      document.body.scrollHeight;

  //change the height of the iframe
  document.getElementById(obj).height=
      the_height;
}

function check(field) {
	if (checkflag == "false") {
		
		for (i = 0; i < field.length; i++) {
			field[i].checked = true;
		}
		
		checkflag = "true";
		return "Uncheck All"; 
		
	} else {
		
		for (i = 0; i < field.length; i++) {
			
			field[i].checked = false; 
		}
		
		checkflag = "false";
		return "Check All"; 
	}
}

function CheckAll(fmobj)
{
	for (var i=0;i<fmobj.elements.length;i++)
	{
		var e = fmobj.elements[i];
		if ((e.name != 'allbox') && (e.type=='checkbox') && (!e.disabled))
		{
			e.checked = fmobj.allbox.checked;
		}
	}
}

function CheckCheckAll(fmobj)
{	
	var TotalBoxes = 0;
	var TotalOn = 0;
	for (var i=0;i<fmobj.elements.length;i++)
	{
		var e = fmobj.elements[i];
		if ((e.name != 'allbox') && (e.type=='checkbox'))
		{
			TotalBoxes++;
			if (e.checked)
			{
				TotalOn++;
			}
		}
	}
	
	if (TotalBoxes==TotalOn)
	{
		fmobj.allbox.checked=true;
	}
	else
	{
		fmobj.allbox.checked=false;
	}
}

function checkAll2(ref,id,name,btnid)
{
	var chkAll = document.getElementById(id);
	var checks = document.getElementsByName(name);
	var removeButton = document.getElementById(btnid);
	var boxLength = checks.length;
	var allChecked = false;
	var totalChecked = 0;
	if ( ref == 1 )
	{
		if ( chkAll.checked == true )
		{
			for ( i=0; i < boxLength; i++ )
			checks[i].checked = true;
		}
		else
		{
			for ( i=0; i < boxLength; i++ )
			checks[i].checked = false;
		}
	}
	else
	{
		for ( i=0; i < boxLength; i++ )
		{
			if ( checks[i].checked == true )
			{
			allChecked = true;
			continue;
			}
			else
			{
			allChecked = false;
			break;
			}
		}
		if ( allChecked == true )
		chkAll.checked = true;
		else
		chkAll.checked = false;
	}
	for ( j=0; j < boxLength; j++ )
	{
		if ( checks[j].checked == true )
		totalChecked++;
	}
	removeButton.value = "Remove ["+totalChecked+"] Selected";
}

function checkAll3(ref,id,name,btnid)
{
	var chkAll = document.getElementById(id);
	var checks = document.getElementsByName(name);
	var removeButton = document.getElementById(btnid);
	var boxLength = checks.length;
	var allChecked = false;
	var totalChecked = 0;
	if ( ref == 1 )
	{
		if ( chkAll.checked == true )
		{
			for ( i=0; i < boxLength; i++ )
			checks[i].checked = true;
		}
		else
		{
			for ( i=0; i < boxLength; i++ )
			checks[i].checked = false;
		}
	}
	else
	{
		for ( i=0; i < boxLength; i++ )
		{
			if ( checks[i].checked == true )
			{
			allChecked = true;
			continue;
			}
			else
			{
			allChecked = false;
			break;
			}
		}
		if ( allChecked == true )
		chkAll.checked = true;
		else
		chkAll.checked = false;
	}
	for ( j=0; j < boxLength; j++ )
	{
		if ( checks[j].checked == true )
		totalChecked++;
	}
	//removeButton.value = "Remove ["+totalChecked+"] Selected";
}

function checkAllFields(ref)
{
	var chkAll = document.getElementById('checkAll');
	var checks = document.getElementsByName('delAnn[]');
	var removeButton = document.getElementById('removeChecked');
	var boxLength = checks.length;
	var allChecked = false;
	var totalChecked = 0;
	if ( ref == 1 )
	{
		if ( chkAll.checked == true )
		{
			for ( i=0; i < boxLength; i++ )
			checks[i].checked = true;
		}
		else
		{
			for ( i=0; i < boxLength; i++ )
			checks[i].checked = false;
		}
	}
	else
	{
		for ( i=0; i < boxLength; i++ )
		{
			if ( checks[i].checked == true )
			{
			allChecked = true;
			continue;
			}
			else
			{
			allChecked = false;
			break;
			}
		}
		if ( allChecked == true )
		chkAll.checked = true;
		else
		chkAll.checked = false;
	}
	for ( j=0; j < boxLength; j++ )
	{
		if ( checks[j].checked == true )
		totalChecked++;
	}
	removeButton.value = "Remove ["+totalChecked+"] Selected";
}

var slideInUse = new Array();

function Slide0(objId, options) {
	
	this.obj = document.getElementById(objId);
		
	if(this.obj.style.display != "none") {
		this.Slide(objId).up();
	} else {
		this.Slide(objId).down();
	}	
}

function Slide(objId, options) {
	this.obj = document.getElementById(objId);
	
	this.duration = 1;
	this.height = parseInt(this.obj.style.height);

	if(typeof options != 'undefined') { this.options = options; } else { this.options = {}; }
	if(this.options.duration) { this.duration = this.options.duration; }
		
	this.up = function() {
		this.curHeight = this.height;
		this.newHeight = '1';
		if(slideInUse[objId] != true) {
			var finishTime = this.slide();
			window.setTimeout("Slide('"+objId+"').finishup("+this.height+");",finishTime);
		}
	}
	
	this.down = function() {
		this.newHeight = this.height;
		this.curHeight = '1';
		if(slideInUse[objId] != true) {
			this.obj.style.height = '1px';
			this.obj.style.display = 'block';
			this.slide();
		}
	}
	
	this.slide = function() {
		slideInUse[objId] = true;
		var frames = 30 * duration; // Running at 30 fps

		var tIncrement = (duration*1000) / frames;
		tIncrement = Math.round(tIncrement);
		var sIncrement = (this.curHeight-this.newHeight) / frames;

		var frameSizes = new Array();
		for(var i=0; i < frames; i++) {
			if(i < frames/2) {
				frameSizes[i] = (sIncrement * (i/frames))*4;
			} else {
				frameSizes[i] = (sIncrement * (1-(i/frames)))*4;
			}
		}
		
		for(var i=0; i < frames; i++) {
			this.curHeight = this.curHeight - frameSizes[i];
			window.setTimeout("document.getElementById('"+objId+"').style.height='"+Math.round(this.curHeight)+"px';",tIncrement * i);
		}
		
		window.setTimeout("delete(slideInUse['"+objId+"']);",tIncrement * i);
		
		if(this.options.onComplete) {
			window.setTimeout(this.options.onComplete, tIncrement * (i-2));
		}
		
		return tIncrement * i;
	}
	
	this.finishup = function(height) {
		this.obj.style.display = 'none';
		this.obj.style.height = height + 'px';
	}
	
	return this;
}

var arrInput = new Array(0);
var arrInputValue = new Array(0);
var type;
var id;
var name;

function addInput(id,name,type) {
  arrInput.push(arrInput.length);
  arrInputValue.push("");
  display(id,name,type);
}

function display(id,name,type) {
  document.getElementById(id).innerHTML="";
  for (intI=0;intI<arrInput.length;intI++) {
    document.getElementById(id).innerHTML+=createInput(arrInput[intI], arrInputValue[intI],name,type);
  }
}

function saveValue(intId,strValue) {
  arrInputValue[intId]=strValue;
}  

function createInput(id,value,name,type) {
  return "<input type='" + type + "' id='test "+ id +"' name='" + name + "' onChange='javascript:saveValue("+ id +",this.value)' value='"+ value +"'><br>";
}

function deleteInput(id,name,type) {
  if (arrInput.length > 0) {
     arrInput.pop(); 
     arrInputValue.pop();
  }
  display(id,name,type); 
}

function ConfirmDeletion(myURL,objTxt) {
	var confirm = window.confirm("Do you really want to delete the " + objTxt + " ?");
	if (confirm) {
	     document.location.href = myURL;
	}
	else {
	     //do nothing
	}
}
	
// Multiple file selector by Stickman -- http://www.the-stickman.com 
// with thanks to: [for Safari fixes] Luis Torrefranca -- http://www.law.pitt.edu and Shawn Parker & John Pennypacker -- http://www.fuzzycoconut.com [for duplicate name bug] 'neal'
function MultiSelector( list_target, max ){this.list_target = list_target;this.count = 0;this.id = 0;if( max ){this.max = max;} else {this.max = -1;};this.addElement = function( element ){if( element.tagName == 'INPUT' && element.type == 'file' ){element.name = 'file_' + this.id++;element.multi_selector = this;element.onchange = function(){var new_element = document.createElement( 'input' );new_element.type = 'file';this.parentNode.insertBefore( new_element, this );this.multi_selector.addElement( new_element );this.multi_selector.addListRow( this );this.style.position = 'absolute';this.style.left = '-1000px';};if( this.max != -1 && this.count >= this.max ){element.disabled = true;};this.count++;this.current_element = element;} else {alert( 'Error: not a file input element' );};};this.addListRow = function( element ){var new_row = document.createElement( 'div' );var new_row_button = document.createElement( 'input' );new_row_button.type = 'button';new_row_button.value = 'Delete';new_row.element = element;new_row_button.onclick= function(){this.parentNode.element.parentNode.removeChild( this.parentNode.element );this.parentNode.parentNode.removeChild( this.parentNode );this.parentNode.element.multi_selector.count--;this.parentNode.element.multi_selector.current_element.disabled = false;return false;};new_row.innerHTML = element.value;new_row.appendChild( new_row_button );this.list_target.appendChild( new_row );};};