var glob_MfName, glob_ProdLine, glob_Model, glob_ProductList, glob_HiddendRotator
var glob_ThereDiv
var glob_step1, glob_step2, glob_step3, glob_step1_height, glob_step2_height, glob_step3_height
var Step2_LinkToStep1, glob_Step2_Image, glob_Step3_Image, glob_Step3_LinkToStep1, glob_Step3_LinkToStep2, glob_Step3_ProdLine, glob_Step3_Model
var glob_basket_Items, glob_basket_Delivery, glob_basket_Total, glob_basket_Count, glob_basket_Empty, glob_basket_Full
var glob_selected = new Array(50)

function Set_Global_Control(Step1, Step2, Step3, Step2_LinkToStep1, Step2_Image, Step3_Image, Step3_LinkToStep1, Step3_LinkToStep2, Step3_ProdLine, Step3_Model)
{
glob_step1 = Step1;
glob_step2 = Step2;
glob_step3 = Step3;
glob_step1_height = document.getElementById(glob_step1).style.height;
glob_step2_height = document.getElementById(glob_step2).style.height;

glob_Step2_LinkToStep1 = Step2_LinkToStep1
glob_Step2_Image = Step2_Image
glob_Step3_Image = Step3_Image
glob_Step3_LinkToStep1 = Step3_LinkToStep1
glob_Step3_LinkToStep2 = Step3_LinkToStep2

glob_Step3_ProdLine = Step3_ProdLine;
glob_Step3_Model = Step3_Model;

}

function Set_Global_Control_Basket(Param1, Param2, Param3, Param4, Param5, Param6)
{
    glob_basket_Items = Param1;
    glob_basket_Delivery = Param2;
    glob_basket_Total = Param3;
    glob_basket_Count = Param4;
    glob_basket_Empty = Param5;
    glob_basket_Full = Param6;
}

function ProdLine_List(MfName, ProdLine, Model, ThereDIV)
{
    document.body.style.cursor = "wait";
    glob_MfName   = MfName;
    glob_ProdLine = ProdLine;
    glob_Model    = Model;
    glob_ProductList = ThereDIV;
    AjaxService.ProdLine_List(document.getElementById(MfName).value, Manufacturer_List_Callback, OnTimeOut, OnError);
    return false;
}

function MfProdLine_List(ThisObj, MfName, MfId, ProdLine, Model, ThereDIV, SelectedMf)
{
    document.body.style.cursor = "wait";
    glob_MfName   = MfName;
    glob_ProdLine = ProdLine;
    glob_Model    = Model;
    glob_ProductList = ThereDIV;
   
    document.getElementById(MfName).value = MfId;

    document.getElementById(glob_Step2_Image).src = document.getElementById(ThisObj).src; //ThisObj.src; //ThisObj.href;
    document.getElementById(glob_Step3_Image).src = document.getElementById(ThisObj).src;//ThisObj.src; //ThisObj.href;

    document.getElementById(glob_Step2_LinkToStep1).innerHTML = SelectedMf; //document.getElementById(MfName).options.children[document.getElementById(MfName).selectedIndex].text;
    document.getElementById(glob_Step3_LinkToStep1).innerHTML = SelectedMf; //document.getElementById(MfName).options.children[document.getElementById(MfName).selectedIndex].text;
  
    ViewStep(2);
    
    AjaxService.ProdLine_List(MfId, Manufacturer_List_Callback, OnTimeOut, OnError);
    return false;
}

function Manufacturer_List_Callback(res)
{
    var ProdLine = document.getElementById(glob_ProdLine);;
    var Model    = document.getElementById(glob_Model);
 
    ProdLine.options.length = 0;
    Model.options.length = 0;
    for (x = 0; x < res.length; x++)
    {
        if (res[x].length != 2) continue;
        var elOptNew = document.createElement('option');
        elOptNew.value = res[x][0];
        elOptNew.text  = res[x][1];
        try         { ProdLine.add(elOptNew, null); }// standards compliant; doesn't work in IE
        catch(ex)   { ProdLine.add(elOptNew);       }// IE only
    }
    for (x = 0; x < res.length; x++)
    {
        if (res[x].length == 2) continue;
        else
        {
            document.getElementById(glob_ProductList).innerHTML = res[x];
            FillStretch_MainArea(res[x]);
            break;
        }
    }
        
    document.body.style.cursor = "default";
}

