//============================================================
// This file contains functions that are generic enough to
// be used throughout 
//============================================================
//============================================================

// Pathing
var SUB_BODY = "/sub_body/";

var GENERAL = "/general/";
var PROCESSOR_ADD = "/processors/add/";
var PROCESSOR_REQ = "/processors/request/";
var PROCESSOR_DELETE = "/processors/delete/";
var PROCESSOR_MODIFY = "/processors/modify/";


////////////////////////////////////////////////////////////////
// Open Modal Window - This routine opens a modal window
// for both Netscape and MSIE - this is used specifically to
// get the Email Address and Source to submit a change request.
//
function openModalWindow() {
	if( window.showModalDialog) {
		var x = new Array();
		x = window.showModalDialog("/general/request_info.php","","resizable=yes,scrollbars=yes,dialogWidth:450px;dialogHeight:475px");
		if( document.frmForm != undefined ) {
			document.frmForm.EMAILADDR.value = x[0];	
			document.frmForm.SOURCE.value = x[1];	
 			document.frmForm.NOTES.value = x[2];
		} else {
			document.frmBotOptions.EMAILADDR.value = x[0];	
			document.frmBotOptions.SOURCE.value = x[1];	
 			document.frmBotOptions.NOTES.value = x[2];
		}
	
	} else {
		window.open("/general/request_info.php","MWIN","width=450,height=475,modal=yes");
		window.confirm("!!ATTENTION YOU ARE USING A NON IE BROWSER!! \n " +
						"     YOU MUST FOLLOW THESE DIRECTIONS \n" +
						"1. AFTER you complete the request information form please press ok \n" + 
						"      You must press submit/cancel before pressing ok ");
	}
}

////////////////////////////////////////////////////////////////
function openModalWindowReview(tsAction) {
//var ns6=document.getElementById&&!document.all;
		window.open("/general/reviewer_note.html?ACTION=" + tsAction,"MWIN","resizable=yes,scrollbars=yes,width=450,height=350");
		/*
	if(window.showModalDialog)
	{
		var x = '';
		x = window.showModalDialog("/general/reviewer_note.html?ACTION=" + tsAction,"","dialogWidth:450px;dialogHeight:350px");
		
		if( document.frmForm != undefined ) {
 			document.frmForm.NOTES.value = x;
		} else {
 			document.frmBotOptions.NOTES.value = x;
		}
	}
	else{
		window.open("/general/reviewer_note.html?ACTION=" + tsAction,"MWIN","width=450,height=350,modal=yes");
		window.confirm("!!ATTENTION YOU ARE USING A NON IE BROWSER!! \n " +
						"     YOU MUST FOLLOW THESE DIRECTIONS \n" +
						"1. AFTER you complete the request information form please press ok \n" + 
						"      You must press submit/cancel before pressing ok ");
	}	
*/
	}

////////////////////////////////////////////////////////////////
function openModalWindowAdmin(tsAction) {
	window.open("/general/admin_note.html?ACTION=" + tsAction,"MWIN","resizable=yes,scrollbars=yes,width=450,height=350,modal=yes");
}

////////////////////////////////////////////////////////////////
function WriteCookie(tsCookieName, tsCookieValue) {
	var lsCookie;
	var ldNextYear = new Date();

	ldNextYear.setFullYear(ldNextYear.getFullYear() + 1);

	lsCookie = tsCookieName + "=" + tsCookieValue + ";";
	lsCookie += "expires=" + ldNextYear.toGMTString() + ";";
	lsCookie += "path=/;";
	document.cookie = lsCookie;
}

////////////////////////////////////////////////////////////////
function GetCookie(tsCookieName) {
	tsCookieName = tsCookieName + "=";
	lsValue = "";
	lsAllCookies = document.cookie;
	laAllCookies = lsAllCookies.split(";");

	for (i=0; i < laAllCookies.length; i++) {
		idx = laAllCookies[i].indexOf(tsCookieName);
		if (idx != -1) {
			lsValue = laAllCookies[i].substr(idx + tsCookieName.length);
		}
	}
	return lsValue;
}

