﻿// JScript File

var isTextChanged = false; 
var isAnyChanged = false; 
var exitMessage = '';
var _initCtrlId = '';
var _inspectCtrls = null;

// Cross browser event handling for IE 5+, NS6+ and Gecko
function addEvent(elm, evType, fn, useCapture)
{
    if (elm.addEventListener)
    {
        // Gecko
        elm.addEventListener(evType, fn, useCapture);
        return true;
    }
    else if (elm.attachEvent)
        {
        // Internet Explorer
        var r = elm.attachEvent('on' + evType, fn);
        return r;
        }
    else
        {
        // nutscrape?
        elm['on' + evType] = fn;
        }
}

// Cross browser event handling for IE 5+, NS6+ and Gecko
function removeEvent(elm, evType, fn, useCapture)
{    
    if (elm.removeEventListener)
        {
            // Gecko
            elm.removeEventListener(evType, fn, useCapture);
            return true;
        }
    else if (elm.detachEvent)
        {
            // Internet Explorer
            var r = elm.detachEvent('on' + evType, fn);
            return r;
        }
    else
        {
        // nutscrape?
        elm['on' + evType] = null;
        }
}


// Add Listeners
function addListeners(e)
{
    // Before unload listener
    addEvent(window, 'beforeunload', exitAlert, false);
}

// Exit Alert
function exitAlert(e)
{
// default warning message
var msg = "You will lose information if it has not already been saved.";
if (exitMessage != '') msg = exitMessage; 

checkAnyChanged(_inspectCtrls);

if (isAnyChanged) {
    // set event
    if (!e) { e = window.event;}
    if (e) { e.returnValue = msg;}
}
// return warning message
return msg;
}


function initExitConfirm(message, initCtrlID, ctrls)
{
    _initCtrlId = initCtrlID;
    _inspectCtrls = ctrls;
    exitMessage = message;
    // Initialise
    addEvent(window, 'load', addListeners, false); 
}

function confirmExit()
{
    removeEvent(window, 'beforeunload',exitAlert,false);
}

var isStackOverflow = false;
var lastPos = 0;
var f = null;
var ctrl_name = '';

function MsgBoxTextChanged(){
    if (f == null)
        f = FTB_API[ftbMsgBody];        
    /*    
    if (f.undoArrayPos > -1) {
        if (!isStackOverflow)
            if (f.undoArray.length == f.undoArrayMax){
                //if they are the same , the stack is overflow
                if (f.undoArrayPos == lastPos){
                    isStackOverflow = true;
                    //alert('Stack:' + isStackOverflow);
                }
        }
                
        if (!isTextChanged){
            if (isStackOverflow){
                isTextChanged =  true;
                //alert('Text1:' +isTextChanged );          
            }else if (f.undoArrayPos > 0 && (f.undoArray.length != f.undoArrayMax)){
                isTextChanged =  true;
                //alert('Text2:' + isTextChanged);
            }
        }else{
                //text Changed , set it as not change if it could undo to the original text
            if (f.undoArrayPos == 0 && (lastPos - f.undoArrayPos) == 1 && !isStackOverflow){
                isTextChanged =  false;            
                //alert('Text2:' + isTextChanged);
            }            
        };          
    }
    lastPos = f.undoArrayPos;*/
    isTextChanged = (f.htmlEditor.value != f.htmlEditor.defaultValue);
}


function checkValueChanged(ctrl) {
    if (ctrl != null){
      var myName = ctrl.type;
      if (myName.indexOf('checkbox') > -1 || myName.indexOf('radio') > -1)
        ctrl.isChanged = (ctrl.checked != ctrl.defaultChecked);
      if (myName.indexOf('hidden') > -1 || myName.indexOf('password') > -1 || myName.indexOf('text') > -1)
        ctrl.isChanged = (ctrl.value != ctrl.defaultValue);   
      if (myName.indexOf('select') > -1){
        var ctrlChanged = false;
        for (var k=0, l= ctrl.options.length; k<l; k++){
            if (ctrl.options[k].selected != ctrl.options[k].defaultSelected){
                ctrlChanged = true;
                break;
            }
        }
        ctrl.isChanged = ctrlChanged;        
      }
    }else  ctrl.isChanged = false;
      
    return ctrl.isChanged; 
}

function checkAnyChanged(ctrls){
    if (ctrls != null){
        isAnyChanged = false;
        for (var i = 0 ; i < ctrls.length;i++)
            if (checkValueChanged(ctrls[i])){ isAnyChanged = true; break};
        isAnyChanged = (isAnyChanged || isTextChanged);
    }else isAnyChanged = false;
    return isAnyChanged;
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "; expires=1-1-2030 00:00:00";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
