
var Util;
var Req;
var Int;
var Set;
var ScriptID;
var mID;
var clientfips;

function Set() {
    Req = new Request();
    Req.createCSS(contentServer + "MLG_Widget/" + widgetCss);
    addScript(LocalPath + 'getSettings.ashx?aid=k0000', "settings");
    Int = new Int();
}

function getSettings(data) {
    if(data.drxObj[0].settings[0].txtHeadLine == "") {
        Util.getElement('h1').innerHTML = ""
    }
    else {
        Util.getElement('h1').innerHTML = "<a href='http://plancompare.destinationrx.com/intermediate.aspx?aid=k0000' target='_blank'>" + data.drxObj[0].settings[0].txtHeadLine + "</a>";
    }
    Util.getElement('h2').innerHTML = data.drxObj[0].settings[0].txtSubHeadLine;
    Util.getElement('txtZipHeadLine').innerHTML = data.drxObj[0].settings[0].txtZipHeadLine;
    Util.getElement('txtDrugHeadLine').innerHTML = data.drxObj[0].settings[0].txtDrugHeadLine;
    var widgetWidth = data.drxObj[0].settings[0].widgetWidth - 10;
    var widgetHeight = data.drxObj[0].settings[0].widgetHeight;
    var mcPosition = data.drxObj[0].settings[0].mcPosition;
    
    
    Util.getElement('mcPanel').style.width = widgetWidth + "px";

    if(data.drxObj[0].settings[0].overlay == "false")
    {
        Util.getElement('mainTbl').style.display = "";
        Util.getElement('istable').value = "true";
        getmcPosition(mcPosition, widgetHeight);
    }
    if(data.drxObj[0].settings[0].overlay == "true")
    {
        Util.getElement('mcPanel').style.position = "absolute";
        Util.getElement('mcPanel').style.margin = getmcPositionfloat(widgetWidth, widgetHeight, mcPosition);
    }
    Util.getElement('drxWidget').style.width = widgetWidth + "px";
    Util.getElement('mcDrugList').style.width = widgetWidth + "px";
    
    if(data.drxObj[0].settings[0].compareRight == "true")  {
        compareBtnHeight = 101;
    }
    else {
        compareBtnHeight = 75;
        Util.getElement('startCompare').style.display = "none";
    }
    
    if(data.drxObj[0].settings[0].compareLeft == "true") {
        drugPanelHeight = widgetHeight - 174;
    }
    else {
        drugPanelHeight = widgetHeight - 149;
        Util.getElement('lnkout2').style.display = "none";
    }

    Util.getElement('mcDrugListInner').style.height = parseFloat(widgetHeight - compareBtnHeight) + "px"
    Util.getElement('zipRow').style.width = parseFloat(widgetWidth - 30) + "px";
    Util.getElement('divPanel').style.height = drugPanelHeight + "px";
    
    var widgetColor1 = data.drxObj[0].settings[0].widgetColor1;
    if(Util.getElement('h1').getElementsByTagName('a')[0]) {
        Util.setColor(Util.getElement('h1').getElementsByTagName('a')[0],widgetColor1);
    }
    var widgetColor2 = data.drxObj[0].settings[0].widgetColor2;
    Util.setColor(Util.getElement('h2') ,widgetColor2);
    Util.setColor(Util.getElement('inputZip') ,widgetColor2);
    Util.setColor(Util.getElement('inputDrug') ,widgetColor2);
    Util.setBg(Util.getElement('divPanel') ,widgetColor2);
    Util.getElement('inputZip').style.borderColor = widgetColor2;
    Util.getElement('inputDrug').style.borderColor = widgetColor2;
    for(h = 0; h < Util.getElement('headerColor').getElementsByTagName('td').length; h++) {
        Util.setBg(Util.getElement('headerColor').getElementsByTagName('td')[h] ,widgetColor2);
    }
    
    var widgetColor3 = data.drxObj[0].settings[0].widgetColor3;
    Util.setBg(Util.getElement('drxWidget') ,widgetColor3);
    Util.setBg(Util.getElement('mcPanel') ,widgetColor3);
    
    var widgetColor4 = data.drxObj[0].settings[0].widgetColor4;
    Util.setColor(Util.getElement('mcName') ,widgetColor4);
    
    if(data.drxObj[0].settings[0].showMcPanel == "true") {
        Util.getElement('mcPanel').style.display = "";
        Util.getElement('btnclose').style.display = "none";
    }
    else {
        Util.getElement('mcPanel').style.display = "none";
        Util.getElement('btnclose').style.display = "";
    }
    Util.getElement('txtdrugList').value = "";
    
    if(data.drxObj[0].settings[0].custom != "")
    {
        eval(data.drxObj[0].settings[0].custom);
    }
}



