﻿function $() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);
        if (arguments.length == 1)
            return element;
        elements.push(element);
    }
    return elements;
}

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}

function GetXmlHttpObject() {
    var xmlHttp = null;
    try {xmlHttp = new XMLHttpRequest();}
    catch (e) {
        try {xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");}
        catch (e) {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}
    }
    return xmlHttp;
}

function ChangeFolder(img, prefix, num) {
    if (img) {
        if (img.src.search(/Images\/UI\/foldermain/) > 0) {
            img.src = img.src.replace("Images/UI/foldermain", "Images/UI/folderplus");
            for (var i = 1; i <= num; i++)
                $(prefix + i).style.display = 'none';
        }
        else {
            img.src = img.src.replace("Images/UI/folderplus", "Images/UI/foldermain");
            for (var j = 1; j <= num; j++)
                $(prefix + j).style.display = 'block';
        }
    }
    return false;
}

function ClickSourceTypeClick(sender) {
    var checkboxes = $("cscontainer");
    var searchtext = $('cstext');
    var divselect = $('divselect');
    checkboxes.innerHTML = "";
    checkboxes.style.display = "none";
    searchtext.style.display = "none";
    divselect.style.display = "none";
    var commandarg = parseInt(sender.value, 10);
    if (commandarg == 1) return;
    var url = null;
    if(commandarg == 5)
        searchtext.style.display = "inline";
     else {
         var xmlHttp = GetXmlHttpObject();
         if (xmlHttp == null) {
             alert("Your browser does not support AJAX!");
             return false;
         }
        if (commandarg == 2) {
            url = '../../Handlers/ListTemplate.ashx?id=' + encodeURI(new Date()) + "&kwid=" + encodeURI(commandarg);
        }
        else if (commandarg == 3 || commandarg == 4) {
            url = '../../Handlers/ListClickSource.ashx?id=' + encodeURI(new Date()) + "&csid=" + encodeURI(commandarg);      
        }
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                if (commandarg == 4) {
                   divselect.innerHTML = xmlHttp.responseText;
                    checkboxes.style.display = "none";
                    divselect.style.display = "block"; 
                }
                else {
                    checkboxes.innerHTML = xmlHttp.responseText;
                    checkboxes.style.display = "block";
                    divselect.style.display = "none";
                }
            }
        };
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);
    }
}

function CollectIds(containerId) {
    var container = $(containerId);
    if (container) {
        var checkboxes = container.getElementsByTagName("input");
        var ids = "";
        for (var i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].type == "checkbox" && checkboxes[i].checked ) {
                ids += checkboxes[i].value+",";                
            }
        }
        return (ids.length > 0)? ids.substr(0, ids.lastIndexOf(",")):"";
    }
}

function CollectSelectIds(containerId) {
    var csSelect = $(containerId);
    if (csSelect) {
        var ids = "";
        for (var i = 0; i < csSelect.options.length; i++) {
            if (csSelect.options[i].selected) {
                ids += csSelect.options[i].value + ",";
            }
        }
        return (ids.length > 0) ? ids.substr(0, ids.lastIndexOf(",")) : "";
    }

}

function SelectAll(sender,contanierId) {
    var container = $(contanierId);
    if (contanierId) {
        var checkboxes = container.getElementsByTagName("input");
        for (var i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].type == "checkbox") {
                checkboxes[i].checked = sender.checked;
            }
        }
    }
}
function GoMapping(url,id) {
    window.location = url + '?id=' + id;
    return false;
}

function reportTypeChanged(sender) {
    var optionValue = sender.options[sender.selectedIndex].value;
    var typeid = parseInt(optionValue, 10);
    var clicksRow = $('clicksRow');
    clicksRow.style.display = "block";
    if (typeid >= 4 && typeid <= 7)
        clicksRow.style.display = "none";    
}

Array.prototype.toString = function()
{
        var msg = "";
        for (var i = 0; i < this.length; i++) {
            msg += this[i] + '\r';
        }
        return msg;
}

function ValidationResult() {   
}

ValidationResult.prototype = {
     IsValid : true,
     MessageList : new Array(),
     QueryString : new String()
}

