﻿

/* iVector */
var iVector = new function() {

	var me = this;
	var Holder;

	this.ShowSelectedDiv = function(sObject) {

		var aElements = f.GetElementsByClassName('div', 'show');
		aElements.push(f.GetElementsByClassName('a', 'selected')[0]);
		for (var i = 0; i < aElements.length; i++) {
			f.SetClass(aElements[i], '');
		}

		var bContentAlreadyLoaded = s.Trim(f.GetHTML(sObject)) != '';
		if (bContentAlreadyLoaded == true) {
			f.SetClass(sObject, 'show');
		} else {
			var sURLName = sObject.split('_')[1];
			me.Holder = f.GetObject(sObject);
			me.GetiVectorModuleBodyHTML.Go(sURLName);
		}



	}


	//getivectormodule webservice (body)
	this.GetiVectorModuleBodyHTML = new WebService();
	this.GetiVectorModuleBodyHTML.Go = function(URLName) {
		aParams = new Array(['URLName', URLName]);
		this.RunWebService('webservices/support.asmx', 'http://intuitivesystems', 'GetiVectorModuleBodyHTML', aParams, this, false);
	}

	this.GetiVectorModuleBodyHTML.Done = function(oXML) {
		var oReturn = this.GetTagValue(oXML, 'GetiVectorModuleBodyHTMLResult');
		f.SetHTML(me.Holder, oReturn);
		f.SetClass(me.Holder, 'show');
	}


}



/* contact us */
var ContactUs = new function() {

    this.Validate = function() {
        var bErrors = false;


        //check for empty mandatory fields
        var aControls = f.GetElementsByClassName('*', 'mandatory');
        for (var i = 0; i < aControls.length; i++) {
            var oLabel = f.GetObject(s.Replace(aControls[i].id, 'txt', 'lbl'));
            f.SetClassIf(oLabel, 'error', f.GetValue(aControls[i]) == '');
        }


        //check email address is valid
        if (f.GetValue('txtEmailAddress') != '' && !ContactUs.ValidateEmail(f.GetValue('txtEmailAddress'))) {
            f.AddClass('lblEmailAddress', 'error');
        }


        //work out if there are any errors, show warning, or do the business
        var bAnyErrors = f.GetElementsByClassName("*", "error").length > 0;
        f.ShowIf('pWarning', bAnyErrors);

        if (!bAnyErrors) {
            var sQueryString = f.GetContainerQueryString('divEmail');
            ContactUs.SendEmail.Go(sQueryString);
        }
    }


    /* send email */
    this.SendEmail = new WebService();
    this.SendEmail.Go = function(QueryString) {
        aParams = new Array(['QueryString', QueryString]);
        this.RunWebService('webservices/support.asmx', 'http://intuitivesystems', 'SendEmail', aParams, this, false);
    }

    this.SendEmail.Done = function(oXML) {
        var oReturn = this.GetTagValue(oXML, 'SendEmailResult');
        f.ShowIf('pThankYou', oReturn == 'true');
        f.ShowIf('pSendFailed', oReturn == 'false');
        f.ShowIf('divEmailContent', oReturn == 'false');
    }


    /* validate email address */
    this.ValidateEmail = function(sEmail) {
        var sEmailRegEx = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
        var o = new RegExp(sEmailRegEx);
        return o.test(sEmail);
    }
}




/* news */
var News = new function() {

	var me = this;
	var NewsBodyContainer;

	//show selected div
	this.ShowSelectedDiv = function(sObject) {

		var aElements = f.GetElementsByClassName('div', 'dispnews');
		aElements.push(f.GetElementsByClassName('a', 'newsselect')[0]);
		for (var i = 0; i < aElements.length; i++) {
			f.SetClass(aElements[i], '');
		}

		var bContentAlreadyLoaded = s.Trim(f.GetHTML(sObject)) != '';
		if (bContentAlreadyLoaded == true) {
			f.SetClass(sObject, 'dispnews');
		} else {
			var sURLName = sObject.split('_')[1];
			me.NewsBodyContainer = f.GetObject(sObject);
			me.GetNewsBodyHTML.Go(sURLName);
		}

	}


	//show
	this.Show = function(NodeID) {
		me.GetNewsHTML.Go(NodeID);
	}



	//getnews webservice (popup)
	this.GetNewsHTML = new WebService();
	this.GetNewsHTML.Go = function(NodeID) {
		aParams = new Array(['NodeID', NodeID]);
		this.RunWebService('webservices/support.asmx', 'http://intuitivesystems', 'GetNewsHTML', aParams, this, false);
	}

	this.GetNewsHTML.Done = function(oXML) {
		var oReturn = this.GetTagValue(oXML, 'GetNewsHTMLResult');
		var oContainer = me.BuildNewsContainer();
		f.SetHTML(oContainer, oReturn);
		e.ModalPopup.Show(oContainer);
	}


	//getnews webservice (body)
	this.GetNewsBodyHTML = new WebService();
	this.GetNewsBodyHTML.Go = function(URLName) {
		aParams = new Array(['URLName', URLName]);
		this.RunWebService('webservices/support.asmx', 'http://intuitivesystems', 'GetNewsBodyHTML', aParams, this, false);
	}

	this.GetNewsBodyHTML.Done = function(oXML) {
		var oReturn = this.GetTagValue(oXML, 'GetNewsBodyHTMLResult');
		f.SetHTML(me.NewsBodyContainer, oReturn);
		f.SetClass(me.NewsBodyContainer, 'dispnews');
	}



	//build news container
	this.BuildNewsContainer = function() {

		var oNewsContainer = f.GetObject('divNewsContainer');

		if (!oNewsContainer) {
			oNewsContainer = document.createElement('div');
			oNewsContainer.setAttribute('id', 'divNewsContainer');
			oNewsContainer.style.display = 'none';
			document.body.appendChild(oNewsContainer);
		}
		return oNewsContainer;
	}


	//set scroll bar on news page
	this.SetNewsScroll = function(bShow) {

		//find all elements with class = newsarticle
		var aNewsItems = f.GetElementsByClassName('div', 'newsarticle');
		for (var i = 0; i < aNewsItems.length; i++) {
			if (bShow) {
				f.AddClass(aNewsItems[i], 'scroll');
			} else {
				f.RemoveClass(aNewsItems[i], 'scroll');
			}

		}
	}

}