//Emagine Internet Marketing Programmable Retail Engine (EMPIRE) 3.2 
//Client-Side Javascripts

//verify for netscape/mozilla
var isNS4 = (navigator.appName=="Netscape")?1:0;
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

//Left and Right string manipulation functions
function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

//AJaX Control Script
function open_url(url, target) {
	var day = new Date(); 
	var id = day.getTime(); 
	var randomnumber = String(day+id);
	var rightthree=Right(url,3);
	if (rightthree=="asp"){
		url += "?rnd=" + escape(randomnumber);
	}else{
		url += "&rnd=" + escape(randomnumber);
	}

 	if ( ! document.getElementById) {
  		return false;
 	}

 	if (window.ActiveXObject) {
  		link = new ActiveXObject("Microsoft.XMLHTTP");
 	} else if (window.XMLHttpRequest) {
  		link = new XMLHttpRequest();
 	}

 	if (link == undefined) {
  		return false;
 	}
 	link.onreadystatechange = function() { response(url, target); }
 	link.open("GET", url, true);
 	link.send(null);
}
function response(url, target) {
 	if (link.readyState == 4) {
		var data = link.responseText.split("||JavaScriptCode||");
	 	document.getElementById(target).innerHTML = data[0];
		eval(data[1]);
	} 
}

//Text Append to InnerHTML Element
function append_text(target, vtext) {
 	if ( ! document.getElementById) {
  		return false;
 	}
	document.getElementById(target).innerHTML += vtext;
}	
//Text Replace InnerHTML Element
function replace_text(target, vtext) {
 	if ( ! document.getElementById) {
  		return false;
 	}
	document.getElementById(target).innerHTML = vtext;
}	
//Function to Place Focus on form Element
function putFocus(formInst, elementInst) {
	if (document.forms.length > 0) {
	document.forms[formInst].elements[elementInst].focus();
	}
}
//Function to Create New Browser Windows
function createWindow(cUrl,cName,cFeatures) {
	var xWin = window.open(cUrl,cName,cFeatures)
}
//Macromedia JumpMenu Script
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}



function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode; 
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}

//Various commonly used Macromedia Dreamweaver Scripts
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_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=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function NumO(object){
	if(!isNS4){
		if(event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;
	}else{
		if(event.which < 45 || event.which > 57) returnfalse;
	}
}


Swap.restartDelay = 500; // delay onmouseout before call to rotate
Swap.col = []; 

// arguments: image name, rotation speed, path to images (optional), 
// target, i.e. name of window to direct url's to onclick (optional)
function Swap(name, speed, path, tgt) {
    this.name = name; this.speed = speed || 4500; // default speed of rotation
    this.path = path || ""; this.tgt = tgt;
    this.ctr = 0; this.timer = 0; this.imgs = []; this.actions = [];
    this.index = Swap.col.length; Swap.col[this.index] = this;
    this.animString = "Swap.col[" + this.index + "]";
}

Swap.prototype.addImages = function() { // preloads images
    var img;
    for (var i=0; arguments[i]; i++) {
        img = new Image();
        img.src = this.path + arguments[i];
        this.imgs[this.imgs.length] = img;
    }
}

Swap.prototype.addActions = function() {
    var len = arguments.length; // in case an argument's value is null
    for (var i=0; i < len; i++) 
        this.actions[this.actions.length] = arguments[i]; 
}

Swap.prototype.rotate = function() {
    clearTimeout(this.timer); this.timer = null;
    if (this.ctr < this.imgs.length-1) this.ctr++;
    else this.ctr = 0;
    var imgObj = document.images[this.name];    
    if (imgObj) {
        imgObj.src = this.imgs[this.ctr].src;
        this.timer = setTimeout( this.animString + ".rotate()", this.speed);
    }
}

// Start rotation for all instances 
Swap.start = function() {
    var len = Swap.col.length, obj;
    for (var i=0; i<len; i++) {
        obj = Swap.col[i];
        if (obj && obj.name ) // check for empty instance created by random.js
            obj.timer = setTimeout( obj.animString + ".rotate()", obj.speed);
    }
}

// called onclick of images
Swap.doClick = function(n) {
    var obj = Swap.col[n]; 
	if ( !document.images || !obj ) return true;
    if ( obj.actions && obj.actions[obj.ctr] ) {
        if ( typeof obj.actions[obj.ctr] == "string" ) { // url
            if ( obj.tgt ) { // open in separate window
                // add features here if you want, i.e., chrome, size, position, ...
                var win = window.open(obj.actions[obj.ctr], obj.tgt);
                if ( win && !win.closed ) win.focus();
            } else {
                window.location = obj.actions[obj.ctr];
            }
        } else { // function pointer 
            obj.actions[obj.ctr](); // execute function
        }
    }
    return false;
}

// for stopping/starting onmouseover/out
Swap.pause = function(n) {	
    Swap.clearTimers(n);
}

Swap.clearTimers = function(n) {
    var obj = Swap.col[n]; 
    if ( obj ) {
        clearTimeout( obj.timer ); obj.timer = null;
    }
}

Swap.resume = function(n) {
    Swap.clearTimers(n);
    var obj = Swap.col[n]; 
    if ( obj ) {
        obj.timer = setTimeout( obj.animString + ".rotate()", Swap.restartDelay );
    }
}



