// JavaScript Document
var IE = document.all?true:false
var img = new Image();
var loading = false;
var filename = "";

// If NS -- that is, !IE -- then set up for mouse capture
//if (!IE) document.captureEvents(Event.MOUSEMOVE)

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var tempX = 0, tempY = 0;
var scrOfX = 0, scrOfY = 0;

// Main function to retrieve mouse x-y pos.s

function getScrollXY() {
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return true;
}

function getMouseXY(e) {
  tempX = 0;
  tempY = 0;
  srcOfY = 0;
  srcOfX = 0;
  getScrollXY();
  if (IE) { // grab the x-y pos.s if browser is IE
	tempX = event.clientX+scrOfX;
    tempY = event.clientY+scrOfY;
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX;
    tempY = e.pageY;
  }
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  return true;
}

var toScroll = 0;
var hasScrolled = 0;
var scrollInc = 50;
var scrolldelay = null;

function stopScroll() {
   	if (scrolldelay != null) {
		clearTimeout(scrolldelay);
		toScroll = 0;
		hasScrolled = 0;
		scrollInc = 50;
	}
}

function pageScroll() {
	if ((toScroll - hasScrolled) < scrollInc) {
		scrollInc = (toScroll - hasScrolled);
	}
   	window.scrollBy(0,scrollInc); // horizontal and vertical scroll increments
	hasScrolled = hasScrolled + scrollInc;
	if (hasScrolled >= toScroll) {
		stopScroll();
	} else {
   		scrolldelay = setTimeout('pageScroll()',2); // scrolls every 100 milliseconds
	}
}


function jumpScroll() {
   	window.scroll(0,150); // horizontal and vertical scroll targets
}

function RemoveMessage(num, must_scroll) {
  d = document;
  mylayer = findObj("message"+num);
  if (mylayer != null) {
	d.body.removeChild(mylayer);
    mylayer = null;
	if (must_scroll) {
	  toScroll = scrOfY;
	  pageScroll();
	} else {
	  toScroll = 0;
	  hasScrolled = 0;
	  scrollInc = 50;
	}
  }
} 
 
function ShowMessage(num,msg,must_center) {
  d = document;
  RemoveMessage(num, 0);
  if (msg.length != 0) {
	var mylayer = d.createElement("DIV");
    mylayer.id = "message"+num;
    mylayer.style.position = "absolute";
    mylayer.style.top = tempY.toString()+"px";
	if (must_center) {
		if (IE) {
			mylayer.style.left = ((document.documentElement.clientWidth/2)-100).toString()+"px";	
		} else {
			mylayer.style.left = ((d.width/2)-100).toString()+"px";	
		}
	} else {
    	mylayer.style.left = tempX.toString()+"px";
	}
    mylayer.style.color = "#000000";
    mylayer.style.background = "#FFFFFF";
    mylayer.style.zIndex = 10;
    mylayer.style.padding = "5px";
    mylayer.style.paddingRight = "5px"; 
    mylayer.innerHTML = '<div style="border:1px solid #000000;"><table border="0" cellspacing="5px"><tr><td width="100%" align="right"><a href="#" onclick="JavaScript:RemoveMessage(\'1\', 1)"; class="links">close[x]</a></td></tr><tr><td align="left" width="180px">'+msg+'</td></tr></table></div>';
    d.body.appendChild(mylayer);
  }
}

function findObj(n, d) { //v4.01
	var p,i,x;  
	if(!d) 
		d = document; 
	if ((p=n.indexOf("?")) > 0 && parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if (!(x=d[n]) && d.all) x = d.all[n]; 
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); 
	return x;
}

function checkLoad() {
	if (img.width == 0) {
		setTimeout("checkLoad()", 200);
	} else {
		var a = window.open('','','width='+(img.width+20)+',height='+(img.height+40)+',screenX=0,screenY=0');
		a.document.open("text/html");
		a.document.write("<head>");
		a.document.write("<link href=\"css/styles.css\" rel=\"stylesheet\" type=\"text/css\">");
		a.document.write("</head>");
		a.document.write("<html>");
		a.document.write("<body>");
		a.document.write("<div  style=\"overflow:auto; width=100%; height=100%;\">");
		a.document.write("<img src=\"images/stock/big/"+filename+"\" alt=\"No Image\">");
		a.document.write("<br /><a href=\"JavaScript: self.close();\">Close</a>");
		a.document.write("</div>");
		a.document.write("</body></html>");
		a.focus();
		loading = false;
	}	
}

function pageChange(mdowhat, maction, up_or_down, page_select, page, from_record, show_records, total_records) {
	var dowhat = findObj("dowhat");
	var hold_from_record = 0;
	var may_submit = true;
	if (up_or_down == -1) {
		if (page_select != null) {
			page.value = page_select.options[page_select.selectedIndex].value;
			from_record.value = (Number(page.value)*Number(show_records.value))-show_records.value;
			from_record.value = (from_record.value < 0 ? 1 : from_record.value);
		}
	} else if (up_or_down == 0) { //Previous Pages
		from_record.value = Number(from_record.value) - Number(show_records.value);
		page.value = Number(page.value) - 1;
		if (Number(from_record.value) < 0) {
			from_record.value = 0;
			may_submit = false;
		}
		if (Number(page.value) < 1) {
			page.value = 1;
		}
	} else if (up_or_down == 1) { //Next Pages
		hold_from_record = Number(from_record.value);
		from_record.value = Number(from_record.value) + Number(show_records.value);
		page.value = Number(page.value) + 1;
		if (Number(from_record.value) >= Number(total_records.value)) {
			from_record.value = hold_from_record;
			page.value = Number(page.value) - 1;
			may_submit = false;
		}
	}
	if (may_submit) {
		dowhat.value = mdowhat;
		document.frm.action = maction;
		document.frm.submit();
	}
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}