////////////////////////////////////////////////////////////////
function EraseCookie(CookieName) {
	var lsCookie;
	var ldNextYear = new Date();

	ldNextYear.setFullYear(ldNextYear.getFullYear() - 2);

	lsCookie = CookieName + "=;" ;
	lsCookie += "expires=" + ldNextYear.toGMTString() + ";" ;
	lsCookie += "path=/;"
	document.cookie = lsCookie;
}

////////////////////////////////////////////////////////////////
function ParseQueryString(tsParm) {
	lsURL = document.URL;
	idx = lsURL.indexOf("?");

	if (idx == -1) {return ""};
	
	lsQuery = lsURL.substr(idx + 1);
	laQuery	= lsQuery.split("&");
	lsValue	= "";
	
	for (i=0; i < laQuery.length; i++) {
		laParm = laQuery[i].split("=");

		if (laParm[0] == tsParm) {
			lsValue = laParm[1];
			break;
		}
	}
	return lsValue;
}

////////////////////////////////////////////////////////////////
function GoPage(tsPage, tsCalledFrom) {
	// Parse the query string and pass the values along.
	lsCalledFrom	= ParseQueryString("CALLED_FROM");
//	lsSort			= ParseQueryString("SORTQUERY");
	lsColumns		= ParseQueryString("COLUMNS");

	lsURL = tsPage +
		"?CALLED_FROM="	+ lsCalledFrom +
		'&COLUMNS='		+ lsColumns;

//				'&SORTQUERY='	+ lsSort + 

	if (lsCalledFrom == "NOOP" || tsCalledFrom == "NOOP") {
		document.location.replace(lsURL);
	} else {
		window.opener.parent.frames[1].location.replace(lsURL);
		window.close();
	}
}

////////////////////////////////////////////////////////////////
function newgetFilterCookie(filtername) {
        var sAllCookies = document.cookie;
        var sFilterName = filtername + "=";
        var idx = sAllCookies.indexOf(sFilterName);
        var sFilter = "NOTSET";

        if (idx != -1) {
                var iNameLen = sFilterName.length;
                var iStart = idx + iNameLen;
                var iEnd = sAllCookies.indexOf(";", iStart);

                if (iEnd == -1) {iEnd = sAllCookies.length;}
                var sFilter = sAllCookies.substring(iStart, iEnd);
                sFilter = unescape(sFilter);
        }

        return sFilter;
}

////////////////////////////////////////////////////////////////
//
// Get cookie parameters base upon specified parameter
//
function getCookieParam(param) {
var allcookies = unescape(document.cookie);
var pos = allcookies.indexOf("VCDB_LOGIN");

        if( pos != -1 ) {
                var start = pos + 10;
                var end =  allcookies.indexOf(";",start);

                if( end == -1 )  end = allcookies.length;

                var value = allcookies.substring(start,end);
                value = unescape(value);


                var pairs = value.split('&');
                var p = new Array();

                for (var i=0; i<pairs.length; i++) {
                        nameVal = pairs[i].split('=');
                        p[ nameVal[0] ] = nameVal[1].replace(/\+/g," ");
			if( param == "USERNAME" || param == "COMPANY" ) {	
                        	p[ nameVal[0] ] = nameVal[1].replace(/\[amp\]/,"\&");
			}
                }


                return( p[ param ].replace(/\+/g," "));
        }

        return -1;

}

////////////////////////////////////////////////////////////////
// Check usertype, if doalert parameter does not exist,
// popup alert
//
function checkUserType(doalert) {
var allcookies = unescape(document.cookie);
var pos = allcookies.indexOf("VCDB_LOGIN");

        if( pos != -1 ) {
                var start = pos + 10;
                var end =  allcookies.indexOf(";",start);

                if( end == -1 )  end = allcookies.length;

                var value = allcookies.substring(start,end);
                value = unescape(value);


                var pairs = value.split('&');
                var p = new Array();

                for (var i=0; i<pairs.length; i++) {
                        nameVal = pairs[i].split('=');
                        p[ nameVal[0] ] = nameVal[1].replace(/\+/," ");
                }

                if( ( (p["USERTYPE"] == "Subscriber") || ( p["USERTYPE"] == "Reviewer" ))  && (! doalert) ) {
                        alert("You request has been submitted ...");
                }



                if( p["USERTYPE"] == "Researcher" || p["USERTYPE"] == "Admin") {
                        return( "researcher" );
                }
        }

        return("NOCOOKIE");
}