// Global Strings
var showMcPanel = true;
var MLGURL = "http://plancompare.destinationrx.com/";
var LocalPath = "http://www.drx.com/widget/";
var contentServer = "http://content.destinationrx.com/contentserver/";
var lnkDestinationRx = "http://www.drx.com";
var inputToolTip = false;
var LnkSearch = false;
var DrugSize = 25;
var widgetCss = "widget.css";
var widgetCache = "true";
var customUI = false;

function getmcPosition(mcPosition, widgetHeight) {
    var mc = Util.getElement('mcPanel');
    var ds = Util.getElement('drxWidget');
    Util.getElement('wdg').appendChild(ds);
    if(mcPosition == "1")
    {
        Util.getElement('wdg_right').appendChild(mc);
        Util.getElement('wdg_right').style.padding = '0 0 0 10px';
    }
    if(mcPosition == "2")
    {
        Util.getElement('wdg_bottom').appendChild(mc);
        Util.getElement('wdg_bottom').style.padding = '10px 0 0 0';
    }
    if(mcPosition == "3")
    {
        Util.getElement('wdg_top').appendChild(mc);
        Util.getElement('wdg_top').style.padding = '0 0 10px 0';
    }
    if(mcPosition == "4")
    {
        Util.getElement('wdg_left').appendChild(mc);
        Util.getElement('wdg_left').style.padding = '0 10px 0 0';
    }
}

function getmcPositionfloat(widgetWidth, widgetHeight, mcPosition)
{
 
    if(mcPosition == "1") {
        x = "0 0 0 " + (parseInt(widgetWidth) + 10) + "px";
    }
    if(mcPosition == "2") {
        x = (parseInt(widgetHeight) + 10) + "px" + " 0 0 0";
    }
    if(mcPosition == "3") {
        x = -(parseInt(widgetHeight) + 10) + "px" + " 0 0 0";
    }
    if(mcPosition == "4") {
        x = "0 0 0 " + -(parseInt(widgetWidth) + 10) + "px";
    }
    return x;   
}

function Int() {
    Util = new Utility();
    Util.writer(this.base('drxWidget'));

    Util.getElement('inputZip').value = "Enter your ZIP Code";
    Util.getElement('inputDrug').value = "Enter a Drug Name";

    if(inputToolTip) {
        Util.getElement('ZipToolTip').src = contentServer + "MLG_Widget/images/icon_question.gif";
        Util.getElement('DrugToolTip').src = contentServer + "MLG_Widget/images/icon_question.gif";
    }
    if(LnkSearch) {
        Util.setColor(Util.getElement('lnkSearch'),widgetColor5);
        Util.setBg(Util.getElement('lnkSearch'),widgetColor2);
    }
    
    Util.getElement('lnkFooter').href = lnkDestinationRx;
    if(Util.getElement('inputZip').value.length != 5) {
        //Util.getElement('inputDrug').readOnly = true;
    }

    Util.getElement('drxWidget').style.display = "block";
    if(inputToolTip) {
        Util.getElement('h1ToolTip').src = contentServer + "MLG_Widget/images/icon_moreinfo.gif";
        Util.getElement('h1ToolTip').style.marginTop = "-26px";
    }
    
    Util.getElement('inputZip').onkeyup = function() {
        if(this.value.length == 5) {
            Util.getElement('inputDrug').readOnly = false;
        }
        else {
            Util.getElement('inputDrug').readOnly = true;
            Util.getElement('inputDrug').value = "";
            Util.getElement('divPanel').innerHTML = "";
        }
    }
    
    Util.getElement('inputZip').onblur = function() {
        addScript(LocalPath + "getCounty.ashx?zip=" + this.value, "fips");
        if(this.value == "") {
            this.value = "Enter your ZIP Code";
        }
    }
    
    Util.getElement('inputDrug').onblur = function() {
        if(this.value == "") {
            this.value = "Enter a Drug Name";
        }
    }
    
    Util.getElement('inputZip').onfocus = function() {
        Util.getElement('inputZip').maxLength = 5;
        this.value = "";
        if(this.parentNode.getElementsByTagName('span')[0]) {
            this.style.backgroundColor = "#ffffff";
            this.parentNode.removeChild(this.parentNode.getElementsByTagName('span')[0]);
        }
    }

    Util.getElement('inputDrug').onblur = function() {
        if(this.value == "") {
            this.value = "Enter a Drug Name";
        }
    }

    Util.getElement('inputDrug').onkeyup = function() {
        if(this.value == "") {
            Util.getElement('divPanel').innerHTML = "";
        }
        else {
            if(!Util.getElement('inputZip').parentNode.getElementsByTagName('span')[0])
            {
                addScript(LocalPath + "searchDrug.ashx?drugname=" + this.value, "searchID");
            }
            else
            {
                Util.getElement('divPanel').innerHTML = "";
            }
        }
    }
    Util.getElement('poweredbycontainer').style.height = "30px";
    Util.getElement('headerHeight').style.height = "30px";
}

