﻿Type.registerNamespace('PhotoSite');
//Custom Calendar variable
var selected_ThemeID;
var selected_Month;
var selected_Size;
var ThemeList = new Object();
var currTheme;

//Old Calendar variable
var CalendarCount;
var selectedCalendarID;
var selectdEncCalendarID;
var selectedQueryParam;
var CalendarsList = new Object();
var SelectedMonthObjecID;
var MonthsList = new Object();

function SetupLanguageOption_CallBack(result) {
    if (result) {
        var sizeArr = new Array();
        sizeArr = result;
        if (sizeArr.length > 0) {
            for (var z = 0; z < sizeArr.length; ++z) {

                var LanguagOptions = sizeArr[z];
                
            }
        
        }
      }
      GetMonthsDDLDateCustomCal();
}

function CreateSizeOptionsCustomCal(result) {
    if (result) {
        var sizeArr = new Array();
        sizeArr = result;
        if (sizeArr.length > 0) {
            var div_calendar_size = $get("div_calendar_size");

            var cal_p = document.createElement("p");

            for (var z = 0; z < sizeArr.length; ++z) {

                var CalendarSize = sizeArr[z];
                var input_el = document.createElement("input");
                input_el.type = "radio";
                input_el.id = ("input_size_" + z);
                input_el.name = "input_for_calendar";
                input_el.value = CalendarSize.SizeComboID;
                var size_text = document.createElement("input");
                size_text.type = "text";
                size_text.value = CalendarSize.SizeName;
                size_text.id = ("calendar_name_" + z);
                size_text.style.paddingLeft = "5px";
                size_text.style.paddingRight = "5px";
                size_text.style.width = "170px";
                size_text.style.border = "0";


                cal_p.appendChild(input_el);
                cal_p.appendChild(size_text);


            }
            div_calendar_size.appendChild(cal_p);

            var input_premium = $get("input_size_1");
            var input_classic = $get("input_size_0");


            $addHandler(input_classic, 'click', TypeCalendarSelected);
            $addHandler(input_premium, 'click', TypeCalendarSelected);
            if (strCalendarType == "premium") {
                input_premium.checked = true;
                input_classic.checked = false;
                selected_Size = input_premium.value;
            }
            else {
   //             input_premium.checked = false;
   //             input_classic.checked = true;
   //             selected_Size = input_classic.value;
            }
        }
    }
    // Start with next step call call
    GetMonthsDDLDateCustomCal();
}

function CreateThemesCustomCal(result) {
    if (result) {
        var img_preview = $get("img_theme_preview");
        selected_ThemeID = 0;
        var ThList = result;
        var select = false;
        for (var i in ThList) {
            select = (i == 0) ? true : false;
            var Th = ThList[i];
            
            if(typeof(Th) != 'function')
            {
                var NewTheme = new PhotoSite.Theme(Th.ThemeID, Th.ThemeName, Th.ThumbPath, Th.ImgPreview, select);
                if (NewTheme._selected) {
                    selected_ThemeID = NewTheme._id;
                    img_preview.src = NewTheme._preview;
                }
                ThemeList[NewTheme._id] = NewTheme;
            }
        }

        ThemeList[selected_ThemeID]._selected = true;
        LoadThemesCustomCal();

    }
}

function LoadThemesCustomCal() {
    var theme_list = $get("calendar_style");
    var themeListHtml = "";
    for (var i in ThemeList) {
        currTheme = ThemeList[i];
        themeListHtml += currTheme.thumb_view();
    }
    theme_list.innerHTML = themeListHtml;

}

function CreateCalendarInfo(result) {
    if (result) {
        var calenArray = Sys.Serialization.JavaScriptSerializer.deserialize(result);
        CalendarCount = calenArray.length;
        var img_preview = $get("img_themePreview");
        var name_list = $get("calendar_list");
        name_list.innerHTML = "";
        var HasSelected = false;
        var FirstCalendarEncID = "";
        var BackStepCalEncID = "";
        if (CalEncRPID != undefined && CalEncRPID != "") {
            BackStepCalEncID = CalEncRPID;
        }
        var break_img = document.createElement("img");
        break_img.src = "../images/dotted_line_horiz2.gif";
        for (i = 0; i < calenArray.length; ++i) {
            select = (i == 0) ? true : false;
            var Cal = calenArray[i];
            if (Cal.EncryptedID == null || typeof(Cal.EncryptedID)=='undefinded') {
                
            }
            var CalendObj = new PhotoSite.Calendar(i, Cal.EncryptedID, Cal.Name, Cal.Price, Cal.ShortDescription, Cal.LargeGraphicUrl, select);
            CalendObj._queryparam = Cal.QueryParam;
            CalendObj._selected = Cal.IsSelected;
         
            if (CalendObj._selected) {
                selectedEncCalendarID = CalendObj._encryptedID;
                selectedQueryParam = CalendObj._queryparam;
                selectedCalendarID = CalendObj._id
                img_preview.src = CalendObj._themeurl;
                HasSelected = true;
            }
            CalendarsList[CalendObj._id] = CalendObj;
            if (i == 0 ) {
                FirstCalendarID = CalendObj._encryptedID;
            }

        }
        if (BackStepCalEncID !="") {
            SelectTheme(BackStepCalEncID);
        }
        else if (!HasSelected) {
            SelectTheme(FirstCalendarID);
        }
        else {
            SelectTheme(selectedEncCalendarID);
        }
    }
}