////////////////////////////////////////////////////////////////
function writeFilterCookie(filtername,filterStr) {
var cval;
var nextyear = new Date();

        nextyear.setFullYear(nextyear.getFullYear() + 1);

	cval = filtername  + "="  + "FSTR=" + filterStr;
        cval += ";expires=" + nextyear.toGMTString() + ";" ;
	cval += "path=/;"
        document.cookie = cval;
}

////////////////////////////////////////////////////////////////
function newGetFilterCookie(filtername) {
	var sAllCookies = document.cookie;
	var sFilterName = filtername + "=";
	var idx = sAllCookies.indexOf(sFilterName);
	var sFilter = "NOTSET";

	if (idx != -1) {
		var iNameLen = sFilterName.length;
		var iStart = idx + iNameLen;
		var iEnd = sAllCookies.indexOf(";", iStart);

		if (iEnd == -1) {iEnd = sAllCookies.length;}
		var sFilter = sAllCookies.substring(iStart, iEnd);
		sFilter = unescape(sFilter);
	}

	return sFilter;
}

////////////////////////////////////////////////////////////////
function getFilterCookie(filtername) {
var allcookies = document.cookie;
var f = filtername + "=";
var pos = allcookies.indexOf(f);
var flen = f.length;

        if( pos != -1 ) {
                var start = pos + flen;
                var end =  allcookies.indexOf(";",start);

                if( end == -1 )  end = allcookies.length;

                var value = allcookies.substring(start,end);
                value = unescape(value);

		if (filtername == "VCDB_LOGIN") {
                var pairs = value.split('&');
                var p = new Array();

                for (var i=0; i<pairs.length; i++) {
                        nameVal = pairs[i].split('=');
                        //p[ nameVal[0] ] = nameVal[1];
			if( nameVal[0] == "FSTR") { return( nameVal[1] ); }
                }
			} else {
                        nameVal = value.split('=');
			if( nameVal[0] == "FSTR") { return( nameVal[1] ); }
			}

        }

        return("NOTSET");

}

////////////////////////////////////////////////////////////////
function isValidNumeric( testval ) {
	
if(isNaN( testval - 0) )  { return false; }
return true;
}

////////////////////////////////////////////////////////////////
// isInteger - determine whether the txt paramter passed is
// an integer. Return true if it is, False if not
//
function isInteger(txt,msg) {
var int_format = /^[ ]*?\d+[ ]*$/;

	if( txt == "" ) return false;

	if ( ! int_format.test(txt) ) {
		alert(msg); 
		return false;
	}

	return true
}

////////////////////////////////////////////////////////////////
function stripSpaces( txt ) {
var str;
	str = txt.replace(/^\s+/,"");
        str = str.replace(/\s+$/,"");
	return str;
}

////////////////////////////////////////////////////////////////
//
// popUp - popUp a new browser window
//
function popUp(url, win_name, features) {

	idxHt = features.toLowerCase().indexOf("height");
	if (idxHt > -1) {
		idxStart = features.indexOf("=", idxHt);
		idxEnd = features.indexOf(",", idxStart);
		if (idxEnd == -1) {idxEnd = features.length;}
		liHeight = features.substring(idxStart + 1, idxEnd);
	} else {
		liHeight = 200;
	}

	idxWd = features.toLowerCase().indexOf("width");
	if (idxWd > -1) {
		idxStart = features.indexOf("=", idxWd);
		idxEnd = features.indexOf(",", idxStart);
		if (idxEnd == -1) {idxEnd = features.length;}
		liWidth = features.substring(idxStart + 1, idxEnd);
	} else {
		liWidth = 400;
	}

	liScreenY = ((screen.height - liHeight) / 2);
	liScreenX = ((screen.width - liWidth) / 2);

	var feature_add = features + ",screenX=" + liScreenX + ",screenY=" + liScreenY;
	window.open(url,win_name,feature_add);
}