Int.prototype.base = function(id) {
    var x = "";
    x += "<div id='mcPanel' style='display:none'>";
    x += "<div class='poweredbycontainer' id='poweredbycontainer'><a target='_blank' id='lnkFooter'><img src='" + contentServer + "MLG_Widget/images/poweredby.gif' alt='powered by DestinationRx' border='0'/></a></div>";
    x += "<table cellpadding='0' cellspacing='0' border='0' width='100%' id='mcTable'>";
    x += "<tr class='mcHeaderTop' id='headerColor'><td style='height:26px'><img src='" + contentServer + "MLG_Widget/images/corner_topLeft.gif' /></td><td style='height:26px'><h5 id='mcName'>+ Medicine Cabinet</h5>";
    x += "<img src='" + contentServer + "MLG_Widget/images/btnclose.gif' onclick='Util.getElement(\"mcPanel\").style.display = \"none\";' alt='close' id='btnclose' class='btnclose'/></td><td align='right' style='height:26px'><img src='" + contentServer + "MLG_Widget/images/corner_topRight.gif' /></td></tr>";
    x += "<tr><td></td><td id='mcDrugList'><div id='mcDrugListInner'class='mcInner'></div>";
    x += "<a href='javascript:void(0)' id='startCompare' class='startCompare' onclick='linkout(this)'></a>";
    x += "</td><td></td></tr>";
    x += "<tr><td><img src='" + contentServer + "MLG_Widget/images/corner_bottomLeft.gif' /></td><td></td><td align='right'><img src='" + contentServer + "MLG_Widget/images/corner_bottomRight.gif' /></td></tr>";
    x += "</table>";
    x += "</div>";
    x += "<div id='" + id + "' style='display:none'>";
    x += "<div id='headerHeight'><span id='h1'></span>";
    x += "<span id='h2'></span></div>";
    if(inputToolTip) {
        x += "<img src='' id='h1ToolTip'/>";
    }
    x += "<table cellpadding='0' cellspacing='0' border='0' width='100%' id='uiTable'>";
    x += "<tr id='uiTop'><td><img src='" + contentServer + "MLG_Widget/images/corner_topLeft.gif' /></td><td></td><td align='right'><img src='" + contentServer + "MLG_Widget/images/corner_topRight.gif' /></td></tr>";
    x += "<tr><td></td><td id='zipRow'><span id='txtZipHeadLine'></span></td><td></td></tr>";
    x += "<tr class='inputRow'><td></td><td>";
    if(inputToolTip) {
        x += "<img src='' id='ZipToolTip'/>";
    }
    x += "<input id='inputZip'/></td><td></td></tr>";
    x += "<tr><td></td><td><span id='txtDrugHeadLine'></span></td><td></td></tr>";
    x += "<tr class='inputRow'><td></td><td>";
    if(inputToolTip) {
        x += "<img src='' id='DrugToolTip'/>";
    }
    x += "<input id='inputDrug'/>";
    if(LnkSearch) {
        x += "<a href='javascript:void(0)' id='lnkSearch'>Search</a>";
    }
    x += "</td><td></td></tr>";
    x += "<tr><td></td><td><div id='divPanel'></div></td><td></td></tr>";
    x += "<tr><td></td><td><a href='javascript:void(0)' id='lnkout2' class='startCompare' onclick='linkout(this)'></a></td><td></td></tr>";
    x += "<tr id='uiBottom'><td><img src='" + contentServer + "MLG_Widget/images/corner_bottomLeft.gif' /></td><td></td><td align='right'><img src='" + contentServer + "MLG_Widget/images/corner_bottomRight.gif' /></td></tr>";
    x += "</table><input id='txtFips' type='hidden' /><input id='txtdrugList' type='hidden' /><input id='urloutput' type='hidden' /><input id='istable' value='' type='hidden' /></div>";
    x += "<table cellpading='0' cellspacing='0' id='mainTbl' border='0' style='padding:0 0 0 0;text-align:left;display:none'><tbody>";
    x += "<tr><td></td><td id='wdg_top'></td><td></td></tr>";
    x += "<tr><td id='wdg_left'></td><td id='wdg'></td><td id='wdg_right'></td></tr>";
    x += "<tr><td></td><td id='wdg_bottom'></td><td></td></tr>";
    x += "</tbody></table>";
    return x;
}