function SelectTheme_CustomCal(theme_id) {
    var img_preview = $get("img_theme_preview");

    for (var i in ThemeList) {
        CurrTheme = ThemeList[i];
        if (i == theme_id) {
            selected_ThemeID = theme_id;
            CurrTheme._selected = true;
            img_preview.src = CurrTheme._preview;

        }
        else {
            CurrTheme._selected = false;
        }


    }
    LoadThemesCustomCal();

}

function SelectTheme(encCal_id) {
    if (CalendarsList != null) {
        var name_list = $get("calendar_list");
        var img_preview = $get("img_themePreview");
        name_list.innerHTML = "";
        var break_img = document.createElement("img");
        break_img.src = "../images/dotted_line_horiz2.gif";
        var i = 0;
        var cal_id = 0;
        for (var n in CalendarsList){
            var curCal=CalendarsList[n];
            if (curCal._encryptedID == encCal_id) {
                curCal._selected = true;
                selectdEncCalendarID = curCal._encryptedID;
                selectedQueryParam = curCal._queryparam;
                selectedCalendarID = curCal._id;
                cal_id = selectedCalendarID
            }
            else {
                curCal._selected = false;
            }
            name_list.innerHTML += curCal.list_view();
            if (i != (CalendarCount - 1)) {

                name_list.appendChild(break_img);
            }
        }
    }
    img_preview.src = CalendarsList[cal_id]._themeurl;
}


function RedirectToNextStep() {
    PageMethods.CheckIfAlbumExists(('../album/' + selectedQueryParam),RedirectToNextStep_CallBack);
}

function RedirectToNextStep_CallBack(result) {
    if (result == "True") {
        location.href = selectedQueryParam;
    }
    else {
        location.href = "../upload/upload.aspx?p=url_set";
    }
}

function RedirectForCustomCal(result) {
    if (result) {
        location.href = result;
    }
   
}

function LoadThemesCustomCal() {
    var theme_list = $get("calendar_style");
    var themeListHtml = "";
    for (var i in ThemeList) {
        currTheme = ThemeList[i];
        themeListHtml += currTheme.thumb_view();
    }
    theme_list.innerHTML = themeListHtml;

}

function GetMonthsDDLDateCustomCal() {
    PageMethods.PopulateMonthYearDDL(CreateMonthsDDL_CustomCal, gotError);
}

function CreateCalendarProject() {

    if (selected_Month == 0) {
        msgBox.Show(CalendarsString, pleaseSelectStartingMonth, [{ Button: 'Ok'}]);
    }
    else {
        PageMethods.CreateCalendarProject(selected_ThemeID, selected_Month, "", Redirect, gotError);
    }
}

function TypeCalendarSelected(e)  //Not usable for now but can be helpful in future
{
    selected_Size = e.target.value;
    var input1 = $get("input_size_0");
    var input2 = $get("input_size_1");
    if (!e.target.checked) {
        e.target.checked = true;
        if (input1.id != e.target.id) {
            input1.checked = false;
        }
        if (input2.id != e.target.id) {
            input2.checked = false;
        }
    }

}

function CreateMonthsDDL_CustomCal(result) {
    if (result) {
        var MonthsList = new Object();
        MonthsList = result;
        var ddl_place = document.getElementById("ddl_starting_month");

    //    var divEl = document.createElement("div");
        var ddlEl = document.createElement("select");
        if (ddl_place != null) {
            ddl_place.innerText = "";
            var newOption0 = document.createElement('option');
            newOption0.value = 0;
            newOption0.text = pleaseSelectStartingMonth;
            if (Sys.Browser.agent == Sys.Browser.InternetExplorer) {
                ddlEl.add(newOption0);
            }
            else {
                ddlEl.add(newOption0, null);
            }
            for (var i in MonthsList)
            {
                if (typeof (MonthsList[i]) == 'object')
                {
                    var newOption = document.createElement('option');
                    newOption.value = MonthsList[i].MonthValue;
                    newOption.text = String.format('{0}', MonthsList[i].MonthText);
                    if (Sys.Browser.agent == Sys.Browser.InternetExplorer)
                    {
                        ddlEl.add(newOption);
                    }
                    else
                    {
                        ddlEl.add(newOption, null);
                    }
                }
            }
        }

        ddlEl[0].selected = true;
        selected_Month = ddlEl[0].value;
        $addHandler(ddlEl, 'change', ChangeStartingMonth);
    //    divEl.appendChild(ddlEl);
        ddl_place.appendChild(ddlEl);

    }
    //start with 3 step 
    PageMethods.GetThemes(CreateThemesCustomCal, gotError);
}
function ChangeStartingMonth(e) {
    selected_Month = e.target.value;
}


