var rootURL = "";
var ecinURL = "";
var t;
var username;
var password;
var loginPageLoaded = false;
var failedLoginMessage = "";
var admin1 = false;

var saveAfterOpen = false;

var validData = false;
var reviewCID = "";
var isNewReview;

//=============================================================================
function onPageLoad()
//=============================================================================
{
	getDataFromFields();
	
	if (validateData)
	{
		//Calls are as follows - Login -> 
		loginAndProcessRequest();
	}
	else
	{
        alert ("Error - Invalid data");
	}
}

function validateData()
{
    if ( !validData || rootURL == "" || username == "" || password == "" )
    {
        return false;
    }
    else
    {
        return true;
    }
}


//=============================================================================
function getDataFromFields()
//=============================================================================
{
    ecinXML = document.getElementById("hdE").value;
    username = document.getElementById("hdCERMEL").value;
    password = document.getElementById("hdCERMEP").value;
    rootURL = document.getElementById("hdCERMEURL").value;
    reviewXML = document.getElementById("hdCERMEReviewXML").value;
    paramsXML = document.getElementById("hdCERMEParamsXML").value;
    reviewCID = document.getElementById("hdCERMEReviewCID").value;
    isNewReview = document.getElementById("hdCERMENewReview").value;
    ecinURL = document.getElementById("hdECINURL").value;
    //alert(reviewXML);
}

//=============================================================================
function loginAndProcessRequest() {
//=============================================================================
	t = setTimeout('loginCheck()',30000);

	admin1 = false;
	var cermeFrame = document.getElementById('cerme');

  	try {
		if (!loginPageLoaded) {
			loadLoginPage();
			return;
		}
		submitLogin();
	} catch (ex) {
		clearTimeout(t);
		alert('Unable to access login page - User already Logged In');
	}

	//Look at CERM_LoginResult() for the process that continues after login.
}

//=============================================================================
function adminlogin() {
//=============================================================================
	t = setTimeout('loginCheck()',30000);
	//rootURL = _rootURL;
	admin1 = true;
	rootURL = document.getElementById("inputROOTURL").value;

	var cermeFrame = document.getElementById('cerme');
	username = document.getElementById("username").getAttribute('value');
	password = document.getElementById("password").getAttribute('value');
  	try {
		if (!loginPageLoaded) {
			loadAdminLoginPage();
			return;
		}
		submitAdminLogin();
	} catch (ex) {
		clearTimeout(t);
		alert('Unable to access login page - User already Logged In');
	}

}


function createCookie() {
//=============================================================================
   var bikky = document.cookie;
   var today = new Date();
   var name = document.getElementById("name").value;
   var value = document.getElementById("value").value;
   var expiry = new Date(today.getTime() +  60 * 60 * 1000); // plus 28 days
  if (value != null && value != "")
    document.cookie=name + "=" + escape(value) + "; expires=" + expiry.toGMTString()
    + "; path=/";
 
    bikky = document.cookie; // update bikky
  }
//=============================================================================
function loginSingleSignOn() {
//=============================================================================
	t = setTimeout('loginCheck()',30000);
	//rootURL = _rootURL;
	rootURL = document.getElementById("inputROOTURL").value;

	var cermeFrame = document.getElementById('cerme');
	 cermeFrame.src = rootURL + '/iqm/html/gateway?method=sectionmap&SectionType=Integration&responseFormat=HTML&authenticate=Y&integration=JavaScript'
	//cermeFrame.src = rootURL + '/iqm/html/gateway?method=sectionmap&SectionType=Integration&responseFormat=HTML&authenticate=Y&integration=JavaScript&unified=kJhBn%2BLjGX29ChmbV3CBJ6PhpiCUFicPmNMARtwhLEBOlPNzGaEDUmJkBpE42C7W9UdMuqdq1Q7oLgOTVK6ORKBypW1nzsyqiUD5UABIqXNljgxGfIcLNjeIsv02E5jkiYLeKMr51f96xnb9tH7Smg%3D%3D'
	return;

	try {
		if (!loginPageLoaded) {
			loadLoginPage();
			return;
		}
		submitLogin();
	} catch (ex) {
		clearTimeout(t);
		alert('Unable to access login page - server may not be available');
	}

}
//=============================================================================
function loginCheck() {
//=============================================================================
	//alert('There has been no response from the server for 30 seconds - unable to continue');
	alert('Login Failed (Server Timeout)');
}

//=============================================================================
function loadLoginPage() {
//=============================================================================
	if (!loginPageLoaded) {
		var cermeFrame = document.getElementById('cerme');
		//cermeFrame.src = rootURL + "/login?&integration=javascript";
		cermeFrame.src = rootURL + "/login?integration=javascript";
	}
}

