var currentPageId='assessquestion';
var bLastQuestion=false;


function cnresponseAssessCatalog(sAssessLabel, DEBUGON, nDealerId,nCategoryId, in_objAssessStateContainer, arrState)
{
 //pageid = assess.assessquestion
	var sReturn;
	var objAssessStateContainer = null ;
	// Add the current page to the state container.
	objAssessStateContainer = ( in_objAssessStateContainer == null ? new AssessStateContainer() : in_objAssessStateContainer ) ;
	sReturn = '<cnrequest label="'+sAssessLabel +'" metricslog="false">';
	sReturn += '<businessobject>Assess</businessobject><action>Assess</action>';
	sReturn += '<parameters>';
	sReturn += '<parameter name="generic">' + objAssessStateContainer.AsXML( true, 'getquestion' ) +'</parameter>';
	sReturn += '<parameter name="categoryid">' + nCategoryId  + '</parameter>';
	sReturn += '<parameter name="dealerid">' + nDealerId + '</parameter>';
	//sReturn += '<parameter name="returnproductinfo">1</parameter>';
	sReturn += '<parameter name="pagesize">100</parameter>';
	sReturn += '<parameter name="questioncount">' +objAssessStateContainer.GetThisPage().GetCount() +'</parameter>';
	for( var nAssessStateIndex = 0 ; nAssessStateIndex <  objAssessStateContainer.GetThisPage().GetCount(); nAssessStateIndex++) {
		sReturn += '<parameter name="question' + (nAssessStateIndex + 1) + '">' + objAssessStateContainer.GetThisPage().GetItem(nAssessStateIndex).GetQuestionId() +'</parameter>';
		var RealAnswer = objAssessStateContainer.GetThisPage().GetItem(nAssessStateIndex).GetAnswerId();
		if (RealAnswer != "" && RealAnswer.substring(0,1) == "|") {
			RealAnswer = RealAnswer.substring(1,RealAnswer.length);
		} 
		sReturn += '<parameter name="answer' + (nAssessStateIndex + 1)  + '">' + RealAnswer +'</parameter>';
	}
	sReturn += '</parameters><language>145042</language></cnrequest>';
	sReturn += buildProductRequest();
	return sReturn;
}

function cnresponseGoBackAssessCatalog(sAssessLabel, DEBUGON, nDealerId,nCategoryId, in_objAssessStateContainer, arrState)
{
 //pageid = assess.assessquestion
	var sReturn="";
 
	// Reanswer the question in reserve order. Otherwise the state engine will not
	// be in the correct position.
	var bFirstNode = true ;
	//alert(in_objAssessStateContainer);
	// Reanswer the questions on the previous page and include the generic parameter in the 
	// final assess call.
	if( in_objAssessStateContainer != null ) {
		sReturn += in_objAssessStateContainer.ReAnswerLastPageAsXML( true, in_objAssessStateContainer.AsXML( false, 'gobackpage' ) ) ;
	}
	
	// Remove the previous page from the list of pages.
	// This is so the previous page doesnt jump to itsself.
	in_objAssessStateContainer.RemoveLastPage() ;
	

	sReturn += buildProductRequest();
	return sReturn;
}