function Utility() {
    
}

Utility.prototype.setBg = function(element, value) {
    element.style.backgroundColor = value;
}

Utility.prototype.setColor = function(element, value) {
    element.style.color = value;
}

Utility.prototype.writer = function(string) {
    document.write(string);
}

Utility.prototype.getID = function(id) {
    var x = document.getElementById(id);
    return x;
}

Utility.prototype.formatDrug = function(string, num) {
    if(string.length > num) {
        var x = string.substring(0, num) + "...";
        return x;
    }
    else {
        var x = string;
        return x;
    }
}

Utility.prototype.setCookie = function(name, value) {
	//addScript(LocalPath + "setCookie.ashx?Name=" + name + "&Value=" + value, "setCookie");	
}

Utility.prototype.getCookie = function(name)
{
	if(document.cookie) {
		index = document.cookie.indexOf(name);
		if (index != -1) {
			namestart = (document.cookie.indexOf("=", index) + 1);
			nameend = document.cookie.indexOf(";", index);
			if (nameend == -1) {
				nameend = document.cookie.length;
			}
			YouWrote = document.cookie.substring(namestart, nameend);
			return YouWrote;
		}
	}
}

Utility.prototype.getTag = function(tag, parent) {
    var x = parent.getElementsByTagName(tag);
    return x;
}

Utility.prototype.getElement = function(element) {
    if(typeof (element) == "object") {
        return element;
    }
    else if(this.getID(element)) {
        return this.getID(element);
    }
}

function Request(fullUrl) {
    this.fullUrl = fullUrl;
    if(widgetCache) { 
        this.noCacheIE = '';
    }
    else {
        this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
    }
    this.headLoc = document.getElementsByTagName("head").item(0);
    this.scriptId = 'DrxJscriptId' + Request.scriptCounter++;
}

Request.scriptCounter = 1;

Request.prototype.buildScriptTag = function (id) {
    this.scriptObj = document.createElement("script");
    this.scriptObj.setAttribute("type", "text/javascript");
    this.scriptObj.setAttribute("src", this.fullUrl);
    this.scriptObj.setAttribute("id", id);
}

Request.prototype.createCSS = function (url) {
	this.CssObj = document.createElement("link");
	this.CssObj.setAttribute("rel", "stylesheet");
	this.CssObj.setAttribute("type", "text/css");
	this.CssObj.setAttribute("href", url);
	this.headLoc.appendChild(this.CssObj);
}

Request.prototype.removeScriptTag = function () {
    this.headLoc.removeChild(this.scriptObj);  
}

Request.prototype.addScriptTag = function () {
    this.headLoc.appendChild(this.scriptObj);
}

function addScript(datasource, id) {
	var request = new Request(datasource);      
	request.buildScriptTag(id);    
	request.addScriptTag();
}

function build() { 
    Set = new Set();
}

build();

function searchDrug(data)
{   
    Util.getElement('divPanel').innerHTML = "<span id='preload'>Loading...</span>";
    if(data.drxObj[0].Root || data.drxObj[0].Drug[0].nodata) {
        var error = document.createElement('span');
        error.setAttribute('class', 'nodrug');
        error.setAttribute('className', 'nodrug');
        error.innerHTML = "No data available.";
        Util.getElement('divPanel').appendChild(error);
    }
    else {
        for(var i = 0; i < data.drxObj[0].Drug.length; i++) {
            var lnk = document.createElement('a');
            lnk.href = "javascript:void(0)";
            lnk.name = i;
            lnk.onclick = function() {
                addDrugtoMC(data.drxObj[0].Drug[this.name].drug_id, data.drxObj[0].Drug[this.name].drug_dsg_id, data.drxObj[0].Drug[this.name].drug_name);
            }           
            lnk.style.height = DrugSize + "px";
            lnk.style.lineHeight = DrugSize + "px";
            lnk.innerHTML = "<b>" + Util.formatDrug(data.drxObj[0].Drug[i].drug_name, 20) + "</b>" + "<strong>+add</strong>";
            Util.getElement('divPanel').appendChild(lnk);
        }
    }
    if(Util.getElement('preload')) {
         Util.getElement('preload').parentNode.removeChild(Util.getElement('preload'));
    }
    if(Util.getElement(ScriptID)) {
        Util.getElement(ScriptID).parentNode.removeChild(Util.getElement(ScriptID));
    }
}