function showItemLoading() {
	var loading_layer = findObj("loading");
	if (loading_layer) {
		loading_layer.style.visibility = "visible";
	}
}

function killReturnKey(evt) {
	if (evt.keyCode == 13) {
		event.returnValue=false;
		event.cancel = true;
		return false;
	}
}

function mySubmit(mdowhat, maction) {
	var dowhat = findObj("dowhat");
	var page = findObj("page");
	var from_record = findObj("from_record");
	if (page) {
		page.value = 0;
	}
	if (from_record) {
		from_record.value = 0;
	}
	dowhat.value = mdowhat;
	document.frm.action = maction;
	document.frm.submit();
}

var IndexArray = new Array();

function RemoveRec(itemindex) {
	var itm = findObj("itemindex");
	var index_array_length = IndexArray.length;
	for (i=0; i <= index_array_length; i++) {
		if (IndexArray[i] == itemindex) {
			IndexArray.splice(i, 1);
		}
	}
	itm.value = IndexArray;
}

function AddRec(itemindex) {
	var itm = findObj("itemindex");
	for (i=0; i<IndexArray.length; i++) {
		if (IndexArray[i] == itemindex) {
			return "";
		}
	}
	IndexArray.push(itemindex);
	itm.value = IndexArray;
}

function onSelectCheckBoxChange(obj, cnt) {
    if (obj.checked) {
        AddRec(cnt);
    } else {
        RemoveRec(cnt);
    }
}

function selectAll(obj, cnt) {
    for (i = 1; i <= cnt; i++) {
        select_checkbox = findObj("select_"+i);
        if (select_checkbox != null) {
            select_checkbox.checked = obj.checked;
        }
    }
    updateItemIndex(cnt);
}

function updateItemIndex(cnt) {
    var itemindex = findObj("itemindex");
    var index = "";
    var add_comma = false;
    if (itemindex != null) {
        itemindex.value = "";
        for (i = 1; i <= cnt; i++) {
            select_checkbox = findObj("select_"+i);
            if (select_checkbox != null) {
                if (select_checkbox.checked) {
                    index += (add_comma ? "," : "")+i;
                    add_comma = true;
                }
            }
        }
    }
    itemindex.value = index;
}

/*---------------Validation------------------*/

function validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=validateForm.arguments;
	for (i=0; i<(args.length-2); i+=3) { 
		test=args[i+2]; 
		val=findObj(args[i]);
		if (val) { 
			nm=val.name; 
			if (val.alt) {
				msg=val.alt;
			} else {
				msg="";
			}
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) { 
					p=val.indexOf('@');
					if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
				} else if (test!='R') {	
					num = parseFloat(val);
					if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
					if (test.indexOf('inRange') != -1) { 
						p=test.indexOf(':');
						min=test.substring(8,p); 
						max=test.substring(p+1);
						if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
					} 
					
				} 
			} else if (test.charAt(0) == 'R') errors += (msg != '' ? '- '+msg+'\n' :'- '+nm+' is required.\n'); 
		}
	} 
	if (errors) {
		alert('The following error(s) occurred:\n'+errors);
	} 
	return (errors == '');
}

/*------------------END----------------------*/
/*-----------------AJAX----------------------*/

function ajaxObject(url, layer, callbackFunction) {
  var that=this;      
  this.updating = false;
  this.abort = function() {
    if (that.updating) {
      that.updating=false;
      that.AJAX.abort();
      that.AJAX=null;
    }
  }
  this.update = function(passData,postMethod) { 
    if (that.updating) { return false; }
    that.AJAX = null;                          
    if (window.XMLHttpRequest) {              
      that.AJAX=new XMLHttpRequest();              
    } else {                                  
      that.AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }                                             
    if (that.AJAX==null) {                             
      return false;                               
    } else {
      that.AJAX.onreadystatechange = function() {  
        if (that.AJAX.readyState==4) {             
          that.updating=false;
          that.callback(that.AJAX.responseText,that.AJAX.status,that.AJAX.responseXML, layerCall);        
          that.AJAX=null;                                         
        }                                                      
      }                                                        
      that.updating = new Date();                              
      if (/post/i.test(postMethod)) {
        var uri=urlCall+'?'+that.updating.getTime();
        that.AJAX.open("POST", uri, true);
        that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        that.AJAX.setRequestHeader("Content-Length", passData.length);
        that.AJAX.send(passData);
      } else {
        var uri=urlCall+'?'+passData+'&timestamp='+(that.updating.getTime());
        that.AJAX.open("GET", uri, true);                             
        that.AJAX.send(null);                                         
      }              
      return true;                                             
    }                                                                           
  }
  var urlCall = url; 
  var layerCall = layer;       
  this.callback = callbackFunction || function () { };
}

function updateLayer(responseText, status, responseXML, mlayer) {
	var layer = document.all ? document.all(mlayer) : document.getElementById(mlayer);
	if (layer) {
		layer.innerHTML = responseText;
	}
}

function setLoadingImage(mlayer) {
	var layer = document.all? document.all(mlayer): document.getElementById(mlayer);
	if (layer) {
		layer.innerHTML = "<img src=\"images/ajax-loader.gif\" />";
	}
}

/*------------------------------------------------*/