function AssessGetQuestion(DEBUGON, nDealerId,nCategoryId, in_objAssessStateContainer, arrState)
{
	var sCatch;
	var sCatch= '<cnenvironment>';
	var oForm = document.forms.ChannelNet;
	var objAssessStateContainer = null ;
	// Add the current page to the state container.
	objAssessStateContainer = ( in_objAssessStateContainer == null ? new AssessStateContainer() : in_objAssessStateContainer ) ;
	sCatch += '<systemvars>';
	sCatch += '<var name="pageid">'+ currentPageId+'</var>';
	//sCatch += '<var name="debug">3</var>';
	sCatch += '</systemvars>';
	sCatch += '<cnrequest label="default" metricslog="false">';
	sCatch += '<businessobject>Assess</businessobject><action>assessment</action>';
	sCatch += '<parameters>';
	sCatch += '<parameter name="generic">' + objAssessStateContainer.AsXML( true, 'getquestion' ) +'</parameter>';
	sCatch += '<parameter name="categoryid">' + nCategoryId  + '</parameter>';
	sCatch += '<parameter name="dealerid">' + nDealerId + '</parameter>';
	sCatch += '<parameter name="pagesize">100</parameter>';
	sCatch += '<parameter name="detail">auto</parameter>';
	sCatch += '<parameter name="during">end</parameter>';
  sCatch += '<parameter name="questioncount">' +objAssessStateContainer.GetThisPage().GetCount() +'</parameter>';
 	for( var nAssessStateIndex = 0 ; nAssessStateIndex <  objAssessStateContainer.GetThisPage().GetCount(); nAssessStateIndex++) {
		sCatch += '<parameter name="question' + (nAssessStateIndex + 1) + '">' + objAssessStateContainer.GetThisPage().GetItem(nAssessStateIndex).GetQuestionId() +'</parameter>';
		var RealAnswer = objAssessStateContainer.GetThisPage().GetItem(nAssessStateIndex).GetAnswerId();
		if (RealAnswer != "" && RealAnswer.substring(0,1) == "|") {
			RealAnswer = RealAnswer.substring(1,RealAnswer.length);
		} 
		sCatch += '<parameter name="answer' + (nAssessStateIndex + 1)  + '">' + RealAnswer +'</parameter>';
	}
	sCatch += '</parameters><language>145042</language></cnrequest>';
	//if(bLastQuestion)
	sCatch += '</cnenvironment>';
	
	//alert(sCatch);

	oForm.xml.value = sCatch;
	oForm.submit();

	document.body.style.cursor = 'wait';
}


function AssessGetQuestion_old(DEBUGON, nDealerId,nCategoryId, in_objAssessStateContainer, arrState)
{
  //pageid = assess.assessquestion
	var sCatch;
	var sCatch= '<cnenvironment>';
	var oForm = document.forms.ChannelNet;
	var objAssessStateContainer = null ;
	// Add the current page to the state container.
	objAssessStateContainer = ( in_objAssessStateContainer == null ? new AssessStateContainer() : in_objAssessStateContainer ) ;
	sCatch += '<systemvars>';
	sCatch += '<var name="pageid">'+ currentPageId+'</var>';
	//sCatch += '<var name="debug">3</var>';
	sCatch += '</systemvars>';
	sCatch += '<cnrequest label="default" metricslog="false">';
	sCatch += '<businessobject>Assess</businessobject><action>Assess</action>';
	sCatch += '<parameters>';
	sCatch += '<parameter name="generic">' + objAssessStateContainer.AsXML( true, 'getquestion' ) +'</parameter>';
	sCatch += '<parameter name="categoryid">' + nCategoryId  + '</parameter>';
	sCatch += '<parameter name="dealerid">' + nDealerId + '</parameter>';
	//sCatch += '<parameter name="returnproductinfo">1</parameter>';
	sCatch += '<parameter name="pagesize">100</parameter>';
	sCatch += '<parameter name="questioncount">' +objAssessStateContainer.GetThisPage().GetCount() +'</parameter>';
	for( var nAssessStateIndex = 0 ; nAssessStateIndex <  objAssessStateContainer.GetThisPage().GetCount(); nAssessStateIndex++) {
		sCatch += '<parameter name="question' + (nAssessStateIndex + 1) + '">' + objAssessStateContainer.GetThisPage().GetItem(nAssessStateIndex).GetQuestionId() +'</parameter>';
		var RealAnswer = objAssessStateContainer.GetThisPage().GetItem(nAssessStateIndex).GetAnswerId();
		if (RealAnswer != "" && RealAnswer.substring(0,1) == "|") {
			RealAnswer = RealAnswer.substring(1,RealAnswer.length);
		} 
		sCatch += '<parameter name="answer' + (nAssessStateIndex + 1)  + '">' + RealAnswer +'</parameter>';
	}
	sCatch += '</parameters><language>145042</language></cnrequest>';
	//if(bLastQuestion)
	 sCatch += buildProductRequest();
	sCatch += '</cnenvironment>';
	oForm.xml.value = sCatch;
	oForm.submit();
	document.body.style.cursor = 'wait';
}