function SetUpBorder(object) {
    var theme_img = $get(object.id);
    theme_img.border = "4";
    theme_img.style.borderColor = "#FFC565";
    theme_img.style.cursor = "pointer";
    theme_img.style.border = "4px solid #FFC565";
}
function GetOutBorder(object) {

    var theme_img = $get(object.id);
    theme_img.border = "0";
    theme_img.style.border = "0";
    theme_img.style.cursor = "";
}
function gotError(ex, ctx, methodName) {
    if (ex != null) {
        var errMsg = ex.get_message();
        var stkTrace = ex.get_stackTrace();
        var errType = ex.get_exceptionType();
        alert('{"Message":"' + errMsg + '","StackTrace":"' + stkTrace + '","ExceptionType":"' + errType + '","MethodName":"' + methodName + '"}');
        // get_statusCode(), get_timedOut()            
    }
    document.location = "../error.aspx";
}

function GetMonthsGetMonthsOptionsObjects(hasCover)
{
    PageMethods.GetMonthsOptionsObjects(hasCover, MonthOptionsResult);
}
function ShowBorder(obj) {
    obj.style.borderWidth = "3px";
    obj.style.borderStyle = "solid";
    obj.style.borderColor = "#fbbc10";

}

function HideBorder(obj) {
    obj.style.borderWidth = "3px";
    obj.style.borderStyle = "";
    obj.style.borderColor = "#ffffff";
}


function MonthOptionsResult(result) {
    if (result) {
        var htmlMarkup = new Sys.StringBuilder();
        var count = 0;
        var FirstItemID = 0;
        var MonthsObjectList = Sys.Serialization.JavaScriptSerializer.deserialize(result);
        for (var i = 0; i < MonthsObjectList.length; ++i) {
            var MonthsObj = MonthsObjectList[i];
            var MonthsObject = new PhotoSite.MonthsOptionsObject(MonthsObj.ID);
            MonthsObject._index = MonthsObj.Index;
            MonthsObject._name = MonthsObj.Name;
            MonthsObject._isSelected = MonthsObj.IsSelected;
            if (MonthsObject._isSelected) {
                 SelectedMonthObjecID = MonthsObject._id;
            }
            MonthsObject._hasBeenPreviewed = MonthsObj.HasBeenPreviewed;
            MonthsObject._isImageSelected = MonthsObj.IsImageSelected;
            MonthsObject._mediaUrl = MonthsObj.MediaUrl;
            MonthsObject._mediaIDOfMonth = MonthsObj.MediaIDOfMonth;
            MonthsObject._apertureIDOfMonth = MonthsObj.ApertureIDOfMonth;
            MonthsObject._apertureUrl = MonthsObj.ApretureUrl;
            MonthsList[MonthsObject._id] = MonthsObject;
            ++count;
            htmlMarkup.append(MonthsObject.months_view());
        }
        if (count > 0) {
            if (SelectedMonthObjecID == undefined) {
                SelectedMonthObjecID = 0;
            }
           var months = $get("months_objects");
           months.innerHTML = "";
           months.innerHTML = htmlMarkup.toString();
        }
    }
}
function ChangeCurrentMonth(month_id) {
    if (MonthsList != undefined) {
        var htmlMarkup = new Sys.StringBuilder();
        var CurrentAppertureID = "";
        for (var n in MonthsList) {
           
            if (MonthsList[n]._id == month_id) {
                MonthsList[n]._isSelected = true;
                SelectedMonthObjecID = MonthsList[n]._id
                CurrentAppertureID = MonthsList[n]._apertureIDOfMonth;
            }
            else {
                MonthsList[n]._isSelected = false;
            }
            
            htmlMarkup.append(MonthsList[n].months_view());
        }
        var months = $get("months_objects");
        months.innerHTML = "";
        months.innerHTML = htmlMarkup.toString();
        ShowCurrentTemplate(CurrentAppertureID);
    }
}