function Model_List(MfName, ProdLine, Model, ProductList, Selected)
{
    //alert(Selected);
    
    document.body.style.cursor = "wait";
    document.getElementById(ProductList).innerHTML = "Looking...";
    glob_MfName      = MfName;
    glob_ProdLine    = ProdLine;
    glob_Model       = Model;
    glob_ProductList = ProductList;
    
       
//    document.getElementById(glob_Step3_LinkToStep2).innerHTML = document.getElementById(ProdLine).children[document.getElementById(ProdLine).selectedIndex].innerText;
//    document.getElementById(glob_Step3_ProdLine).innerHTML = document.getElementById(ProdLine).children[document.getElementById(ProdLine).selectedIndex].innerText;
    
    document.getElementById(glob_Step3_LinkToStep2).innerHTML =  document.getElementById(ProdLine)[document.getElementById(ProdLine).selectedIndex].text;//document.getElementById(ProdLine).children[document.getElementById(ProdLine).selectedIndex].text;
    document.getElementById(glob_Step3_ProdLine).innerHTML = document.getElementById(ProdLine)[document.getElementById(ProdLine).selectedIndex].text; //document.getElementById(ProdLine).children[document.getElementById(ProdLine).selectedIndex].text;
    
    //alert(document.getElementById(ProdLine)[document.getElementById(ProdLine).selectedIndex].text);
            
    AjaxService.Model_List(document.getElementById(MfName).value, document.getElementById(ProdLine).value, Model_List_Callback, OnTimeOut, OnError);
    return false;
}

function Model_List_Callback(res)
{
    var Model = document.getElementById(glob_Model);
    
    Model.options.length = 0;
    
    document.getElementById(glob_ProductList).innerHTML = "";
    if (res.length == 0) // navratova hodnota je jen ten string dole
    {
        document.getElementById(glob_ProductList).innerHTML = res[1];
        FillStretch_MainArea(res[1]);
        document.body.style.cursor = "default";        
    }
    else if (res[0].length != 2)
    {
        document.getElementById(glob_ProductList).innerHTML = res[0];
        FillStretch_MainArea(res[0]);
        document.body.style.cursor = "default";                
    } 
    else if (res[1].length != 2)
    {
        var elOptNew = document.createElement('option');
        elOptNew.value = res[0][0];
        elOptNew.text  = res[0][1];
        try         { Model.add(elOptNew, null); }// standards compliant; doesn't work in IE
        catch(ex)   { Model.add(elOptNew);       }// IE only
        document.getElementById(glob_ProductList).innerHTML = res[1];
        FillStretch_MainArea(res[1]);
        document.body.style.cursor = "default";
    }
    else    
        for (x = 0; x < res.length; x++)
        {
            var elOptNew = document.createElement('option');
            elOptNew.value = res[x][0];
            elOptNew.text  = res[x][1];
            try         { Model.add(elOptNew, null); }// standards compliant; doesn't work in IE
            catch(ex)   { Model.add(elOptNew);       }// IE only
        }
    document.body.style.cursor = "default";
}

function ViewStep(Step)
{
    switch(Step)
    {
        case 2:
           {
                document.getElementById(glob_step1).style.visibility = "hidden";
                document.getElementById(glob_step1).style.display = "none";
                document.getElementById(glob_step2).style.visibility = "visible";
                document.getElementById(glob_step3).style.visibility = "hidden";
                document.getElementById(glob_step1).style.height = 0;
                document.getElementById(glob_step2).style.height = glob_step2_height;
                break;
           }
        case 3:
           {
                document.getElementById(glob_step1).style.visibility = "hidden";
                document.getElementById(glob_step2).style.visibility = "hidden";
                document.getElementById(glob_step3).style.visibility = "visible";
                document.getElementById(glob_step1).style.height = 0;
                document.getElementById(glob_step2).style.height = 0;           
                break;
           }
        default:
           {
                document.getElementById(glob_step1).style.visibility = "visible";
                document.getElementById(glob_step1).style.display = "block";
                document.getElementById(glob_step2).style.visibility = "hidden";
                document.getElementById(glob_step3).style.visibility = "hidden";
                document.getElementById(glob_step1).style.height = glob_step1_height;
                document.getElementById(glob_step2).style.height = 0;
                break;
           }
    }
    return (false);
}