function buildProductRequest(){
 
 var i, sProdkey;
  var sReturn="";
/*  for(i=0;i<productArray.length;i++){
    sProdKey = productArray[i];
    sReturn += '<cnrequest label="product'+sProdKey+'" metricslog="false">';
  	sReturn += '<businessobject>catalog</businessobject><action>GetProductFullDetails</action>';
  	sReturn += '<parameters>';
  	sReturn += '<parameter name="ProductKey">' + sProdKey +'</parameter>';
    sReturn += '</parameters><language>145042</language></cnrequest>';
  }*/
  return sReturn;
}

function imageBOARect(xloc, yloc, xsize, ysize, qname, qid, aid) {


	document.write('<area shape="rect" coords="', xloc, ', ', yloc, ', ', xloc + xsize, ', ', yloc+ysize, '" ');
	document.write('href="javascript:void setFieldValue(\'', qname, '\', \'', aid, '\')" ');
	document.write('onclick="BOAimageclick(\'', qid,'\', \'', aid, '\')"/>');
}

function BOAimageclick(qid,aid) {


	g_objAssessStateContainer.GetPage((g_objAssessStateContainer.GetCount()-1)).GetItemByName(qid).answerId = aid;
}


function ChangeAnswer(qid, nDealerId,nCategoryId, in_objAssessStateContainer, arrState)
{
	//page id = assess.assessquestion
  var oForm = document.forms.ChannelNet;
	var sCatch;
	var sCatch= '<cnenvironment>';

	var objAssessStateContainer = null ;

	// Add the current page to the state container.
	objAssessStateContainer = ( in_objAssessStateContainer == null ? new AssessStateContainer() : in_objAssessStateContainer ) ;

	sCatch += '<systemvars>';
	sCatch += '<var name="pageid">'+ currentPageId+'</var>';
	
	//sCatch += '<var name="debug">3</var>';
	sCatch += '</systemvars>';

	sCatch += '<cnrequest label="default" metricslog="false">';
	sCatch += '<businessobject>Assess</businessobject><action>changeAnswer</action>';
	sCatch += '<parameters>';

	sCatch += '<parameter name="generic">' + objAssessStateContainer.AsXML( true, 'getquestion' ) +'</parameter>';
	sCatch += '<parameter name="changeid">' + qid  + '</parameter>';
	sCatch += '<parameter name="dealerid">' + nDealerId + '</parameter>';
	//sCatch += '<parameter name="returnproductinfo">1</parameter>';
	sCatch += '<parameter name="pagesize">100</parameter>';

	sCatch += '<parameter name="questioncount">0</parameter>';

	sCatch += '</parameters><language>145042</language></cnrequest>';
	sCatch += '</cnenvironment>';
	
	//alert(sCatch);

	oForm.xml.value = sCatch;
	oForm.submit();

	document.body.style.cursor = 'wait';
}

function cnresponseAssessSetCategory(sLabel, nCategoryId, nCurrentQuestionId)
{
	var sReturn;
	var objAssessStateContainer = null ;
	// Add the current page to the state container.
	objAssessStateContainer = new AssessStateContainer() ;
	sReturn = '<cnrequest label="'+ sLabel +'" metricslog="false">';
	sReturn += '<businessobject>Assess</businessobject><action>SetCategory</action>';
	sReturn += '<parameters>';
	sReturn += '<parameter name="generic">' + objAssessStateContainer.AsXML( true, 'getquestion' ) +'</parameter>';
	sReturn += '<parameter name="categoryid">' + nCategoryId  + '</parameter>';
	sReturn += '<parameter name="dealerid">0</parameter>';
	sReturn += '<parameter name="pagesize">100</parameter>';
	sReturn += '<parameter name="reset">T</parameter>';
	sReturn += '</parameters><language>145042</language></cnrequest>';
	return sReturn;
}