//=============================================================================
function loadAdminLoginPage() {
//=============================================================================
	if (!loginPageLoaded) {
		var cermeFrame = document.getElementById('cerme');
		//cermeFrame.src = rootURL + "/login?&integration=javascript";
		cermeFrame.src = rootURL + "/admin?integration=javascript";
	}
}

//=============================================================================
// called on the onload event of the index.htm page - form is loaded
function submitLogin() {
//=============================================================================
	loginPageLoaded = true;
	cerme.jsLogin(username,password);
}

//=============================================================================
// called on the onload event of the index.htm page - form is loaded
function submitAdminLogin() {
//=============================================================================
	loginPageLoaded = true;
	username = document.getElementById("username").getAttribute('value');
	password = document.getElementById("password").getAttribute('value');
	
	cerme.jsAdminLogin(username,password);
	
	
}

//=============================================================================
function saveCompleted() {
//=============================================================================
	try {
		cerme.hostSaveCompleted();
	} catch (ex) {
		noObject('saveCompleted');
	}
}
// This Method opens and saves  Review XML with custom changes , both open and 
// save operations are done in background...
// NOTE : saveAfterOpen must be true BEFORE jsOpenReview is called to achieve
// this else it just opens the review
// 1.Opens a review
// 2.On Review open  CERM_ReviewOpened is called 
// 3. CERM_ReviewOpened saves the Review XML if saveAfterOpen =  true
// 
//=============================================================================
function openReviewAndSave() {
//=============================================================================
	saveAfterOpen = true;
	openReview();
	
}

//=============================================================================
function CERM_ReviewOpened(CERMFrame) {
//=============================================================================
	if (saveAfterOpen) {
		saveReview();
		saveAfterOpen = false;
	}
	else {
		//alert('CERM_ReviewOpened for frame ' + CERMFrame.getAttribute('name'));
	}
}

//=============================================================================
function newReviewPostLoginProcess()
//=============================================================================
{
   	try {
	cerme.jsNewReview(paramsXML,reviewXML);
		
	} catch (ex) {
		noObject('newReview');
	}

}

//=============================================================================
function openReviewPostLoginProcess()
//=============================================================================
{
    	try {
	    //ReviewID needs to be passed in if no ReviewXML is being sent.
		if (reviewCID < 1 ) {
			reviewCID = null
		}
	
	    //alert(reviewXML);
		cerme.jsOpenReview(reviewCID, reviewXML, paramsXML);
		
	} catch (ex) {
		noObject('openReview');
	}
}

//=============================================================================
function bookViewPostLoginProcess()
//=============================================================================
{
	try {
		//var ele = document.getElementById('bookView_ParamsXML');
		//var paramsXML = ele.innerText;
		cerme.jsBookView("");
	} catch (ex) {
		noObject('bookView');
	}
}

//=============================================================================
function openLODLookup() {
//=============================================================================
	try {
		var ele = document.getElementById('openLODLookup_ParamsXML');
		var lodXML = ele.innerText;
		cerme.jsGetLOD(lodXML);
		
	} catch (ex) {
		noObject('openReview');
	}
}

//=============================================================================
function Reports() {
//=============================================================================
	
	try {
		cerme.jsReports();
		
	} catch (ex) {
		noObject('Reports');
	}
}

//=============================================================================
function Reports2(reportType) {
//=============================================================================
	
	try {
		cerme.jsReports2(reportType);
		
	} catch (ex) {
		noObject('Reports2');
	}
}

//=============================================================================
function openABReview() {
//=============================================================================
	try {
		var ele = document.getElementById('abusername');
		var abUserName = ele.getAttribute('value');
		
		var ele = document.getElementById('abreviewid');
		var abReviewID = ele.getAttribute('value');
		
		var ele = document.getElementById('abreviewxml');
		var abReviewXML = ele.getAttribute('value');
		
		cerme.jsOpenABReview(abUserName,abReviewID,abReviewXML);
		
	} catch (ex) {
		noObject('openABReview');
	}
}
//=============================================================================
function logout(_rootURL) {
//=============================================================================
	try {
	if(admin1)
		cerme.adminlogout(_rootURL);
		else
		cerme.logout(_rootURL);
		loginPageLoaded = false;
	} catch (ex) {
		noObject('logout');
	}
}

//=============================================================================
function okToCloseReview() {
//=============================================================================
	try {
		cerme.jsOkToCloseReview();
	} catch(ex) {
		noObject('okToCloseReview');
	}
}

//=============================================================================
function okToSaveReview() {
//=============================================================================
	try {
		cerme.jsOKToSave();
	} catch (ex) {
		noObject('okToSaveReview');
	}
}

//=============================================================================
function saveReview() {
//=============================================================================
	try {
	cerme.saveReview();
	} catch(ex) {
		noObject('saveReview');
	}
}

//=============================================================================
function completeReview() {
//=============================================================================
	try {
	
	var ele = document.getElementById('newReview_ParamsXML');
	var paramsXML = ele.innerText;

	cerme.jsCompleteReview(paramsXML);
	} catch(ex) {
		noObject('completeReview');
	}
}