function ProductList(MfName, ProdLine, Model, ProductList)
{
    document.body.style.cursor = "wait";
    glob_ProductList = ProductList;

    document.getElementById(ProductList).innerHTML = "Looking...";

    ViewStep(3);
//    document.getElementById(glob_step1).style.visibility = "hidden";
//    document.getElementById(glob_step2).style.visibility = "hidden";
//    document.getElementById(glob_step3).style.visibility = "visible";
//    document.getElementById(glob_step1).style.height = 0;
//    document.getElementById(glob_step2).style.height = 0;

    if (document.getElementById(Model).selectedIndex>0)
        //document.getElementById(glob_Step3_Model).innerHTML = document.getElementById(Model).children[document.getElementById(Model).selectedIndex].innerText;
        document.getElementById(glob_Step3_Model).innerHTML = document.getElementById(Model)[document.getElementById(Model).selectedIndex].text;
                        //document.getElementById(Model).children[document.getElementById(Model).selectedIndex].text;
                     
    AjaxService.ProductList(document.getElementById(MfName).value, document.getElementById(ProdLine).value, 
        document.getElementById(Model).value, ShowIt_Callback, OnTimeOut, OnError);
    return false;
}

function ShowIt_Callback(res)
{
    document.getElementById(glob_ProductList).innerHTML = res;
    document.body.style.cursor = "default";
    FillStretch_MainArea(res);
}

function Clear_Added(MfName, ProdLine, Model, ProductList)
{
    var o_Model    = document.getElementById(Model);
    var o_ProdLine = document.getElementById(ProdLine);
    var o_MfName = document.getElementById(MfName);
    
    for (x = 0; x < o_Model.options.length;    x++) { o_Model.options[x].selected    = false; }
    for (x = 0; x < o_ProdLine.options.length; x++) { o_ProdLine.options[x].selected = false; }
    for (x = 0; x < o_MfName.options.length; x++)   { o_MfName.options[x].selected = false; }
    
    document.getElementById(Model).options.length = 0;
    document.getElementById(ProdLine).options.length = 0;
    document.getElementById(MfName).options.length = 0;
    document.getElementById(ProductList).innerHTML = "";
}

function BuyClick_Click(MekSKU,AddedToBasket_Link,QtyToBasket_Link,ExtLinks, ExtLinks_related, ImgTitle)
{
    AjaxService.buyclick(MekSKU,document.getElementById(QtyToBasket_Link).value,AddedToBasket_Link,ExtLinks,ExtLinks_related, ImgTitle, BuyClick_Callback, OnTimeOut, OnError);
    //document.getElementById(AddedToBasket_Link).style.visibility = "visible";
    return false;
}

function BuyClick_Callback(res)
{
    Uncheck_All();
    
    for (x = 0; x < res.length/6; x++)
    {
        if ((res[x] != null) || (document.getElementById(res[x]) != null))
        {
            document.getElementById(res[x]).style.visibility = "visible";
            document.getElementById(res[x]).innerHTML = res[(res.length/6)+x] +' in your basket';
            if (res[(res.length/6*2)+x])
            {
                document.getElementById(res[(res.length/6*2)+x]).style.visibility = "visible";
//                if (res[(res.length/4*2)+x]=='True')
//                    document.getElementById(res[(res.length/4*2)+x]).childNodes[4].style.visibility = "hidden";
            }
            if ((document.getElementById(res[(res.length/6*3)+x]) != null))
            {
                if (res[(res.length/6*4)+x]=='1')
                    document.getElementById(res[(res.length/6*3)+x]).style.visibility = "visible";
                else
                    document.getElementById(res[(res.length/6*3)+x]).style.visibility = "hidden";
            }
            if ((document.getElementById(res[(res.length/6*5)+x]) != null))
            {
                document.getElementById(res[(res.length/6*5)+x]).style.visibility = "hidden";
            }
        }
    }
    AjaxService.getBasketInfo(RefreshBasket_Callback, OnTimeOut, OnError);
}


