﻿// common functions
function stringIsNullOrEmpty(str){return (str == '' || str == ' ' || str == null || str.toLowerCase() == 'null');}
function stripHtml(str){return str.replace(/(<([^>]+)>)/ig,'');}
/*
   Class: ErrorHandler
   Sets and gets an error-message when an error occurred.
   
   class ErrorHandler()    
        property IsError boolean
        property ErrorMessage string
        
        method setError(iserror,errormessage)
        method getError(iserror,errormessage) string
        method ErrorOccurred() boolean
*/
function ErrorHandler(iserror, errormessage) {
        this.IsError = iserror;        
        this.ErrorMessage = errormessage; 
        this.setError=function(iserror,errormessage) {
            this.IsError = iserror;
            this.ErrorMessage = errormessage;
        } 
        this.ErrorOccurred=function() {
            return this.IsError;                                    
        } 
        this.getErrorMessage=function() {
            return this.ErrorMessage;                                    
        } 
        this.setError=function(iserror,errormessage) {
            this.IsError = iserror;
            this.ErrorMessage = errormessage;
        } 
}   


/*
    Variable: error
    An instance of the object ErrorHandler.
    
    Variable: defaultKyw
    The default text in the keyword box.
    
    Variable: defaultRef
    The default text in the Jump-to box.
    
    Variable: frameHtml
    ?.
    
    Variable: searchPageNumber
    Holds the page number of the search results.
    
    Variable: imagepath
    Full name of the image-path.
    
    Variable: startVerse
    Holds the verse-row when a user clicks on the verse-text.
    
    Variable: endVerse
    Holds the verse-row when a user releases the mouse after clicking on the verse-text.
    
    Variable: translationId
    Global variable that holds the translation code.
    
    Variable: finders
    Global variable that holds the finder object.
    
    Variable: levelCollection
    Global variable that holds the finder level and search collections.
    
    Variable: debug
    Holds true or false for displaying alert for debugging.    
*/
var error = new ErrorHandler(false,'');
var defaultKyw = LocalStrings.StartANewSearch;
var defaultRef = LocalStrings.ScriptureReference;
var frameHtml = 'version1';
var searchPageNumber = 1;
var imagepath= skinImagePath;
var startVerse=0;
var endVerse=0;
var translationId='';
var finders;
var levelCollection;
var debug;


/*
    Function: addEvent
    Add an event to an object.
    
    Parameters:
        obj    - object name.
        evType - event type.
        fn     - function name.        
        
    Returns:
        event.            
*/
function addEvent(obj, evType, fn) { 
    if (obj.addEventListener){ 
        obj.addEventListener(evType, fn, false); 
        return true; 
    } else if (obj.attachEvent){ 
        var r = obj.attachEvent("on"+evType, fn); 
        return r; 
    } else { 
        return false; 
    } 
}
     

/*
   Variable: BrowserDetect
   An object of the class BrwoserDetect, which returns the browser information (name, version,...).
*/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};


BrowserDetect.init(); // init the object BrowserDetect.


    // User object/remove it
    var user = new User(0);  // by default, set to 0

    // constructor of the User object
    function User(id) {
        this.id = id;        
    }
    


    