function ShowCurrentTemplate(appertureID) {
    //  templatePreviewManager.setViewByIndex(month_id);
    if (appertureID != "") {
        templatePreviewManager.setViewByApertureID(appertureID);
    }
}
 
 
PhotoSite.MonthsOptionsObject = function(id) {
    this._id = id;
    this._index = 0;
    this._name = "";
    this._isSelected = false;
    this._hasBeenPreviewed = false;
    this._isImageSelected = false;
    this._mediaUrl = "";
    this._mediaIDOfMonth = 0;
    this._apertureIDOfMonth = 0;
    this._apertureUrl = "";
};

PhotoSite.MonthsOptionsObject.prototype = {
    months_view: function() {
        var htmlMarkup = new Sys.StringBuilder();
        var imgSrc = this._isImageSelected ? "../images/album/img_check.gif" : "../images/album/img_uncheck.gif"
        var selected = this._isSelected ? "color:Black" : "";
        htmlMarkup.append("<div style=\"text-align:left;float:left;width:150px;padding-bottom:10px;\" border=\"0\">");
        htmlMarkup.append("            <div style=\"width:14px;float:left\">");
        htmlMarkup.append("                    <img src='" + imgSrc + "' alt=\"\"  />");
        htmlMarkup.append("             </div>");
        htmlMarkup.append("             <div style=\"cursor:pointer;"+selected+"; \" onclick=\"ChangeCurrentMonth(" + this._id + ")\">");
        htmlMarkup.append(this._name);
        htmlMarkup.append("             </div>");
        htmlMarkup.append(" </div>");
        return htmlMarkup.toString();
    }
};


PhotoSite.Calendar = function(id, encryptedid, name, price, shortdescription, themeurl, selected) {
    this._id = id;
    this._encryptedID = encryptedid;
    this._name = name;
    this._price = price;
    this._shortdescription = shortdescription;
    this._themeurl = themeurl;
    this._selected = selected;
    this._queryparam = "";
};
PhotoSite.Calendar.prototype = {
    list_view: function() {
//        var selected = this._selected ? 'checked' : '';

        if (this._selected) {
            return "<p ><a href=\"#\"  onclick=\"SelectTheme('" + this._encryptedID + "')\" style=\"cursor:pointer;\" >" +
                                   "<strong>"+ this._name + " - " + this._price + "</strong>" +
                                   "<img src=\"../images/icon_side_arrow.gif\" border=\"0\" />" +
                                   "</a>" + "</p>";
        }
        else {

            return "<p ><a href=\"#\"  onclick=\"SelectTheme('" + this._encryptedID + "')\" style=\"cursor:pointer;\" >" +
                                   this._name + " - " + this._price + 
                                   "</a>" + "</p>";
        }
    }
};

PhotoSite.Theme = function(id, name, thumb_path, img_preview, selected) {

    this._id = id;
    this._name = name;
    this._thumb_path = thumb_path;
    this._preview = img_preview;
    this._selected = selected;
};
PhotoSite.Theme.prototype = {
    thumb_view: function() {
        var selected = this._selected ? 'checked' : '';

        if (this._selected) {
            return "<div id=\"cal_theme\" onclick=\"SelectTheme_CustomCal(" + this._id + ")\" style=\"cursor:pointer;width:140px;float:left;padding-top:5px\" >" +
                                   "<table border=\"0\" width=\"134\" align=\"center\" ><tr height=\" 120\"><td align=\"center\" >" +
                                   "<img id=\"img_" + this._id + "\" border=\"4\" style=\"borderColor:'#FFC565';cursor:'pointer';border='4px solid #FFC565';\" src=\"" + this._thumb_path + "\" />" +
                                   "</td></tr><tr><td align=\"center\">" +
                                   this._name +
                                   "</td></tr></table><br/>" +
                                   "</div>";
        }
        else {

            return "<div id=\"cal_theme\"   onclick=\"SelectTheme_CustomCal(" + this._id + ")\" style=\"cursor:pointer;width:140px;float:left;padding-top:5px\" >" +
                                   "<table border=\"0\" width=\"134\" align=\"center\" ><tr height=\" 120\"><td align=\"center\" >" +
                                   "<img id=\"img_" + this._id + "\" src=\"" + this._thumb_path + "\" onmouseover=\"SetUpBorder(this)\" onmouseout=\"GetOutBorder(this)\" />" +
                                   "</td></tr><tr><td align=\"center\">" +
                                   this._name +
                                   "</td></tr></table><br/>" +
                                   "</div>";
        }
    }
};


PhotoSite.MonthsOptionsObject.registerClass('PhotoSite.MonthsOptionsObject');
PhotoSite.Calendar.registerClass('PhotoSite.Calendar');
PhotoSite.Theme.registerClass('PhotoSite.Theme');
Sys.Application.notifyScriptLoaded();