function RefreshBasket_Callback(res)
{
    if (document.getElementById(glob_basket_Items)!=null)
    {
        document.getElementById(glob_basket_Items).innerHTML = res[0];
        document.getElementById(glob_basket_Delivery).innerHTML = res[1];
        document.getElementById(glob_basket_Total).innerHTML = res[2];
        document.getElementById(glob_basket_Count).innerHTML = res[3];
        if (res[3]>0)
        {
            document.getElementById(glob_basket_Empty).style.visibility = "hidden";
            document.getElementById(glob_basket_Empty).style.display    = "none";
            document.getElementById(glob_basket_Full).style.visibility  = "visible";
            document.getElementById(glob_basket_Full).style.display     = "block";
        }
        else
        {
            document.getElementById(glob_basket_Empty).style.visibility = "visible";
            document.getElementById(glob_basket_Empty).style.display    = "block";
            document.getElementById(glob_basket_Full).style.visibility  = "hidden";
            document.getElementById(glob_basket_Full).style.display     = "none";
        }
    }
}

function CheckBox_Click(MekSKU,AddedToBasket_Link,QtyToBasket_Link, ThisObj, ExtLinks, ExtLinks_related, ImgTitle)
{
    for (x = 0; x < glob_selected.length; x++)
        {
            if ((glob_selected[x] == null) || (document.getElementById(glob_selected[x]) == null) || (glob_selected[x] == ThisObj))
            {
                glob_selected[x] = ThisObj;
                break;
            }
        }
    
    AjaxService.addcheckbox(MekSKU,AddedToBasket_Link,QtyToBasket_Link,ExtLinks,ExtLinks_related, ImgTitle, CheckBox_Callback, OnTimeOut, OnError);
    //document.getElementById(AddedToBasket_Link).style.visibility = "visible";
    //return false;
}

function ChangeDefaultPicture(currentPicture)
{
        AjaxService.changedefaultpicture(currentPicture,ChangeDefaultPicture_callback, OnTimeOut, OnError);
}

function ChangeDefaultPicture_callback()
{

}

function Uncheck_All()
{
    for (x = 0; x < glob_selected.length; x++)
        {
            if ((glob_selected[x] != null) && (document.getElementById(glob_selected[x])!=null))
            {
                document.getElementById(glob_selected[x]).checked = false; 
            }
            glob_selected[x] = null;
        }
}

function CheckBox_Callback()
{

}

function AddSelectedToBasket_Click()
{
    AjaxService.addselectedtobasket(BuyClick_Callback, OnTimeOut, OnError);
    return false;
}

function AddSelectedToFav_Click()
{
    AjaxService.addselectedtofav(AddSelectedToFav_Callback, OnTimeOut, OnError);
    return false;
}

function AddToFav_Click(MekSKU)
{
    AjaxService.addtofav(MekSKU,AddSelectedToFav_Callback, OnTimeOut, OnError);
    return false;
}

function AddSelectedToFav_Callback(res)
{
    switch(res)
    {
        case 0:
           {
                alert('You have to login.');
                break;
           }
        case 1:
           {
                alert('Added To Favorites.');
                Uncheck_All();
                break;
           }
        case 2:
           {
                alert('Any selected Item.');
                break;
           }
    }
}

function PrinterModel_Click(MfName, ProdLine, Model, ProductList, ThisItem, PrevItem, HiddendRotator, lblType)
{
    document.body.style.cursor = "wait";
    glob_MfName   = MfName;
    glob_HiddendRotator = HiddendRotator;
    
    document.getElementById(ThisItem).innerHTML = "Printer Model (Active)";
    document.getElementById(PrevItem).innerHTML = "Consumable Part Number";
    document.getElementById(glob_HiddendRotator).style.visibility = "hidden";
    document.getElementById(lblType).innerHTML = "Product Line";
    
    Clear_Added(MfName, ProdLine, Model, ProductList)
    AjaxService.PrinterModel_Click(PrinterModelClick_Callback, OnTimeOut, OnError);
    return false;
}