//=============================================================================
function closeReview() {
//=============================================================================
	try {
		cerme.closeReview(true);
	} catch (ex) {
		noObject('closeReview');
	}
}

//=============================================================================
function getCurrentOutcome() {
//=============================================================================
	try {
		cerme.getCurrentOutcome();
	} catch (ex) {
		noObject('getCurrentOutcome');
	}
	
	
}

//=============================================================================
function printReviewSummary() {
//=============================================================================
	try {
		cerme.printReviewSummary();
	} catch (ex) {
		noObject('printReviewSummary');		
	}
}

//	the following function correspond to the events in the activeX
//=============================================================================
function CERM_LoginResult(CERMFrame, success) {
//=============================================================================
   // if success == false , then the actual message text is 
   // populated in  failedLoginMessage
   	clearTimeout(t);
   	if (success == 'false')
	    alert('Login to CERME failed' + '\n Description: '+ failedLoginMessage);
	else
	{
	    PostLoginProcess();
	}
	
}

//=============================================================================
function PostLoginProcess()
//=============================================================================
{
	if (isNewReview.toLowerCase() == 'true')
	{
	    newReviewPostLoginProcess();
	}
	else if (isNewReview.toLowerCase() == 'false')
	{
	    openReviewPostLoginProcess();
	}
	else if (isNewReview.toLowerCase() == 'bookview')
	{
		bookViewPostLoginProcess();			
	}
}

//	the following function correspond to the events in the activeX
//=============================================================================
function CERM_AdminLoginResult(CERMFrame, success) {
//=============================================================================
   // if success == false , then the actual message text is 
   // populated in  failedLoginMessage
   	clearTimeout(t);
   	/*if (success == 'false')
	alert('CERM_AdminLoginResult for frame ' + CERMFrame.getAttribute('name') + ' -- ' + success + '\n Description: '+ failedLoginMessage);
	else
	alert('CERM_AdminLoginResult for frame ' + CERMFrame.getAttribute('name') + ' -- ' + success );*/
}

//=============================================================================
function CERM_Logout(CERMFrame) {
//=============================================================================
	//Logout Succedded
}

//=============================================================================
function CERM_SaveCompleted(CERMFrame, retReviewCID, retReviewXML) {
//=============================================================================

	var hdCERMEReviewXML = document.getElementById("hdCERMEReviewXML");
    var hdCERMEReviewCID = document.getElementById("hdCERMEReviewCID");
    
    hdCERMEReviewXML.value = retReviewXML;
    hdCERMEReviewCID.value = retReviewCID;

	logout();
	//Clear the screen
    CERMFrame.src = "";
    
    document.forms[0].action = ecinURL;
    document.forms[0].submit();
}
    
//=============================================================================
function CERM_lodSelected(CERMFrame, lodXML) {
//=============================================================================
	//alert('LOD Selected for ' + CERMFrame.getAttribute('name'));
	var lodXMLEle = document.getElementById('openLODLookup_ParamsXML');
	lodXMLEle.innerText = lodXML;
}

//=============================================================================
function CERM_Error(CERMFrame, errCode, errText, errDataXML) {
//=============================================================================
	alert('Error: ' + errText);
	//alert('error in frame ' +  CERMFrame.getAttribute('name') + ' -- ' + errText);
}

//=============================================================================
function CERM_ReviewOKToClose(CERMFrame, okToClose) {
//=============================================================================
	//alert('CERM_ReviewOKToClose() for frame ' +  CERMFrame.getAttribute('name') + ' -- ' + okToClose);
}

//=============================================================================
function CERM_ReviewOKToSave(CERMFRAME, okToSave) {
//=============================================================================
	
	//alert('CERM_ReviewOKToSave() for frame ' + CERMFRAME.getAttribute('name') + ' -- ' + okToSave);
}

//=============================================================================
function CERM_ReviewClosed(CERMFrame) {
//=============================================================================
	//alert('CERM_ReviewClosed for frame ' + CERMFrame.getAttribute('name'));
}

//=============================================================================
function CERM_CurrentOutcome(CERMFrame, outcomeType, additionalReview, outcomeCID, outcomeDesc, reviewDesc) {
//=============================================================================
	//alert('CurrentOutcome\n\noutcomeType = ' + outcomeType + '\nadditionalReview = ' + additionalReview + '\noutcomeCID = ' + outcomeCID + '\noutcomeDesc = ' + outcomeDesc + '\nreviewDesc = ' + reviewDesc);
}


function noObject (ob) {
	var CERMFrame = document.getElementById('cerme');
	var errText = 'Unable to complete request - object ' + ob + ' is not available';
	errText += '\nPossible cause - Login failure, server not available';
	errText += '\nYou may need to have a review open to complete this action';
	CERM_Error(CERMFrame, "", errText, "");
}