function ValidateDates() {
    var result = new ValidationResult();
    result.MessageList = new Array();
    var startDateText = $('startDate').value;
    var endDateText = $('endDate').value;
    var rx = new RegExp("(\\d{1,2})\\-(\\d{1,2})\\-(\\d{4})");
    var mstart = startDateText.match(rx);
    var startDate= new Date();
    if (mstart != null) {
        startDate.setFullYear(parseInt(mstart[3],10),parseInt(mstart[1],10)-1,parseInt(mstart[2],10));
    }
    else{
        result.IsValid = false;
        result.MessageList.push('Please specify a valid start date.');
    }
    var mend = endDateText.match(rx);
    var endDate= new Date();
  
    if (mend != null) {
        endDate.setFullYear(parseInt(mend[3], 10), parseInt(mend[1], 10) - 1, parseInt(mend[2], 10));
    }
    else {
        result.IsValid = false;
        result.MessageList.push('Please specify a valid end date.');
    }
    
    if (result.IsValid) {
        if (startDate > endDate) {
            result.IsValid = false;
            result.MessageList.push('Start date can not be greater than end date.');
        }
        else {
            result.QueryString = "&sd=" + encodeURI(startDateText) + "&ed=" + encodeURI(endDateText);
        }
    }
    return result;
}

function ValidateClickSource() {
    var result = new ValidationResult();
    result.MessageList = new Array();
    var csAll = $('csAll');
    var csTemplate = $('csTemplate'); 
    var csSpecific = $('csSpecific');
    var csDropDown = $('csDropdown');
    var csContains = $('csContains');
    var ids = null;
    if (csAll.checked) {
        result.QueryString = "&cstype=" + encodeURI(csAll.value);
    }
    else if (csTemplate.checked) {
        ids = CollectIds('cscontainer');
        if (ids.length > 0) {
            result.QueryString = "&cstype=" + encodeURI(csTemplate.value) + "&csids=" + encodeURI(ids);
        }
        else {
            result.IsValid = false;
            result.MessageList.push("Please select a template.");
        }    
    }
    else if (csSpecific.checked) {
        ids = CollectIds('cscontainer');
        if (ids.length > 0) {
            result.QueryString = "&cstype=" + encodeURI(csSpecific.value) + "&csids=" + encodeURI(ids);
        }
        else {
            result.IsValid = false;
            result.MessageList.push("Please select a click source.");
        }
    }
    else if (csDropDown.checked) {
        ids = CollectSelectIds('csSelect');
        if (ids.length > 0) {
            result.QueryString = "&cstype=" + encodeURI(csDropDown.value) + "&csids=" + encodeURI(ids);
        }
        else {
            result.IsValid = false;
            result.MessageList.push("Please select a click source.");
        }
    }
    else if (csContains.checked) {
        var searchText = $('cstext').value.trim();

        if (searchText.length > 0) {
            result.QueryString = "&cstype=" + encodeURI(csContains.value) + "&csst=" + encodeURI(searchText);
        }
        else {
            result.IsValid = false;
            result.MessageList.push("Please enter the click source search text.");
        }
    }
    return result;
}

function AcquisitionSearch_Click(keywordStatusId) {
    var isValid = true;
    var errorMessage = "";
    var validateDatesResult = ValidateDates();
    var date = new Date();
    var url = "../../Handlers/ListAcquisition.ashx?id="+encodeURI(date);
    if (validateDatesResult.IsValid) {
       url += validateDatesResult.QueryString;
    }
    else{
        isValid = false;
        errorMessage += validateDatesResult.MessageList.toString();
    }
    var validateClickSourceResult = ValidateClickSource();
    if (validateClickSourceResult.IsValid) {
        url += validateClickSourceResult.QueryString;
    }
    else {
        isValid = false;
        errorMessage += validateClickSourceResult.MessageList.toString();
    }

    var keywordStatus = $(keywordStatusId);

    var ksidIndexvalue = keywordStatus.options[keywordStatus.selectedIndex].value;
    var ksid = parseInt(ksidIndexvalue, 10);

    if (ksid >= 0) {
        url = url + '&ksid=' + ksid; 
    }
    else {
        isValid = false;
        errorMessage += 'Please specify a valid keyword status.';
    }

    if (isValid) {
        BuildAcquisitionTable(url);
    }
    else {
        alert(errorMessage);
    }
}