function AssessSetCategory(nCategoryId, nCurrentQuestionId)
{
  //pageid = assess.assessquestion
	var sCatch;
	
		var objAssessStateContainer = null ;

	// Add the current page to the state container.
	objAssessStateContainer = new AssessStateContainer() ;
	
	var sCatch= '<cnenvironment>';

	sCatch += '<systemvars>';
	//sCatch += '<var name="debug">3</var>';
	sCatch += '<var name="pageid">'+ currentPageId+'</var>';
	sCatch += '</systemvars>';

	sCatch += '<cnrequest label="default" metricslog="false">';
	sCatch += '<businessobject>Assess</businessobject><action>SetCategory</action>';
	sCatch += '<parameters>';
	sCatch += '<parameter name="generic">' + objAssessStateContainer.AsXML( true, 'getquestion' ) +'</parameter>';
	sCatch += '<parameter name="categoryid">' + nCategoryId  + '</parameter>';
	sCatch += '<parameter name="dealerid">0</parameter>';
	sCatch += '<parameter name="pagesize">100</parameter>';
	sCatch += '<parameter name="reset">T</parameter>';
	sCatch += '</parameters><language>145042</language></cnrequest>';
	sCatch += '</cnenvironment>';
	
	//alert(sCatch);
	
	document.forms["ChannelNet"].xml.value = sCatch;
	document.forms["ChannelNet"].submit();
	
	//document.forms.ChannelNetDebug.xml.value = sCatch;
	
	//document.forms.ChannelNetDebug.submit();	
}


function AssessGoBackPage(in_objAssessStateContainer) {
  //pageid = assess.assessquestion
	var sCatch;
	var sCatch= '<cnenvironment>';

	sCatch += '<systemvars>';
	sCatch += '<var name="pageid">'+ currentPageId+'</var>';
	//sCatch += '<var name="debug">3</var>';
	sCatch += '</systemvars>';
 
	// Reanswer the question in reserve order. Otherwise the state engine will not
	// be in the correct position.
	var bFirstNode = true ;
	//alert(in_objAssessStateContainer);
	// Reanswer the questions on the previous page and include the generic parameter in the 
	// final assess call.
	if( in_objAssessStateContainer != null ) {
		sCatch += in_objAssessStateContainer.ReAnswerLastPageAsXML( true, in_objAssessStateContainer.AsXML( false, 'gobackpage' ) ) ;
	}
	
	// Remove the previous page from the list of pages.
	// This is so the previous page doesnt jump to itsself.
	in_objAssessStateContainer.RemoveLastPage() ;
	
	sCatch += '</cnenvironment>';
	
	//alert(sCatch);

	document.forms.ChannelNet.xml.value = sCatch;
	document.forms.ChannelNet.submit();
	document.body.style.cursor = 'wait';

}