function addDrugtoMC(drug_id, drug_dsg_id, drugName) {
    if(Util.getID(drug_id)) {

    }
    else {
        zip = Util.getElement('inputZip').value;
        var drugList = Util.getID('mcDrugList').getElementsByTagName('div')[0];
        drugList.innerHTML += "<div class='drugItem' id='" + drug_id + "'><span>" +  Util.formatDrug(drugName, 18) + "</span><a href='javascript:void(0)' onclick='removefromMC(this.parentNode.id)'>-remove</a></div>";
        if(Util.getID('mcPanel').getElementsByTagName('a').length > 0) {
            Util.getID('mcPanel').style.display = "";
        }
        Util.getElement('txtdrugList').value = "";
        for(d = 0; d < Util.getID('mcDrugList').getElementsByTagName('span').length; d++)
        {
            if(d == Util.getID('mcDrugList').getElementsByTagName('span').length - 1)
            {
                Util.getElement('txtdrugList').value += Util.getID('mcDrugList').getElementsByTagName('span')[d].parentNode.id;
            }
            else
            {
                Util.getElement('txtdrugList').value += Util.getID('mcDrugList').getElementsByTagName('span')[d].parentNode.id + ",";
            }
        }
            
    }
}

function removefromMC(id) {
    Util.getID(id).parentNode.removeChild(Util.getID(id));

}

function getMedicineCabinet(data) {
    var drugList = Util.getID('mcDrugList').getElementsByTagName('div')[0];
    drugList.innerHTML = "";
    if(mID == null) {
        mID = data.drxObj[0].id[0].id;
    }
    if(data.drxObj.length > 1)
    {
        for(m = 0; m < data.drxObj[1].drug.length; m++)
        {
            Util.getID('mcPanel').style.display = "";
            drugList.innerHTML += "<div class='drugItem' id='" + data.drxObj[1].drug[m].drug_dsg_id + "'><span>" + data.drxObj[1].drug[m].drug_name + "</span><a href='javascript:void(0)' onclick='removefromMC(this.parentNode.id)'>-remove</a></div>";
        }
    }
    Util.getElement('mc').parentNode.removeChild(Util.getElement('mc'));

}

function getCountiesByZip(data)
{
    if(data.drxObj[0].CountyFips[0].fips == "null")
    {
        Util.getID('inputZip').style.backgroundColor = "#FFF000";
        var valid = document.createElement('span');
        valid.setAttribute('class', 'zipvalidation');
        valid.setAttribute('className', 'zipvalidation');
        valid.innerHTML = "invalid zip";
        Util.getID('inputZip').parentNode.appendChild(valid);
    }
    else
    {
        if(data.drxObj[0].CountyFips.length > 1)
        {
            clientfips = data.drxObj[0].CountyFips[0].fips;
            Util.getElement('txtFips').value = data.drxObj[0].CountyFips[0].fips;
        }
        if(data.drxObj[0].CountyFips.length == 1 && data.drxObj[0].CountyFips[0].fips != "null")
        {
            clientfips = data.drxObj[0].CountyFips[0].fips;
            Util.getElement('txtFips').value = data.drxObj[0].CountyFips[0].fips;
        }
    }
}

function linkout(el) {
    if(Util.getID('inputZip').value.length == 5)
    {
        if(!Util.getElement('inputZip').parentNode.getElementsByTagName('span')[0])
        {
            urlString = MLGURL + "intermediate.aspx?zip=" + Util.getID('inputZip').value + "&fips=" + Util.getElement('txtFips').value + "&aid=k0000&drugList=" + Util.getElement('txtdrugList').value;
            Util.getElement('urloutput').value = urlString;
            el.target = "_blank";
            el.href = urlString;
            //window.open(urlString);
        }
    }
}