function BuildAcquisitionTable(url) {
    var xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return false;
    }
    var acquisitionDataTable = $("acquisitionDataTable");
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            acquisitionDataTable.innerHTML = xmlHttp.responseText;
            acquisitionDataTable.style.display = "block";
        }
    };
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

function DeleteAcquisition(id, url) {
    if (confirm("Do you want to delet acquisition id =" + id+"?")) {
        var xmlHttp = GetXmlHttpObject();
        if (xmlHttp == null) {
            alert("Your browser does not support AJAX!");
            return false;
        }
        var date = new Date();
        var deleteUrl = "../../Handlers/DeleteAcquisition.ashx?date="+date+"&id="+encodeURI(id);
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.responseText.length == 0) {
                    BuildAcquisitionTable("../../Handlers/ListAcquisition.ashx" + url);
                    alert("Acquisition ID=" + id + " has been deleted");
                }
                else {
                    alert(xmlHttp.responseText);
                }
            }
        };
        xmlHttp.open("GET", deleteUrl, true);
        xmlHttp.send(null);
    }
}

///ClickDetail
function ClickDetailSearch_Click() {
    var isValid = true;
    var errorMessage = "";
    var validateDatesResult = ValidateDates();
    var date = new Date();
    var url = "../../Handlers/ListClickDetail.ashx?id=" + encodeURI(date);
    if (validateDatesResult.IsValid) {
        url += validateDatesResult.QueryString;
    }
    else {
        isValid = false;
        errorMessage += validateDatesResult.MessageList.toString();
    }
    var validateClickSourceResult = ValidateClickSource();
    if (validateClickSourceResult.IsValid) {
        url += validateClickSourceResult.QueryString;
    }
    else {
        isValid = false;
        errorMessage += validateClickSourceResult.MessageList.toString();
    }

    var ip = $('tbIP');
    if (isValid) {
        url += "&ip="+ ip.value.trim();
        BuildClickDetailTable(url);
    }
    else {
        alert(errorMessage);
    }
}

function BuildClickDetailTable(url) {
    var xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return false;
    }
    var clickDetailDataTable = $("clickDetailDataTable");
    clickDetailDataTable.style.display = "none";
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            clickDetailDataTable.innerHTML = xmlHttp.responseText;
            clickDetailDataTable.style.display = "block";
        }
    };
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

function DeleteClickDetail(id, url) {
    if (confirm("Do you want to delet click detail id =" + id+"?")) {
        var xmlHttp = GetXmlHttpObject();
        if (xmlHttp == null) {
            alert("Your browser does not support AJAX!");
            return false;
        }
        var date = new Date();
        var deleteUrl = "../../Handlers/DeleteClickDetail.ashx?date=" + date + "&id=" + encodeURI(id);
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 4) {
                if (xmlHttp.responseText.length == 0) {
                    BuildClickDetailTable("../../Handlers/ListClickDetail.ashx" + url);
                    alert("Click detail ID=" + id + " has been deleted");
                }
                else {
                    alert(xmlHttp.responseText);
                }
            }
        };
        xmlHttp.open("GET", deleteUrl, true);
        xmlHttp.send(null);
    }
}