// Class to hold assess questions and answers.
function AssessStateContainer() {

	// Attributes.
	this.nPageIndex					= 0 ;
	this.arrPages					= null ;

	// methods.
	this.GetCount							= GetCount ;
	this.AddPage							= AddPage ;
	this.AsXML								= AsXML ;
	this.ReAnswerLastPageAsXML		= ReAnswerLastPageAsXML ;
	this.Clear								=	Clear ;
	this.GetPage							= GetPage ;
	this.GetThisPage 					= GetThisPage ;
	this.RemoveLastPage				= RemoveLastPage ;

	function GetCount() {	return this.nPageIndex ; }

	function GetPage( nPage ) { return this.arrPages[ nPage] ; }

	function GetThisPage() { return this.arrPages[ ( this.nPageIndex > 0 ? this.nPageIndex - 1 : 0 ) ] ; }

	function AddPage( arrQuestionsAndAnswersForPage ) {

		if( this.arrPages == null ) {
			this.Clear() ;
			this.arrPages = new Array() ;
		}

		this.arrPages[this.nPageIndex] = new AssessStatePage() ;
		this.arrPages[this.nPageIndex++].BuildQuestionsAndAnswers( arrQuestionsAndAnswersForPage ) ;
	}

	/*
			<AssessPages count="">
					<Page id=""><![CDATA[]]></Page>
			</AssessPages>
	*/
	function AsXML( bIncludeLastQuestion, sAction ) {

		var sValue		 = '<AssessPages count=\"' + this.GetCount() + '\" action=\"' + sAction + '\">' ;
		var nPageTo		 = (bIncludeLastQuestion == true ? this.GetCount() : this.GetCount() - 1) ;
		
		for( var nPagePosition = 0; nPagePosition < nPageTo; nPagePosition++ ) {
			sValue += '<Page id=\"' + nPagePosition + '\"><![CDATA[' + this.GetPage( nPagePosition ).AsString() + ']]></Page>' ;
		}
		
		//alert(sValue);
		
		return sValue += '</AssessPages>';
		
		
	}


	function ReAnswerLastPageAsXML( bCreateGenericParameter, sGenericParameterValue ) {

		var sValue = '';
		for( var nQuestionIndex = (this.GetPage( (this.GetCount() -2)  ).GetCount()-1); nQuestionIndex >= 0; nQuestionIndex--) {
			
			sValue += '<cnrequest label="default' +  (nQuestionIndex == 0  ? '' :  nQuestionIndex )+ '" metricslog="false">';
			sValue += '<businessobject>Assess</businessobject><action>ChangeAnswer</action>';
			sValue += '<parameters>';
			
			// Include the generic paramter in the first question of the page (nQuestionIndex == 0).
			if( nQuestionIndex == 0 && bCreateGenericParameter == true ) 
				sValue += '<parameter name="generic">' + sGenericParameterValue + '</parameter>';

			sValue += '<parameter name="changeid">' + this.GetPage((this.GetCount()-2) ).GetItem(nQuestionIndex).GetQuestionId().replace(/[a-z]/g, "") + '</parameter>';
			sValue += '<parameter name="pagesize">10</parameter>';
			sValue += '<parameter name="questioncount">0</parameter>';
			sValue += '</parameters><language>145042</language></cnrequest>';
		}
				
		return sValue ;
	}

	function Clear() {
		this.nPageIndex = 0 ;
		this.arrPages = null ;

	}
	
	function RemoveLastPage() { this.nPageIndex = this.GetCount() - 1 ; }
}