function PrinterModelClick_Callback(res)
{
    var MfName = document.getElementById(glob_MfName);

    MfName.options.length = 0;
    for (x = 0; x < res.length; x++)
    {
        var elOptNew = document.createElement('option');
        elOptNew.value = res[x][0];
        elOptNew.text  = res[x][1];
        try         { MfName.add(elOptNew, null); }// standards compliant; doesn't work in IE
        catch(ex)   { MfName.add(elOptNew);       }// IE only
    }
    
    document.body.style.cursor = "default";
}

function ConsumableClick_Click(MfName, ProdLine, Model, ProductList, ThisItem, PrevItem, HiddendRotator, lblType)
{
    document.body.style.cursor = "wait";
    
    glob_MfName   = MfName;
    glob_HiddendRotator = HiddendRotator;
    
    document.getElementById(ThisItem).innerHTML = "Consumable Part Number (Active)";
    document.getElementById(PrevItem).innerHTML = "Printer Model";
        
    document.getElementById(glob_HiddendRotator).style.visibility = "visible";
    document.getElementById(lblType).innerHTML = "Consumable Type";
       
    Clear_Added(MfName, ProdLine, Model, ProductList)
    AjaxService.ConsumableClick_Click(PrinterModelClick_Callback, OnTimeOut, OnError);
    return false;   
}

function SearchKeyPress(e, MfName, SearchBox, ThereDiv, iVal)
{
    if ((e.keyCode == 13) || (iVal == 1))
    {
        var o_MfName = document.getElementById(MfName);
        var o_SearchBox = document.getElementById(SearchBox);
        
        document.getElementById(ThereDiv).innerHTML = "Looking...";       
        
        glob_ThereDiv = ThereDiv;
        
        if (o_SearchBox.value.length == 0) alert('Search text must be filled !');
        
        AjaxService.AdvancedSearch(o_MfName.value, o_SearchBox.value, AdvancedSearch_CallBack, OnTimeOut, OnError);
        return false;
    }
}

function AdvancedSearch_CallBack(res)
{
    document.getElementById(glob_ThereDiv).innerHTML = res;
    FillStretch_MainArea(res);
}

function FillStretch_MainArea(FillString)
{
    QuickFillStretch_MainArea(FillString.length);
}

function QuickFillStretch_MainArea(Count)
{
    var ItemsAdd = (Count / 2230) - 8;// 2230 - cimmrmanova konstanta
    document.getElementById('mainarea').style.height = 1720; //1399;
    if (ItemsAdd > 0)
    {
        var AddPix = 1399 + 120;
        ItemsAdd = Math.floor(ItemsAdd);
        if (ItemsAdd >= 1) 
            AddPix += (ItemsAdd * 160); // 160 - cimmrmanova konstanta
        document.getElementById('mainarea').style.height = AddPix;
    }
}

/////////////////////////////////////////////////////////////////////////////////////

function OnTimeOut(arg) {
    alert("TimeOut encountered when calling selected methods('" + arg + "')");
}

function OnError(arg) {
    alert("Error encountered when calling selected methods ('" + arg + "').");
}

//function SendFormValues(recipient, subject)
//{
//    //var pobject = document.getElementById(obj);
//    var aa = document.getElementsByName("SendValues");
//    
//    var info = new Array(50);
//    var order = 0;
//    
//    for(var i = 0; i < aa.length; i++)
//         {
//            info[order] = aa[i].mydescription;
//            order++;
//            info[order] = aa[i].value;
//            order++;
//         
//         }
//         AjaxService.SendValuesToMail(recipient, subject, info, SendValuesToMail_CallBack, OnTimeOut, OnError);
//}

//function SendValuesToMail_CallBack(backvalue)
//{
//    if (backvalue = true)
//        alert('Your information has been sent.');
//    
//}