function MM_findObj(n, d) { //v3.0
  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); 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 MM_openBrWindow(theURL,winName,features) { //v2.0
	window.open(theURL,winName,features);
}

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 fn_loadLogin(){
	if (parent.window.location != window.location){
		parent.window.location = window.location;
		parent.Shadowbox.close();
	}
}

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);
    }
}

// FUNCTION TO PROVIDE PROGRESS BAR DURING UPLOAD
function uploadForm(formName) {
	theFeats = 'height=120,width=500,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no';
	theUniqueID = (new Date()).getTime() % 1000000000;
	window.open('../scripts/progressbar.asp?ID=' + theUniqueID, theUniqueID, theFeats);
	document.getElementById('unique_upload_id').value = theUniqueID;
	document.getElementById(formName).submit();
}

// FUNCTION TO SHOW 'OTHER' BOX ON FORM
function fn_showOther(element,width){
	var theElement = document.getElementById(element).value;

	if (theElement == 'other'){
		document.getElementById(element).style.width='100px';
		document.getElementById(element+'other').style.display="inline";
	}else{
		document.getElementById(element).style.width=width+'px';
		document.getElementById(element+'other').style.display="none";
	}
}

// FUNCTION TO CHECK THE LENGTH OF THE FIELD
function fn_checkLength(element,maxlength,message){
	var theMessage = document.getElementById(message);
	if (element.value.length < parseInt(maxlength) + parseInt(1)){
		theMessage.innerHTML = element.value.length + "/" + maxlength;
	}
	else{
		element.value = element.value.substring(0,maxlength);
		theMessage.innerHTML = "<b><font color=red>Maximum number of characters exceeded!</font></b>"
	}
}

// FUNCTION TO SHOW / HIDE NEW ISO PROVIDER PART OF FORM
function fn_showProvider(){
	var theElement = document.getElementById('continue_cert').value;
	if (theElement == 'Yes'){
		document.getElementById('new_provider').style.display="none";
	}else if (theElement == 'No'){
		document.getElementById('new_provider').style.display="inline";
	}
}

// FUNCTION TO TOGGLE PRODUCT GROUPS
var ie7 = false;
function fn_ToggleProductGroups(element,action){
	var theElement = document.getElementById(element).value;
	if (action == '1' && ie7 == false){
		document.getElementById('pdr' + theElement).style.display="table-row"; // block in IE7
	} else if (action == '1'){
 		document.getElementById('pdr' + theElement).style.display="block"; // Block in IE7
	} else if (action == '2'){
		document.getElementById('pdr' + theElement).style.display="none";
	}
}

// FUNCTION TO ADD / REMOVE PRODUCT ROW
function fn_ProductRow(ProductType,action){
	var CurrentRows = document.getElementById(ProductType + 'Rows').value;
	if (action == '1'){
		NewRows = (CurrentRows * 1) + 1;
		document.getElementById(ProductType + 'Rows').value = NewRows;
		if (ie7 == false){
			document.getElementById('pd' + ProductType + NewRows).style.display="table-row"; 
		} else {
			document.getElementById('pd' + ProductType + NewRows).style.display="block";
		}
		if (NewRows == 10){
			document.getElementById('ar' + ProductType).style.display="none";	
		}
	}
}

// FUNCTION TO MANAGE 2 WAY SELECT
function fn_Change2waySelect(element,selectType,cleartxt,select_no){

	var theElement = document.getElementById(element).value;
	var outputText = document.getElementById('selectOutputTxt' + select_no).value;
	var iSchemeID = document.getElementById('iSchemeID' + select_no).value;

	if (element == 'select1' + select_no){ // ADD SELECTED VALUE
		if (outputText != ''){outputText = outputText + '!|!'} // IF NOT EMPTY ADD SEPERATOR
		outputText = outputText + theElement; // ADD VALUE
		document.getElementById('selectOutputTxt' + select_no).value = outputText;
	}else if (element == 'select2' + select_no){ // REMOVE SELECTED VALUE, NEED TO REMOVE
		outputText = outputText.replace(theElement,''); // REMOVE VALUE
		outputText = outputText.replace('!|!!|!','!|!'); // FIX DOUBLE SEPERATOR
		if (outputText == '!|!'){outputText = ''} // IF ONLY SEPERATOR, SO CLEAR
		document.getElementById('selectOutputTxt' + select_no).value = outputText;
	}else if (element == 'other' + select_no) { // OTHER ADDED TO LIST
		if (outputText != ''){outputText = outputText + '!|!'} // IF NOT EMPTY ADD SEPERATOR
		outputText = outputText + theElement; // ADD VALUE
		document.getElementById('selectOutputTxt' + select_no).value = outputText;
	}
	

	if (cleartxt == 1) {outputText = '';};
	
	// NOW REFRESH THE SELECT DIVISION
	if (Right(selectType,1) == "x") {
		var URL = "../scripts/updateSelect.asp?type=" + selectType + "&scheme=" + iSchemeID + "&str=" + outputText + "&rnd=" + Math.random();
	} else {
		var URL = "scripts/updateSelect.asp?type=" + selectType + "&scheme=" + iSchemeID + "&str=" + outputText + "&rnd=" + Math.random();
	}

	xmlReq = null;
	if(window.XMLHttpRequest) xmlReq = new XMLHttpRequest();
	else if(window.ActiveXObject) xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
	if(xmlReq==null) return; // Failed to create the request

	xmlReq.onreadystatechange = function()
	{
		switch(xmlReq.readyState)
		{
		case 0: // Uninitialized
			break;
		case 1: // Loading
			break;
		case 2: // Loaded
			break;
		case 3: // Interactive
			break;
		case 4: // Done!
			document.getElementById('updateBox' + select_no).innerHTML = xmlReq.responseText;
			break;
		default:
			break;
	    }
    }
	xmlReq.open ('GET', URL, true);
	xmlReq.send (null);
}


// ALL AJAX FUNCTIONS ARE BELOW
var popupVal
var autoClose
var TargetID

// COMMON FUNCTION TO SEND XML REQUESTS
var xmlReqReturnValue 
function fn_xmlReq(passedURL,theFunction){

	passedURL = passedURL + "&rnd=" + Math.random();

	xmlReq = null;
	if(window.XMLHttpRequest) xmlReq = new XMLHttpRequest();
	else if(window.ActiveXObject) xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
	if(xmlReq==null) return; // Failed to create the request

	xmlReq.onreadystatechange = function()
	{
		switch(xmlReq.readyState)
		{
		case 0: // Uninitialized
			break;
		case 1: // Loading
			break;
		case 2: // Loaded
			break;
		case 3: // Interactive
			break;
		case 4: // Done!
			xmlReqReturnValue = xmlReq.responseText;
			theFunction()
			break;
		default:
			break;
      }
    }
	xmlReq.open ('GET', passedURL, true);
	xmlReq.send (null);
}