function AssessStatePage()
{

	// Attributes.
	this.nAssessStateIndex				= 0 ;
	this.arrAssessState						= null ;

	// Methods.
	this.GetCount									= GetCount ;
	this.GetItem									= GetItem ;
	this.BuildQuestionsAndAnswers	= BuildQuestionsAndAnswers ;
	this.AsString									= AsString ;
	this.GetItemByName						= GetItemByName ;


	function GetCount() { return this.nAssessStateIndex ; }

	function GetItem( nItemIndex ) { return this.arrAssessState[nItemIndex] ; }
	
	function GetItemByName( sName ) {
	 var nIndex = 0 ;
		for( nIndex = 0; nIndex < this.GetCount(); nIndex++) {
			if( this.GetItem( nIndex).questionId.replace(/[a-z]/g, "") == sName )
				return this.GetItem( nIndex ) ;
		}
		return null ;
	}
	

	function BuildQuestionsAndAnswers( arrQuestionsAndAnswers ) {

		var sQuestion			= null ;
		var sAnswer				= null ;
		var sWeighting		= null ;
		var questionCount = 0;

		if( this.arrAssessState == null ) {
			this.arrAssessState  = new Array() ;
			this.nAssessStateIndex = 0 ;
		}
		// Split the questions and answers.
		for (var name in arrQuestionsAndAnswers.value) {
				questionCount++;
				sQuestion  = name;
				if (typeof arrQuestionsAndAnswers.value[name] == "object") {
					var sAnswer = "";
					for (var value in arrQuestionsAndAnswers.value[name]) {
							if (arrQuestionsAndAnswers.value[name][value]) {
								sAnswer += (sAnswer != "") ? "|" : urlencode_field(value) ;
							}
					}
				} else {
					sAnswer=  urlencode_field(arrQuestionsAndAnswers.value[name]);
				}

				// Add the information to a new AssessState object.
				this.arrAssessState[this.nAssessStateIndex]							= new AssessState() ;
				this.arrAssessState[this.nAssessStateIndex].questionId 	= sQuestion ;
				this.arrAssessState[this.nAssessStateIndex].answerId		= sAnswer ;
				this.arrAssessState[this.nAssessStateIndex].weighting		= null ; // TODO //
				this.nAssessStateIndex++ ;
		}

	}

	function AsString() {
			var sValue		 = '' ;

			for( var nStateIndex =0; nStateIndex < this.GetCount() ; nStateIndex++ ) {
				sValue += ((nStateIndex > 0) ? ',' : '') +  this.GetItem(nStateIndex).GetQuestionId() + ':"' + this.GetItem(nStateIndex).GetAnswerId() + '"' ;
			}

			return '{value:{' + sValue.replace(/\"/g,"'") + '}}' ;
	}
}

function AssessState() {
		// Attributes.
		this.questionId			= null ;
		this.answerId			= null ;
		this.weighting			= null ;

		// Methods.
		this.GetQuestionId		= GetQuestionId ;
		this.GetAnswerId		= GetAnswerId ;
		this.GetWeighting		= GetWeighting ;

		function GetQuestionId() {
			return this.questionId ;
		}
	
		
	
		function GetAnswerId() {
			return this.answerId ;
		}

		function GetWeighting() {
			return this.weighting ;
		}
	}
	
	
function BOAvalidateNumeric(formElement, lowerBound, lowerInclusive, upperBound, upperInclusive,qid) {
	var regExpObj = new RegExp('^\\-?\\d*\\.?\\d*$','');
	var value = formElement.value;
	
	//alert(value);
	if (Trim(value) == "") {
		alert("Please fill in this field");
	} else if (regExpObj.test(value)) {
		var aboveLowerBound = (lowerInclusive ? value >= lowerBound : value > lowerBound); 
		var belowUpperBound = (upperInclusive ? value <= upperBound : value < upperBound); 

		if (upperBound >= lowerBound) {
			if (aboveLowerBound && belowUpperBound) {
				g_objAssessStateContainer.GetPage((g_objAssessStateContainer.GetCount()-1) ).GetItemByName(qid).answerId = formElement.value;

				return true;
			}
			else {
				var sLower = (lowerInclusive ? CNINCLUSIVE :  CNEXCLUSIVE);
				var sUpper = (upperInclusive ?  CNINCLUSIVE :  CNEXCLUSIVE);
				alert(CNVALIDERROR2 + '\n' + CNVALIDERROR3 + '\n' + CNVALIDERROR4  + lowerBound + sLower +  CNVALIDERROR6  + upperBound + sUpper);
			}
		} else {
			if (aboveLowerBound || belowUpperBound) {
				g_objAssessStateContainer.GetPage((g_objAssessStateContainer.GetCount()-1) ).GetItemByName(qid).answerId = formElement.value;
				return true;
			}
			else {
				var sLower = (lowerInclusive ?  CNEXCLUSIVE :  CNINCLUSIVE);
				var sUpper = (upperInclusive ?  CNEXCLUSIVE :  CNINCLUSIVE);
				alert(CNVALIDERROR2 + '\n' + CNVALIDERROR3 + '\n' + CNVALIDERROR5  + upperBound + sUpper +  CNVALIDERROR6  + lowerBound + sLower);
			}
		}
	} else {
		alert(CNVALIDERROR2 + '\n' + CNVALIDERROR7);
	}

	// selects the field value
	formElement.focus();
	formElement.select();
	return false;
}


