
//Show hidden message

var curleft = 0;
var curtop = 0;
var timerID;

function findPos(obj) {
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
      }
    }
  return [curleft,curtop];
  }
      
function showHiddenMessage(parentElementId, hiddenDivId, verticalDistance, horizontalDistance, timeout) {
  hideElementInDocument(hiddenDivId);
  var newtop, newleft;
  findPos(document.getElementById(parentElementId));
          
  newtop = curtop + includeHeight(parentElementId) + verticalDistance;
  document.getElementById(hiddenDivId).style.top = newtop + "px";
  newleft = curleft + includeWidth(parentElementId) + horizontalDistance; 
  document.getElementById(hiddenDivId).style.left = newleft + "px";
  document.getElementById(hiddenDivId).style.display = 'block';
  if (timeout != undefined) {
    timerID = setTimeout("hideElementInDocument('" + hiddenDivId + "')", timeout);
  }
}



  function includeHeight(element) {
    var elementType = document.getElementById(element).tagName;
    return (elementType == 'IMG') ? document.getElementById(element).height : 0;
  }

 function includeWidth(element) {
    var elementType = document.getElementById(element).tagName;
    return (elementType == 'IMG') ? document.getElementById(element).width : 0;
  }


function hideElementInDocument(elementId) {
    document.getElementById(elementId).style.display = 'none';
}


//show hidden message finished

function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

function trim( value ) {
	return LTrim(RTrim(value));
}

function validateInputField(fieldId, minLength, errorDivId, errorMessage) {
	var trimmedFieldValue = new String(trim(document.getElementById(fieldId).value));
	if(trimmedFieldValue.length < minLength) {
		document.getElementById(errorDivId).innerHTML = errorMessage;
		return false;
	} else {
		if(document.getElementById(errorDivId).innerHTML.length > 0) {
		  document.getElementById(errorDivId).innerHTML = "";
		}
		return true;
	}
}

function validateInputFieldWithMinAndMaxLength(fieldId, minLength, maxLength, errorDivId, errorMessage) {
    var trimmedFieldValue = new String(trim(document.getElementById(fieldId).value));
    if(trimmedFieldValue.length < minLength || trimmedFieldValue.length > maxLength) {
        document.getElementById(errorDivId).innerHTML = errorMessage;
        return false;
    } else {
        if(document.getElementById(errorDivId).innerHTML.length > 0) {
          document.getElementById(errorDivId).innerHTML = "";
        }
        return true;
    }
}

function validateSelectField(fieldId, errorDivId, errorMessage) {
	if(document.getElementById(fieldId).selectedIndex==0) {
		document.getElementById(errorDivId).innerHTML = errorMessage;
		return false;
	} else {
		document.getElementById(errorDivId).innerHTML = "";
		return true;
	}
}

function validateEmailField(emailAddressDivId, errorDivId, errorMessage) {
	return validateFieldByRegex(emailAddressDivId,errorDivId,errorMessage,/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/);
}

function validateUsernameField(usernameDivId, errorDivId, errorMessage) {
	return validateFieldByRegex(usernameDivId,errorDivId,errorMessage,/^[a-zA-Z0-9@\w\.-]*$/);
}

function validateFieldByRegex (divId, errorDivId, errorMessage, regexValue) {
	var trimmedFieldValue = new String(trim(document.getElementById(divId).value));
    var regex = new RegExp(regexValue);
    var valid = regex.test(trimmedFieldValue);
    if(valid) {
        document.getElementById(errorDivId).innerHTML = "";
    } else {
        document.getElementById(errorDivId).innerHTML = errorMessage;
    }
    return valid;   
	
}

function redirectUrl(newUrl){
	window.location.href = newUrl + getRedirectUrlQueryString(window.location.pathname) ;
}

function getRedirectUrlQueryString(refererUrl) {
	return "?refererUrl="+refererUrl;
}

function checkMaxInput(textAreaElement, maxLen)
{ 
    if (textAreaElement.value.length > maxLen)
        textAreaElement.value = textAreaElement.value.substring(0, maxLen);
	return (maxLen - textAreaElement.value.length);
}