//Reports
function ReportSearch_Click() {
    var isValid = true;
    var errorMessage = "";
    var validateDatesResult = ValidateDates();
    var date = new Date();
    var reportType = $('reportType');
    var reportTypeIdvalue = reportType.options[reportType.selectedIndex].value;
    var rt = parseInt(reportTypeIdvalue, 10);
    var url = "../../Handlers/";
    switch (rt) {
        case 1:
            url += "ListConversionRate.ashx";
            break;
        case 2:
            url += "ListClicksByKeyword.ashx";
            break;
        case 3:
            url += "ListClicksBySource.ashx";
            break;
        case 4:
            url += "ListAcquisitionsByType.ashx";
            break;
        case 5:
            url += "ListAcquisitionsByKeyword.ashx";
            break;
        case 6:
            url += "ListAcquisitionsBySource.ashx";
            break;
        case 7:
            url += "ListConversionTime.ashx";
            break;
        default:
            isValid = false;
            errorMessage +="Please specify a valid report type.\r";
            break;

    }
    if (isValid)
        url += ("?id=" + encodeURI(date)+"&rt="+encodeURI(rt));
    
    if (validateDatesResult.IsValid) {
        url += validateDatesResult.QueryString;
    }
    else {
        isValid = false;
        errorMessage += validateDatesResult.MessageList.toString();
    }
    var validateClickSourceResult = ValidateClickSource();
    if (validateClickSourceResult.IsValid) {
        url += validateClickSourceResult.QueryString;
    }
    else {
        isValid = false;
        errorMessage += validateClickSourceResult.MessageList.toString();
    }
  
    var clicks = $('clicks');
    var clicksvalue = clicks.options[clicks.selectedIndex].value;
    var ck = parseInt(clicksvalue, 10);
    if (ck > 0) {
        url +=("&ck="+encodeURI(ck));
    }
    else {
        isValid = false;
        errorMessage += "Please specify a valid minimum clicks.\r";
    }
    var pageSize = $('pageSize');
    var pageSizevalue = pageSize.options[pageSize.selectedIndex].value;
    var mr = parseInt(pageSizevalue, 10);
    if (mr > 0) {
        url += ("&mr=" + encodeURI(mr));
    }
    else {
        isValid = false;
        errorMessage += "Please specify a valid results per page.\r";
    }

    if (isValid) {
        BuildReportTable(url);
    }
    else {
        alert(errorMessage);
    }
}

function BuildReportTable(url) {
    var xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return false;
    }
    var reportContent = $("reportContent");
    reportContent.style.display = "none";
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            reportContent.innerHTML = xmlHttp.responseText;
            reportContent.style.display = "block";
        }
    };
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}


function EditClickSourceKeyword(sender, id) {
    var btnCancel = $('cancel' + id);
    var btnSave = $('save' + id);
    var cpc =$('cpc'+id)
    var cpctext = $('cpctext' + id);
    var status = $('status' + id);
    var statusdrop = $('statusdrop' + id);
    if (btnSave && btnCancel) {
        btnCancel.style.display = "inline";
        btnSave.style.display = "inline";
        cpctext.style.display = "inline";
        statusdrop.style.display = "inline";
        cpc.style.display = "none";
        status.style.display = "none";
        sender.style.display = "none";
        cpctext.value = cpc.innerHTML;
        for (var i = 0; i < statusdrop.options.length; i++) {
            if (statusdrop.options[i].text.toLowerCase() == status.innerHTML.toLowerCase())
                statusdrop.options[i].selected = true;
        }
        
    }
    
}

function IsNumeric(strString)
{
    var strValidChars = "0123456789.-";
    var strChar;
    var blnResult = true;

    if (strString.length == 0) return false;
    for (i = 0; i < strString.length && blnResult == true; i++) {
        strChar = strString.charAt(i);
        if (strValidChars.indexOf(strChar) == -1) {
            blnResult = false;
        }
    }
    return blnResult;
}

function GenerateLinks_Click() {
    var isValid = true;
    var errorMessage = "";
    var date = new Date();
    var querystring = "?id=" + encodeURI(date)+encodeURI("&sd=04-01-2009&ed=04-01-2009");

    var validateClickSourceResult = ValidateClickSource();
    if (validateClickSourceResult.IsValid) {
        querystring += validateClickSourceResult.QueryString;
    }
    else {
        isValid = false;
        errorMessage += validateClickSourceResult.MessageList.toString();
    }
 
    var pageSize = $('pageSize');
    var pageSizevalue = pageSize.options[pageSize.selectedIndex].value;
    var mr = parseInt(pageSizevalue, 10);
    if (mr > 0) {
        querystring += ("&mr=" + encodeURI(mr));
    }
    else {
        isValid = false;
        errorMessage += "Please specify a valid results per page.\r";
    }

    var output = $('output');
    var outputid = output.options[output.selectedIndex].value;
    var op = parseInt(outputid, 10);
    if (isValid) {
        if (op == 2) {
            window.open("LinkOutput.aspx?" + querystring, 'generatelink'); 
        }
        else {
            var url = "../../Handlers/GenerateLink.ashx" + querystring;
            BuildLinkTable(url);
        }     
    }
    else {
        alert(errorMessage);
    }
}