function frmCompareSubmit() {
//pageid = assess.compare
	var frmCompare = document.forms.frmCompare;
	//alert(frmCompare);
	var CategoryKey = frmCompare.CategoryKey.value;
	var Products = getProductsForCompareSet();
	var ArrProducts = Products.split(",");
	
	if (ArrProducts.length < 2) {
		alert("Please select at least 2 items to compare");
		return false;
	} else if (ArrProducts.length > 3) {
		alert("You have selected too many items to compare. Please select up to 3.");
		return false;
	} else {
		PageID = "wisebuys.compare";
		var sCatch= '<cnenvironment>';
		sCatch += '<systemvars>';
		sCatch += '<var name="pageid">'+ PageID+'</var>';
		//sCatch += '<var name="debug">3</var>';
		sCatch += '</systemvars>';
		sCatch += '<cnrequest label="default" metricslog="false"><businessobject>Compare</businessobject><action>compareProducts</action>';
		sCatch += '<parameters>';
		sCatch += '<parameter name="productlist">'+ Products +'</parameter>';
		sCatch += '</parameters><language>145042</language></cnrequest>';
		for(var i = 0; i < ArrProducts.length; i++) {
			sCatch += '<cnrequest label="Product_' + ArrProducts[i] + '" metricslog="false"><businessobject>Catalog</businessobject><action>GetProductFullDetails</action>';
			sCatch += '<parameters>';
			sCatch += '<parameter name="ProductKey">'+ ArrProducts[i] +'</parameter>';
			sCatch += '<parameter name="CategoryKey">'+ CategoryKey +'</parameter>';
			sCatch += '<parameter name="ExtendedSearch">1</parameter>';
			sCatch += '</parameters><language>145042</language></cnrequest>';
		}
		sCatch += '</cnenvironment>';
		document.forms.ChannelNet.xml.value = sCatch;
    document.forms.ChannelNet.submit();
	}

}

function getProductsForCompareSet() {

	var frmCompare = document.forms.frmCompare;
	
	var newproducts = "";
	
	var products = "";
	
	var isNew = true;
	
	var StrCompareSetProductKeys = frmCompare.StrCompareSetProductKeys.value;
	
	var existproducts = StrCompareSetProductKeys;
	
	var ArrStrCompareSetProductKeys = StrCompareSetProductKeys.split(",");
	
	var frmCompareLength = frmCompare.elements.length;
	
	var Arrnewexistproducts = ArrStrCompareSetProductKeys;

	for(var elementIndex=0; elementIndex < frmCompareLength; elementIndex++) {
	
		isNew = true;
	
		currentElement = frmCompare.elements[elementIndex];
	
		if (currentElement.name=="chkcomparebox") {
		
			if (currentElement.checked==true) {
		
				for(var i = 0; i < ArrStrCompareSetProductKeys.length; i++) {
			
					if (currentElement.value == ArrStrCompareSetProductKeys[i]) {
									
						isNew = false;					
						
					} 
			
				} 
				
				
				if (isNew) {
				
					if (newproducts == "") {
						
						newproducts = currentElement.value;
					
					} else {
									
						newproducts += "," + currentElement.value;
					}
				}
				
			} else {
			
				for(var j = 0; j < ArrStrCompareSetProductKeys.length; j++) {
			
					if (currentElement.value == ArrStrCompareSetProductKeys[j]) {
					
						Arrnewexistproducts = removeArrayElement(Arrnewexistproducts, ArrStrCompareSetProductKeys[j]);
						
					}
			
				} 			
			
			}
			
		} 
	}
	
	var existproducts = Arrnewexistproducts.join();
	
	if (newproducts == "") {
		
		products = existproducts;
	
	} else {
		
		if (existproducts == "") {
			
			products = newproducts;
		
		} else {
	
			products = existproducts + "," + newproducts;
			
		}
	}	
	
	return products;

}