////////////////////////////////////////////////////////////////
// 
// Returns an "associative array" of the query string passed to
// the form
//
function getParams() {
var idx = document.URL.indexOf('?');
var pm = new Array();
var nameVal = new Array();

	pm["SORTQUERY"] = "";
	pm["FILTERSTR"] = "";
	pm["COLUMNS"] = "";
	pm["MESSAGE"] = "";
	pm["SM2TRELOAD"] = "";
	pm["ERRMSG"] = "";
	pm["SORTSTRING"] = "";
	pm["FILTERSTRING"] = "";

	if (idx != -1) {
        	var pairs = document.URL.substring(idx+1, document.URL.length).split('&');
        	for (var i=0; i<pairs.length; i++) {
        		nameVal = pairs[i].split('=');
        		pm[nameVal[0]] = nameVal[1];
   		}
	}

	return pm;
}

////////////////////////////////////////////////////////////////
/*function menuOn(opt) {

var ns6=document.getElementById&&!document.all;

	if( ns6 ) {
		if( window.opener.parent.frames[0].document.getElementById(opt) ) {
			window.opener.parent.frames[0].document.getElementById(opt).style.backgroundColor = "black";
		} else if( window.opener.parent.parent.frames[0].document.getElementById(opt)) {
			window.opener.parent.parent.frames[0].document.getElementById(opt).style.backgroundColor = "black";
		} else if(window.opener.parent.window.opener.parent.window.parent.frames[0].document.getElementById(opt)) {
			window.opener.parent.window.opener.parent.window.parent.frames[0].document.getElementById(opt).style.backgroundColor = "black";
		} else {
			window.opener.parent.window.opener.parent.window.opener.parent.window.parent.frames[0].document.getElementById(opt).style.backgroundColor = "black";
		}
	} else {
		if( window.opener.parent.frames[0].document.all[opt] ) {
			window.opener.parent.frames[0].document.all[opt].style.background = "black";
		} else if( window.opener.parent.parent.frames[0].document.all[opt]) {
			window.opener.parent.parent.frames[0].document.all[opt].style.background = "black";
		} else if(window.opener.parent.window.opener.parent.window.parent.frames[0].document.all[opt]) {
			window.opener.parent.window.opener.parent.window.parent.frames[0].document.all[opt].style.background = "black";
		} else {
			window.opener.parent.window.opener.parent.window.opener.parent.window.parent.frames[0].document.all[opt].style.background = "black";
		}
	}
}

////////////////////////////////////////////////////////////////
function menuOff(opt) {

var ns6=document.getElementById&&!document.all;

	if( ns6 ) {
		if( window.opener.parent.frames[0].document.getElementById(opt) ) {
		window.opener.parent.frames[0].document.getElementById(opt).style.backgroundColor = "#698484";
		} else if( window.opener.parent.parent.frames[0].document.getElementById(opt)) {
			window.opener.parent.parent.frames[0].document.getElementById(opt).style.backgroundColor = "#698484";
		} else if(window.opener.parent.window.opener.parent.window.parent.frames[0].document.getElementById(opt) ) {
			window.opener.parent.window.opener.parent.window.parent.frames[0].document.getElementById(opt).style.backgroundColor = "#698484";
		} else {
			window.opener.parent.window.opener.parent.window.opener.parent.window.parent.frames[0].document.getElementById(opt).style.backgroundColor = "#698484";
		}
	} else {
		if( window.opener.parent.frames[0].document.all[opt] ) {
			window.opener.parent.frames[0].document.all[opt].style.backgroundColor = "#698484";
		} else if( window.opener.parent.parent.frames[0].document.all[opt]) {
			window.opener.parent.parent.frames[0].document.all[opt].style.backgroundColor = "#698484";
		} else if(window.opener.parent.window.opener.parent.window.parent.frames[0].document.all[opt]) {
			window.opener.parent.window.opener.parent.window.parent.frames[0].document.all[opt].style.backgroundColor = "#698484";
		} else {
			window.opener.parent.window.opener.parent.window.opener.parent.window.parent.frames[0].document.all[opt].style.backgroundColor = "#698484";
		}
	}
}*/

////////////////////////////////////////////////////////////////
//MAT, 01/22/04. Temporary until PCDB is approved.
function getVCDB(url) {
	if (url == undefined) {return 0}
	
	var idx = url.indexOf('?');
	if (idx == -1) {return 0}

	var querystr = url.substring(idx+1, url.length);

	idx = querystr.indexOf("vcdb=");
	if (idx == -1) {return 0}

	return querystr.substring(idx+5,idx+6);
}

