﻿var SAVEOLOGY = {
    SearchWidget: function(dvContainer) {
        var private = {
            dvSearchWidget: document.createElement('div'),
            dvSearchHeader: document.createElement('div'),
            dvSearchFields: document.createElement('div'),
            Fields: {
                ulFields: document.createElement('ul'),
                txtAddress: document.createElement('input'),
                txtAddress2: document.createElement('input'),
                txtZip: document.createElement('input'),
                btnSubmit: document.createElement('div'),
                keypressed: function(e) {
                    var evt = (e) ? e : (window.event) ? window.event : null;
                    var key = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0));

                    if (key == '13') { this.onsubmit(); return false; }
                },
                Init: function() {
                    private.dvSearchWidget.className = "clsWidgetBox";
                    private.dvSearchHeader.className = "clsWidgetHeader";
                    this.btnSubmit.className = "clsWidgetButton";
                    this.ulFields.className = "clsWidgetFields";
                    this.btnSubmit.onclick = createObjectCallback(this, this.onsubmit);
                    document.onkeypress = createObjectCallback(this, this.keypressed);

                    this.txtAddress.size = 28;
                    this.txtZip.size = 5;
                    this.txtZip.style.width = "5em";
                    this.txtZip.maxLength = 5;
                    this.txtAddress2.size = 10;
                    this.txtAddress2.style.width = "5em";
                    this.txtAddress2.maxLength = 10;

                    this.ulFields.innerHTML

                    this.Add('Street Address: ', this.txtAddress);
                    this.Add('Apt #: ', this.txtAddress2);
                    this.Add('Zip Code: ', this.txtZip);

                    private.dvSearchFields.appendChild(this.ulFields);

                    private.dvSearchWidget.appendChild(private.dvSearchHeader);
                    private.dvSearchWidget.appendChild(private.dvSearchFields);
                    private.dvSearchWidget.appendChild(this.btnSubmit);
                },
                Add: function(name, field) {
                    var myDate = new Date;
                    var uniqueID = myDate.getTime();

                    var ListItem = document.createElement('li');

                    var Label = document.createElement('label');
                    Label.setAttribute('for', uniqueID);
                    Label.innerHTML = name;

                    field.setAttribute('id', uniqueID);

                    ListItem.appendChild(Label);
                    ListItem.appendChild(field);

                    this.ulFields.appendChild(ListItem);
                },
                onsubmit: function() {
                    if (private.Fields.txtAddress.value.length == 0) {
                        alert('Address is a required field');
                        return false;
                    }
                    if (private.Fields.txtZip.value.length == 0) {
                        alert('Zip code is a required field');
                        return false;
                    }
                    if (isNaN(parseInt(private.Fields.txtZip.value))) {
                        alert('Zip code must be a 5 digit number');
                        return false;
                    }
                    if (private.Fields.txtZip.value.length != 5) {
                        alert('Zip code must be a 5 digit number');
                        return false;
                    }
                    //		            if (public.selectedCategory == null)
                    //		            {
                    //			            alert('You must select a category');
                    //			            return false;
                    //		            }

    var queryString = new Querystring();
    var queryKeys = new Array("cpca", "sub", "cpao", "cpag", "kbid", "cpid", "nt", "nv");
    var trackingVar = "";
    for(var i = 0; i< queryKeys.length; i++)
    {
        var queryValue = queryString.get(queryKeys[i])
        if (queryValue != undefined)
            trackingVar += "&" + queryKeys[i] + "=" + queryValue
    }

                    var qsStart = "?";
                    if (public.RedirectURL.indexOf('?') != -1)
                        qsStart = "&";
                    url = public.RedirectURL + qsStart + 'address=' + private.Fields.txtAddress.value + '&zipcode=' + private.Fields.txtZip.value + '&suite=' + private.Fields.txtAddress2.value + '&a=' + private.Fields.txtAddress.value + ',' + private.Fields.txtAddress2.value + ',,,' + private.Fields.txtZip.value + '&c=' + public.Category + '&p='+public.Providers +  trackingVar;
                    //url = public.RedirectURL + qsStart + '&a=' + private.Fields.txtAddress.value + ',' + private.Fields.txtAddress2.value + ',,,' + private.Fields.txtZip.value + '&c=' + public.Category + '&p=' + public.Providers  + '&nt=' + public.Nt + '&nv=' + public.Nv +  '&sc=1' + trackingVar;
                    
                    if (opener != null) {
                        opener.window.location = url
                        window.close();
                    }
                    else {
                        window.open(url);
                    }
                },
                onchange: function(radioButton) {
                    this.selectedCategory = radioButton.Value;
                }
            }
            //	       Categories:{                
            //                ulCategories: document.createElement('ul'),
            //                Init: function(){
            //                    this.Add('Bundled Offers', 39);
            //		            this.Add('Television', 4);
            //		            this.Add('Internet', 2);
            //		            this.Add('Phone', 1);
            //                },
            //                Add: function(name, value){
            //		            var myDate = new Date;
            //    		        var uniqueID = myDate.getTime();

            //		            var ListItem = document.createElement('li');
            //            	
            //		            var Label = document.createElement('label');
            //		            Label.setAttribute('for', uniqueID);
            //		            Label.innerHTML = name;

            //		            var RadioButton = document.createElement('input');
            //		            RadioButton.setAttribute('type', 'radio');
            //	                RadioButton.setAttribute('name', 'category');
            //		            RadioButton.setAttribute('value', value);
            //		            RadioButton.setAttribute('id', uniqueID);
            //		            RadioButton.onchange = createObjectCallback(this, 
            //		            function(){this.selectedCategory = RadioButton.value;});
            //    	            
            //		            ListItem.appendChild(RadioButton);
            //		            ListItem.appendChild(Label);

            //		            this.ulCategories.appendChild(ListItem);
            //                 }
            //            }
        };
        var public = {
            SelectedCategory: 0,
            Providers: 3096285,
            Category: 1, /*511*/
            Nt: 0,
            Nv: 0,
            RedirectURL: 'http://homeservices.saveology.com/CompareOffers/default.aspx',
            /*RedirectURL: 'http://localhost:57275/CompareOffers/default.aspx',*/
            Init: function(dvContainer) {
                private.Fields.Init();
                //private.Categories.Init();

                dvContainer.appendChild(private.dvSearchWidget);
            },
            Submit: function() {

            }
        };
        return public;
    }
};

/* Client-side access to querystring name=value pairs
Version 1.3
28 May 2008
	
License (Simplified BSD):
http://adamv.com/dev/javascript/qslicense.txt
*/
function Querystring(qs) { // optionally pass a querystring to parse
    this.params = {};

    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('&'); // parse out name/value pairs separated via &

    // 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.get = function(key, default_) {
    if (key == null)
        return location.search.substring(1, location.search.length);
    else {
        var value = this.params[key];
        return (value != null) ? value : default_;
    }
}

Querystring.prototype.contains = function(key) {
    var value = this.params[key];
    return (value != null);
}


//*******************************//

function createObjectCallback(obj, fn) {
    return function() { fn.apply(obj, arguments); };
}

function overrideCSS()
{
  qs = new Querystring();
var cssURL =   qs.get('cssURL');
if(document.createStyleSheet) {

document.createStyleSheet(cssURL);

}

else {

var styles = "@import url('"+cssURL+"');";

var newSS=document.createElement('link');

newSS.rel='stylesheet';

newSS.href='data:text/css,'+escape(styles);

document.getElementsByTagName("head")[0].appendChild(newSS);

}


}
overrideCSS()