function BuildLinkTable(url) {
    var xmlHttp = GetXmlHttpObject();
    if (xmlHttp == null) {
        alert("Your browser does not support AJAX!");
        return false;
    }
    var linkContent = $("linkContent");
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            linkContent.innerHTML = xmlHttp.responseText;
            linkContent.style.display = "block";
        }
    };
    xmlHttp.open("GET", url, true);
    xmlHttp.send(null);
}

function TextChanged(id) {
    var div = $('div_' + id);
    var hiddenflag = $('hidden_flag_' + id);    
    var cpc = $('cpc_' + id);
    var hiddencpc = $('hidden_cpc_' + id);    
    var hiddenstatus = $('hidden_status_' + id);
    var selectstatus = $('status_' + id);
    var index = selectstatus.options[selectstatus.selectedIndex].value;

    if ((parseFloat(cpc.value) != parseFloat(hiddencpc.value)) || (index != hiddenstatus.value)) {
        if (IsNumeric(cpc.value)){
            div.style.backgroundColor = "#FFCC80";
            hiddenflag.value = '1';
        }
        else{
            alert("CPC is not a number!");
            cpc.focus();
        }
    }
    else {
        div.style.backgroundColor = "#D2D2CC";
        hiddenflag.value = '0';
    }
}

function Update() {
    var content = $('reportContent');
    var flags = content.getElementsByTagName('input');
    var xmlHttp = new Array();
    for (var i = 0; i < flags.length; i++) {
        if (flags[i].type == 'hidden' && flags[i].className == 'hide' && flags[i].value == '1') {
            var id = flags[i].id.replace('hidden_flag_', '');
            var div = $('div_' + id);
            var hiddenflag = $('hidden_flag_' + id);
            var cpc = $('cpc_' + id);
            var hiddencpc = $('hidden_cpc_' + id);
            var hiddenstatus = $('hidden_status_' + id);
            var selectstatus = $('status_' + id);
            var index = selectstatus.options[selectstatus.selectedIndex].value;

            var url = "../../Handlers/UpdateClickSourceKeyword.ashx?sid=" + encodeURI(new Date()) + "&id=" + encodeURI(id) + "&cpc=" + encodeURI(cpc.value) + "&kwid=" + encodeURI(index);
            xmlHttp[i] = GetXmlHttpObject();
            if (xmlHttp[i] == null) {
                alert("Your browser does not support AJAX!");
                return;
            }
            xmlHttp[i].onreadystatechange = function(idx, id) {
              return  function() {
                    if (xmlHttp[idx].readyState == 4) {
                        if (xmlHttp[idx].responseText == '1') {
                            var div1 = $('div_' + id);
                            var hiddenflag1 = $('hidden_flag_' + id);
                            var cpc1 = $('cpc_' + id);
                            var hiddencpc1 = $('hidden_cpc_' + id);
                            var hiddenstatus1 = $('hidden_status_' + id);
                            var selectstatus1 = $('status_' + id);
                            var index1 = selectstatus1.options[selectstatus1.selectedIndex].value;
                            hiddenflag1.value = '0';
                            hiddencpc1.value = cpc.value;
                            hiddenstatus1.value = index1;
                            div1.style.backgroundColor = "#D2D2CC";
                        }
                        else {
                            alert(xmlHttp[idx].responseText);
                        }
                    }
                }
            } (i, id);
            xmlHttp[i].open("GET", url, true);
            xmlHttp[i].send(null);
        }
    }
}

/////

function getIFrameWnd(action){
    var ifr = $("xslFrame");
    if( !ifr ){
        var frame = document.createElement("iframe");
        frame.name = "xslFrame";
        frame.id = "xslFrame";

        document.body.appendChild(frame);
        frame.style.width = "0px";
        frame.style.height = "0px";
        frame.style.border = "0px";

        var frameWnd = window.frames["xslFrame"];
        var content = "<form id='frm' method='post' enctype='application/data' action='"+ action+"'></form>";
        frameWnd.document.open();
        frameWnd.document.write(content);
        frameWnd.document.close();
    }           
    var wnd =  window.frames["xslFrame"];        
    return wnd;
}

function ExportToExcel(action) {
    var frmWnd = getIFrameWnd(action);
    var frm = frmWnd.document.getElementById("frm");
    frm.submit();
}