//////////////////////////////////////////////////////////////////////
// MAT, 09/15/04. Clear all textboxes and reset selectedIndex to zero
// for all select objects. Called from engine_include.js and transmission_include.js
function ClearForm(toFrm) {
	for (i=0; i < toFrm.elements.length; i++) {
		loObj = toFrm.elements[i];
		if (loObj.type == "select-one") {
			loObj.selectedIndex = 0;
		}
		if (loObj.type == "text") {
			loObj.value = "";
		}
	}
}

///////////////////////////////////////////////////////////////////
function Guest(){
	cookieValue = "%26USERNAME%3DGUEST%26USERTYPE%3DGuest%26USERID%3D8%26COMPANY%3DGUEST%26COMPANYID%3D3%26REVIEWERTYPE%3D";
	WriteCookie("VCDB_LOGIN", cookieValue);
	document.location.replace("/sui/main.php");
}
	
///////////////////////////////////////////////////////////////////	
function Replace(link){
	parent.location.replace(link);
}	

function GuestLogin() { 

	document.getElementById("username").value = 'guest';
	document.getElementById("psswd").value = 'aaia';
	document.getElementById("login").value = 'Login';
	document.getElementById("frmLogin").submit();
}

function doPost(url) { 

//	window.opener.document.frmForm.EMAILADDR.value = document.frmMod.addr.value;
//	window.opener.document.frmForm.SOURCE.value = document.frmMod.src.value;
//	window.opener.document.frmForm.NOTES.value = document.frmMod.notes.value;

	window.opener.document.forms[0].EMAILADDR.value = document.getElementById('addr').value;
	window.opener.document.forms[0].SOURCE.value = document.getElementById('src').value;
	window.opener.document.forms[0].NOTES.value = document.getElementById('notes').value;

	window.opener.document.forms[0].action = url;
	window.opener.document.forms[0].submit();
}

function callProcessor(type, width, height) { 
	window.open("/general/request_info.php?section="+type,"MWIN","resizable=yes,scrollbars=yes,width="+width+",height="+height);
}


/*
function scrollFrames() { 
	var ns6=document.getElementById&&!document.all;
	var xScrPos,yScrPos;

	if( ns6 )  {
		xScrPos = window.pageXOffset;
		yScrPos = window.pageYOffset;
	} else {
		xScrPos = document.body.scrollLeft;
		yScrPos = document.body.scrollTop;
	}

//	alert(xScrPos+' '+yScrPos);
//	alert(document.body.name);
	window.parent.frames[1].scrollTo(xScrPos,yScrPos);

}
*/

/*
function getWindowXY() { 
	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 [ scrOfX, scrOfY ]
}

//function scrollFrames(frameId, currentX, currentY) {
*/
//function scrollFrames(frameId, previousXY) {
function scrollFrames(frameId) {
	var changeX;
	var changeY;
	/*
	var previousX = previousXY[0];
	var previousY = previousXY[1];
	var currentXY = getWindowXY();
	var currentX = currentXY[0];
	var currentY = currentXY[1];
*/
//	var controlElement = window.parent.document.frames[frameId]
//		alert("frameID " + frameId + " " + controlElement.pageXOffset);


	if( typeof( window.pageYOffset ) == 'number' ) {
	//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
//	alert("frame " + frameId + " scrOfX " + scrOfX + " scrOfY " + scrOfY);
	} 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;
	}

	
	/*
	if(previousX > currentX) {
		// moving left
		changeX = previousX - currentX;
	} else if (previousX < currentX) { 
		// moving right
		changeX = currentX - previousX;
	}

	if(previousY > currentY) {
		// moving down
		changeY = previousY - currentY;
	} else if (previousY < currentY) { 
		// moving up
		changeY = currentY - previousY;
	}
*/
	window.parent.frames[frameId].scrollTo(scrOfX,scrOfY);
	/*
	var frameCount = window.parent.frames.length;

	for (var i=0; i < frameCount; i++) {
		//window.parent.frames[i].scrollBy(45,0);
	}
	*/
}


