﻿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,accountId) {
    var checkboxes = $("cscontainer");
    var searchtext = $('cstext');
    var divselect = $('divselect');
    var account = null;var idstr = null;
    if (accountId != null && accountId.length > 0) {
        idstr = CollectIds(accountId);
        if (idstr == null || idstr.length == 0) {
            alert("Please select an account");
            return;
        }
    }
    
    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);
        }
        if (idstr != null && idstr.length > 0)
            url += "&aid=" + encodeURI(idstr);
        
        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');
    var filterTable = $('filterTable');
    if (typeid >= 4 && typeid <= 7)
        clicksRow.style.display = "none";    
    else
        clicksRow.style.display = "table-row"; 
}

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 csSpecific = $('csSpecific');
    var csDropDown = $('csDropdown');
    var csContains = $('csContains');
    var ids = null;
    if (csAll.checked) {
        result.QueryString = "&cstype=" + encodeURI(csAll.value);
    }
    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");
    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(reportTypeId,accountId) {
    var isValid = true;
    var errorMessage = "";
    var validateDatesResult = ValidateDates();
    var date = new Date();
    var reportType = $(reportTypeId);
    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;
        case 8:
            url += "ListConversionRateByAdGroup.ashx";
            break;
        case 9:
            url += "ListConversionRateByClickSource.ashx";
            break;
        case 10:
            url += "ListConversionRateByAccount.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 (accountId != null && accountId.length > 0) {
        var account = $(accountId);
        if (account) {
            var aidstr = CollectIds(accountId);
            if (aidstr != null && aidstr.length > 0) {
                url += ("&aid=" + encodeURI(aidstr));
            }
            else {
                isValid = false;
                errorMessage += "Please specify an account";
            }
        }
    }

    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");
    var imgLoading = $("loading");
    imgLoading.style.display = "inline";
    reportContent.style.display = "none";
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            reportContent.innerHTML = xmlHttp.responseText;
            imgLoading.style.display = "none";
            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 UpdateByAdGroup() {
    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 cid = $("hidden_cid_" + id);
            var tid = $("hidden_tid_" + id);
            var url = "../../Handlers/UpdateDefaultCPC.ashx?sid=" + encodeURI(new Date()) + "&id=" + encodeURI(id) + "&cpc=" + encodeURI(cpc.value) + "&cid=" + encodeURI(cid.value) +"&kwid=" + encodeURI(index)+"&tid="+encodeURI(tid.value);
            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) {
                        var div1 = $('div_' + id);
                        div.title = null;
                        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;
                        var resId = parseInt(xmlHttp[idx].responseText, 10);
                        switch (resId) {
                            case 0:
                                div1.style.backgroundColor = "#FF0000";
                                div.title = "Updating Adwords Failed.";
                                break;
                            case 9:
                                hiddenflag1.value = '0';
                                hiddencpc1.value = cpc.value;
                                hiddenstatus1.value = index1;
                                div1.style.backgroundColor = "#D2D2CC";
                                break;
                            case 1:
                                div1.style.backgroundColor = "#FF6600";
                                div.title = "Updating Roi Failed.";
                                break;

                        }
                    }
                }
            } (i, id);
            xmlHttp[i].open("GET", url, true);
            xmlHttp[i].send(null);
        }
    }
}



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) {
                        var div1 = $('div_' + id);
                        div1.title = null;
                        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;
                        var resId = parseInt(xmlHttp[idx].responseText, 10);
                        switch (resId) {
                            case 1:
                                hiddenflag1.value = '0';
                                hiddencpc1.value = cpc.value;
                                hiddenstatus1.value = index1;
                                div1.style.backgroundColor = "#FFFFFF";
                                div1.title = "No Mapping";
                                break;
                            case 2:
                                hiddenflag1.value = '0';
                                hiddencpc1.value = cpc.value;
                                hiddenstatus1.value = index1;
                                div1.style.backgroundColor = "#FF6633";
                                div1.title = "Updating Failed";
                                break;
                            case 3:
                                hiddenflag1.value = '0';
                                hiddencpc1.value = cpc.value;
                                hiddenstatus1.value = index1;
                                div1.style.backgroundColor = "#D2D2CC";
                                break;
                            case 4:
                                hiddenflag1.value = '0';
                                hiddencpc1.value = cpc.value;
                                hiddenstatus1.value = index1;
                                div1.style.backgroundColor = "#D2D2CC";
                                div1.title = "Duplicated (keywords in different AdGroups)";
                                break;
                            case -1:
                                div1.style.backgroundColor = "#FF0000";
                                div1.title = "Updating failed.";
                                break;

                        }
                    }
                }
            } (i, id);
            xmlHttp[i].open("GET", url, true);
            xmlHttp[i].send(null);
        }
    }
}