/*function updatemlistanswer(fieldname,qid) {
  var frmMirror = document.forms.Mirror;
  var frmMirrorLength = frmMirror.elements.length;
  var strAnswerId = "";
  //alert(frmMirrorLength);
  
  for(var elementIndex=0; elementIndex < frmMirrorLength; elementIndex++) {
  	currentElement = frmMirror.elements[elementIndex];
  	if (currentElement.name== fieldname) {
  		if (currentElement.checked==true) {
  			if (strAnswerId == "") {
  				strAnswerId = currentElement.value;
  			} else {
  				strAnswerId += "|" + currentElement.value;
  			}
  		}
  	} 
  }	
  g_objAssessStateContainer.GetPage((g_objAssessStateContainer.GetCount()-1) ).GetItemByName(qid).answerId = strAnswerId;
	
}*/

function updateMListAnswer(fieldname,qid) {
  var oElements = document.getElementsByName(fieldname);
  var strAnswerId = "";
  
  
  for(var elementIndex=0; elementIndex < oElements.length; elementIndex++) {
    currentElement = oElements[elementIndex];
		if (currentElement.checked==true) {
			if (strAnswerId == "") {
				strAnswerId = currentElement.value;
			} else {
				strAnswerId += "|" + currentElement.value;
			}
		}
  }	
  
  g_objAssessStateContainer.GetPage((g_objAssessStateContainer.GetCount()-1) ).GetItemByName(qid).answerId = strAnswerId;
	
}

function updateSingleAnswer(qid,sValue) {
  g_objAssessStateContainer.GetPage((g_objAssessStateContainer.GetCount()-1) ).GetItemByName(qid).answerId = sValue;
}

function GetProduct(pid) {
	var sCatch;
	var sCatch= '<cnenvironment>';
	var oForm = document.forms.ChannelNet;
	sCatch += '<systemvars>';
	//sCatch += '<var name="pageid">'+ currentPageId+'</var>';
	
	sCatch += '<var name="debug">3</var>';
	sCatch += '</systemvars>';

	sCatch += '<cnrequest label="default" metricslog="false">';
	sCatch += '<businessobject>Catalog</businessobject><action>GetProduct</action>';
	sCatch += '<parameters>';
	sCatch += '<parameter name="ProductKey">'+ pid +'</parameter>';
	sCatch += '<parameter name="generic"></parameter>';
	sCatch += '</parameters><language>145042</language></cnrequest>';
	sCatch += '</cnenvironment>';
	
	//alert(sCatch);

	oForm.xml.value = sCatch;
	oForm.submit();

	document.body.style.cursor = 'wait';

}

function GetFullProduct(pid, catid) {
	var sCatch;
	var sCatch= '<cnenvironment>';
	var oForm = document.forms.ChannelNet;
	sCatch += '<systemvars>';
	sCatch += '<var name="pageid">catalog.124122121120120121120</var>';
	
	//sCatch += '<var name="debug">3</var>';
	sCatch += '</systemvars>';
	sCatch += '<cnrequest label="default" metricslog="false"><businessobject>Catalog</businessobject><action>GetProductFullDetails</action>';
	sCatch += '<parameters>';
	sCatch += '<parameter name="ProductKey">'+ pid +'</parameter>';
	sCatch += '<parameter name="CategoryKey">'+ catid +'</parameter>';
	sCatch += '<parameter name="ExtendedSearch">1</parameter>';
	sCatch += '</parameters><language>145042</language></cnrequest>';
	sCatch += '</cnenvironment>';
	
	//alert(sCatch);

	oForm.xml.value = sCatch;
	oForm.submit();

	document.body.style.cursor = 'wait';

}

function selectGrapicRadio(sID){
  var oElm = document.getElementById(sID);
  if(oElm != null){
    oElm.checked=true; 
  } 
}