function toggleSubTopics(topicName)
{
    if(document.getElementById("subtopics_" + topicName).style.display == 'none') {
	    document.getElementById("show_subtopics_anchor_" + topicName).getElementsByTagName("a")[0].innerHTML = "<img width='9' height='9' border='0' alt='Hide subtopics' src='/ec/images/minus.gif'></img> hide subtopics";
	    document.getElementById("subtopics_" + topicName).style.display = 'block';
    }
    else {
        document.getElementById("show_subtopics_anchor_" + topicName).getElementsByTagName("a")[0].innerHTML = "<img width='9' height='9' border='0' alt='Show subtopics' src='/ec/images/plus.gif'></img> show subtopics";
        document.getElementById("subtopics_" + topicName).style.display = 'none';
    }
}
 
function processCreditCard(){
    if (!validateBillingInfoFields()) return false;
        startIframeTimer();
        showSirRequestProgressIndicator();
        var sirRequestForm = getSirRequestForm();
        populateSirRequestFields(sirRequestForm);
        sirRequestForm.submit();
        return false;
}

var pciIframeTimer;

var PCI_IFRAME_TIMEOUT_MS = 40000;

function startIframeTimer() {
    pciIframeTimer = setTimeout("checkPciStatusAndReportError()", PCI_IFRAME_TIMEOUT_MS);
}

function checkPciStatusAndReportError() {
    if (!(isPciRequestCompleteFormReadyAndSubmitInProgress())) {
        logSirTimeout();
        clearIframe();
        hideProgressIndicatorAndShowErrorMessage();
    }
}

// SIR timeout logger (AJAX/DWR)
function logSirTimeout() {
    SirTimeoutLogger.logSirTimeout(document.getElementById("userId").value, PCI_IFRAME_TIMEOUT_MS);
}

function clearIframe() {
    document.getElementById('ccsecureiframe').src = 'blank'; 
}
    
function isPciRequestCompleteFormReadyAndSubmitInProgress() {
    return document.getElementById('continueWebflowField').name=='_eventId_confirmPurchase';
}

function hideProgressIndicatorAndShowErrorMessage() {
    document.getElementById('processIndicator').style.display = 'none';
    document.getElementById('sirServerErrorDiv').style.display='block';
    document.getElementById('sirServerErrorDiv').scrollIntoView(true);
}

function getSirRequestForm(){
    var iframeEl = document.getElementById('ccsecureiframe');
    if (iframeEl.contentDocument ) { 
        var sirForm = iframeEl.contentDocument.getElementById('sirRequest');
    } else {
        var sirForm = iframeEl.contentWindow.document.getElementById('sirRequest');
    }
    return sirForm;
}

function showSirRequestProgressIndicator() {
    document.getElementById('processIndicator').style.top = (findPos(document.getElementById('ecom_cont'))[1]) + "px";
    document.getElementById('processIndicator').style.left = (findPos(document.getElementById('ecom_cont'))[0] - 90) + "px";
    document.getElementById('processIndicator').style.display = 'block';
    document.getElementById('ecom_cont').style.visibility='hidden';
}

function populateSirRequestFields(sirRequestForm) {
    sirRequestForm.secure_I_C_1.value  = getCCExpiryDate() + "_" + document.getElementById("creditCardNumber").value;
    sirRequestForm.domainUserid.value  = document.getElementById("userId").value;
}
function getCCExpiryDate() {
	var expiryMonth = document.getElementById('expiryMonth').value;
	var expiryYear = document.getElementById('expiryYear').value;
	var lastDayOfMonth = daysInMonth(expiryMonth, expiryYear);
	return expiryMonth + "/" + lastDayOfMonth + "/" + expiryYear;
}


function daysInMonth(month,year) {
    var dd = new Date(year, month, 0);
    return dd.getDate();
}

function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop;
    while (obj = obj.offsetParent) {
        curleft += obj.offsetLeft
        curtop += obj.offsetTop
        if (obj.tagName == 'DIV'){
            curtop -= obj.scrollTop;
        }
    }
}
return [curleft,curtop];
}