/////

function getIFrameWnd(action) {
    var frameId = "xslFrame" + (new Date());
    var ifr = $(frameId);
    if( !ifr ){
        var frame = document.createElement("iframe");
        frame.name = frameId;
        frame.id = frameId;

        document.body.appendChild(frame);
        frame.style.width = "0px";
        frame.style.height = "0px";
        frame.style.border = "0px";

        var frameWnd = window.frames[frameId];
        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[frameId];        
    return wnd;
}

function ExportToExcel(action) {
    var frmWnd = getIFrameWnd(action);
    var frm = frmWnd.document.getElementById("frm");
    frm.submit();
}

function typeclick(val) {
    var roi = $('roi');
    var google = $('google');
    if (val == 1) {
        roi.style.display = 'block';
        google.style.display = 'none';
    }else if (val == 2) {
        roi.style.display = 'none';
        google.style.display = 'block';
    }else if (val == 3) {
        roi.style.display = 'block';
        google.style.display = 'none';
    }
}

function OnTreeClick(evt, sender, id) {
    var src = window.event != window.undefined ? window.event.srcElement : evt.target;
    if (src.type == 'checkbox') {
        if (src.id != id)
            $(id).checked = false;
    }
    else
        return;
    var isChkBoxClick = (src.tagName.toLowerCase() == "input" && src.type == "checkbox");
    if (isChkBoxClick) {
        var parentTable = GetParentByTagName("table", src);
        var nxtSibling = parentTable.nextSibling;
        if (nxtSibling && nxtSibling.nodeType == 1) {
            if (nxtSibling.tagName.toLowerCase() == "div") {
                CheckUncheckChildren(parentTable.nextSibling, src.checked);
            }
        }
        CheckUncheckParents(src, src.checked);
    }
    CheckIfAllNeedToBeSelected(sender, id);
}

function CheckIfAllNeedToBeSelected(container, id) {
    var childChkBoxes = container.getElementsByTagName("input");
    var nonSelected = true;
    var childChkBoxCount = childChkBoxes.length;
    for (var i = 0; i < childChkBoxCount; i++) {
        if (childChkBoxes[i].checked) {
            nonSelected = false;
            break;
        }
    }
//    if (nonSelected)
//        $(id).checked = true;
}
function CheckUncheckChildren(childContainer, check) {
    var childChkBoxes = childContainer.getElementsByTagName("input");
    var childChkBoxCount = childChkBoxes.length;
    for (var i = 0; i < childChkBoxCount; i++) {
        childChkBoxes[i].checked = check;
    }
}
function CheckUncheckParents(srcChild, check) {
    var parentDiv = GetParentByTagName("div", srcChild);
    var parentNodeTable = parentDiv.previousSibling;

    if (parentNodeTable) {
        var checkUncheckSwitch;

        if (check) {
            var isAllSiblingsChecked = AreAllSiblingsChecked(srcChild);
            if (isAllSiblingsChecked)
                checkUncheckSwitch = true;
            else
                return;
        }
        else {
            checkUncheckSwitch = false;
        }

        var inpElemsInParentTable = parentNodeTable.getElementsByTagName("input");
        if (inpElemsInParentTable.length > 0) {
            var parentNodeChkBox = inpElemsInParentTable[0];
            parentNodeChkBox.checked = checkUncheckSwitch;
            CheckUncheckParents(parentNodeChkBox, checkUncheckSwitch);
        }
    }
}

function AreAllSiblingsChecked(chkBox) {
    var parentDiv = GetParentByTagName("div", chkBox);
    var childCount = parentDiv.childNodes.length;
    for (var i = 0; i < childCount; i++) {
        if (parentDiv.childNodes[i].nodeType == 1) {
            if (parentDiv.childNodes[i].tagName.toLowerCase() == "table") {
                var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0];
                if (!prevChkBox.checked) {
                    return false;
                }
            }
        }
    }
    return true;
}

function GetParentByTagName(parentTagName, childElementObj) {
    var parent = childElementObj.parentNode;
    while (parent.tagName.toLowerCase() != parentTagName.toLowerCase()) {
        parent = parent.parentNode;
    }
    return parent;
}

function accountCheckBoxClick() {
    document.getElementById('cscontainer').style.display = 'none';
    document.getElementById('cscontainer').innerHTML = '';
    document.getElementById('divselect').style.display = 'none';
    document.getElementById('divselect').innerHTML = ''; 
    document.getElementById('csAll').checked = true;
}

function accountSelectAllClick(sender, containerId) {
    var container = $(containerId);
    if (container) {
        CheckUncheckChildren(container, sender.checked);
        accountCheckBoxClick();
    }
}
