﻿// CRM Settings

// var crmUrl = "http://crmdev:83/ProcessInquiry.aspx?encoding=UTF-8"; //DEV
// var crmUrl = "http://W2L.tower.co.uat1/ProcessInquiry.aspx?encoding=UTF-8"; // UAT
var crmUrl = "http://W2L.tower.co.nz/ProcessInquiry.aspx?encoding=UTF-8"; // PROD

// CRM common functions

function initialiseForm(form)
{
	// Page location
	var wl = window.location.toString();
	var pageLoc = wl.replace(window.location.search, '');
	
	// Save google adwords querystring parameters to cookie
	var qs = new Querystring();
	var setolp = false;
	var campaign = qs.get('campaign');
	if ((campaign != null) && (campaign.length > 0))
	{
		setCookie('adWordsTracking-campaign', campaign, 1, "/", ".tower.co.nz");
		setolp = true;
	}
	var keywords = qs.get('keywords');
	if ((keywords != null) && (keywords.length > 0))
	{
		setCookie('adWordsTracking-keywords', keywords, 1, "/", ".tower.co.nz");
		setolp = true;
	}
	else
	{
		// if keywords are not there, maybe _kk is, lets try that anyway
		var keywords = qs.get('_kk');
		if ((keywords != null) && (keywords.length > 0))
		{
			setCookie('adWordsTracking-keywords', keywords, 1, "/", ".tower.co.nz");
			setolp = true;
		}
	}

	if (setolp)
	{
		setCookie('adWordsTracking-olp', pageLoc, 1, "/", ".tower.co.nz");
	}

	// Initialise the form properties
	form.action = crmUrl;
	if (form.ReturnPageName.value != '')
	{
	    var baseURI = pageLoc.split('/');
	    var returnPageURI = '';
	    for (i = 0; i < (baseURI.length - 1); i++)
		{
	        returnPageURI += baseURI[i] + '/';
	    }
		var ctrl = form.ReturnPage;
		if (ctrl == null) ctrl = addHiddenElementToForm(form, "ReturnPage");
	    ctrl.value = returnPageURI + form.ReturnPageName.value;
	}    
}

function addHiddenElementToForm(form, elementName)
{
	if (form == null) return;
	if (elementName == null) return;
	if (elementName.length < 1) return;
	if (!document.createElement) return;

	var formfield = document.createElement("input");
	formfield.name = elementName;
	formfield.id = elementName;
	formfield.type = "hidden";
	form.appendChild(formfield);

	return formfield;
}

function addCrazyElementsToDescription(form)
{
	// Create description element
	var ctrl = form.Description;
	if (ctrl == null) ctrl = addHiddenElementToForm(form, "Description");
	var qs = new Querystring('');
	qs.addElement(form, 'DescriptionAppender');
	ctrl.value = qs.toString('\n');

	// Create elements from cookies
	convertCookieToElement(form, "adWordsTracking-campaign");
	convertCookieToElement(form, "adWordsTracking-keywords");
	convertCookieToElement(form, "adWordsTracking-olp");
}

function convertCookieToElement(form, cookieName)
{
	var value = getCookie(cookieName);
	if ((value != null) && (value.length > 0))
	{
		var ctrl = form.elements[cookieName];
		if (ctrl == null) ctrl = addHiddenElementToForm(form, cookieName);
		ctrl.value = value;
	}
}

// QueryString Helpers

function Querystring(qs)
{
	this.params = {};

	// Get request querystring if none passed
	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;

	// Turn <plus> back to <space> - See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&');
	
	// split out each name=value pair
	for (var i = 0; i < args.length; i++)
	{
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);
		
		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;
		
		this.params[name] = value;
	}
}

Querystring.prototype.set = function(key, value)
{
	if ((key == null) || (key.length == 0)) return;
	
	var _value = (value != null)
		? value
		: key;

	this.params[key] = _value;
}

Querystring.prototype.get = function(key, default_)
{
	var value = this.params[key];
	return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key)
{
	var value = this.params[key];
	return (value != null);
}

Querystring.prototype.toString = function(separator)
{
	if (separator == null) separator = "&";
	var encode = ((separator == "&") || (separator == encodeURIComponent(separator)));
	var qs = "";
	for (param in this.params)
	{
		var value = this.params[param];
		qs += separator + (encode ? encodeURIComponent(param) : param);
		if (value != param) qs += "=" + (encode ? encodeURIComponent(value) : value);
	}
	if (qs.length == 0) qs = separator;
	return qs.substring(separator.length);
}

Querystring.prototype.addElement = function(form, elementName)
{
	if (form == null) return;
	if (elementName == null) elementName = "";

	var length = form.elements.length;
    for( var i = 0; i < length; i++ )
	{
        var element = form.elements[i];
		if ((elementName.length > 0) && (element.name != elementName)) continue;
		switch (element.tagName)
		{
			case "INPUT":
				switch (element.type)
				{
					case "text":
					case "hidden":
					case "password":
						this.params[element.id] = element.value;
						break;

					case "checkbox":
					case "radio":
						if (element.checked) {
							if ((element.value == null) || (element.value == '') || (element.value.toLowerCase() == 'on') )
							{
								this.params[element.id] = 'true';
							} else {
								this.params[element.id] = element.value;
							}
						}
						break;
				}
				break;

			case "TEXTAREA":
				this.params[element.id] = element.value;
				break;

			case "SELECT":
				this.params[element.id] = element.options[element.selectedIndex].value;
				break;
		}
	}
}

// Cookie Helpers

function setCookie(name, value, expiredays, path, domain, secure)
{
	var expires = new Date();
	expires.setDate(expires.getDate() + expiredays);
	var thisCookie = name + "=" + escape(value) +
        ((expiredays==null) ? "" : ";expires=" + expires.toGMTString()) +
        ((path==null) ? "" : ";path=" + path) +
        ((domain==null) ? "" : ";domain=" + domain) +
        ((secure==null) ? "" : ";secure");
	document.cookie = thisCookie;
	return thisCookie;
}

function getCookie(name)
{
    var theCookies = document.cookie.split(/[; ]+/);
    for (var i = 0 ; i < theCookies.length; i++)
	{
		var thisCookie = theCookies[i].split('=');
        if (thisCookie[0] == name)
		{
			if (thisCookie.length > 1)
			{
				return unescape(thisCookie[1]);
			} else {
				return unescape(thisCookie[0]);
			}
        }
    }
	return "";
}

function deleteCookie(name)
 {
    var aCookie = getCookie(name);
    if (aCookie)
	{
        document.cookie = name + '=' + aCookie + '; expires=Thu, 01-Jan-70 00:00:01 GMT';
        return name;
    }
}

function listCookies()
{
    var theCookies = document.cookie.split(';');
    var aString = '';
    for (var i = 1 ; i <= theCookies.length; i++)
	{
        aString += i + ' ' + theCookies[i-1] + "\n";
    }
    return aString;
}
