﻿/* Softicana related functions. Copyright (c) 2007 Roman Pushkin <roman.pushkin:)gmail.com> */

function ButtonEnterHandler(event, buttonId)
{
    if(event.which)
        var keycode = event.which;
    else
        var keycode = event.keyCode;
    if((keycode == 13) || (keycode == 10))
    {
        if($(buttonId).click != null)
            $(buttonId).click();
        else if($(buttonId).getProperty("onclick") != "")
        {
            eval($(buttonId).getProperty("onclick"));
        }
        
        return false;
    }
    return true;
}

/* SEARCH PANEL FUNCTIONS */

var global_mySlider;
function search_panel_show()
{
getSlider().slideIn();
$('search_panel_button').onclick = function(event) { search_panel_hide(); };
$('search_panel_button').className = "search_panel_button_hide";
Cookie.set("search_panel", "show", {duration: 365, path: "/"});
hideAddOptions();
}

function search_panel_hide()
{
getSlider().slideOut();
$('search_panel_button').onclick = function(event) { search_panel_show(); };
$('search_panel_button').className = "search_panel_button_show";
Cookie.set("search_panel", "hide", {duration: 365, path: "/"});
showAddOptions();
}

function search_panel_hide2()
{
    getSlider().hide();
    $('search_panel_button').onclick = function(event) { search_panel_show(); };
    $('search_panel_button').className = "search_panel_button_show";
    showAddOptions();
}

function showAddOptions()
{
if($('RegisterWhenCollapsed') != null)
{
$('RegisterWhenCollapsed').style.display = "";
}
}

function hideAddOptions()
{
if($('RegisterWhenCollapsed') != null)
{
$('RegisterWhenCollapsed').style.display = "none";
}
}


function getSlider()
{
if(global_mySlider == null)
{
global_mySlider = new Fx.Slide('header3', {duration: 200});
}
return global_mySlider;
}

function SearchEnterHandler(event)
{
    if(event.which)
        var keycode = event.which;
    else
        var keycode = event.keyCode;
    if((keycode == 13) || (keycode == 10))
    {
        search();
        return false;
    }
    return true;
}

/* RATE FUNCTIONS */

function isContains(arr, v)
{
	for(var i = 0; i < arr.length; i++)
	{
		if(arr[i] == v)
			return true;
	}
	return false;
}
function getUniqueArray(arr)
{
	var elements = new Array();
	for(var i = 0; i < arr.length; i++)
	{
		if(isContains(elements, arr[i]) == false)
		{
			elements.push(arr[i]);
		}
	}
	return elements;
	
}

function rate(itemId)
{
    var maxIds = 300;
    var ids = Cookie.get("ids");
    if(ids != false)
    {
        ids = itemId + "_" + getUniqueArray(ids.split('_', maxIds)).join('_');
    }
    else
    {
        ids = itemId;
    }
    // FIXME: url
    var myAjax = new Ajax("http://softicana.com/rate.aspx", {method: 'post', postBody: 'itemId=' + itemId}); 
    myAjax.request();
    setLiked(itemId, true);
    Cookie.set("ids", ids, {duration: 365, path: "/"});
}

function setLiked(itemId, doIncrement)
{
    var currentHitsCounter = $('hitsCounter' + itemId).innerHTML;
    if(doIncrement == true)
    {
        currentHitsCounter++;
    }
    $('rateButton' + itemId).setHTML("<div class=\"vote1_checked\"></div><div class=\"vote2_checked\">" + currentHitsCounter + "</div><div class=\"vote3_checked\"></div>");
}

Window.onDomReady(function()
{
    var commaSeparatedIds = Cookie.get("ids");
    if(commaSeparatedIds != false)
    {
        var ids = commaSeparatedIds.split('_');
        for(var i = 0; i < ids.length; i++)
        {
            if($('rateButton' + ids[i]) != null && $('rateButton' + ids[i]).innerHTML != null)
            {
                setLiked(ids[i], false);
            }
        }
    }

    if($('header3') != null)
    {
        var search_panel_state = Cookie.get("search_panel");
        if(search_panel_state == "hide")
        {
            search_panel_hide2();
        }
    }

    initSlider();
});

function search()
{
    var base_url = "http://softicana.com/search.aspx?";
    var url = base_url + "category=" + $('search_category').value + "&query=" + window.encodeURIComponent($('search_query').value);
    document.location = url;
}

/********************************************************/
/* COMMENT FUNCTIONS */
/********************************************************/

function showComment(showId, hideId)
{
$(showId).style.display = "";
$(hideId).style.display = "none";
}

function comment_preview(textboxId)
{
$('CommentPreview').style.display = 'none';
$('CommentLoading').style.display = '';
var myAjax = new Ajax("http://softicana.com/textFieldPreview.aspx", {method: 'post', autoCancel: true, postBody: 'text=' + window.encodeURIComponent($(textboxId).value), update: $('CommentPreview'), onComplete: function(){ $('CommentPreview').style.display = ''; $('CommentLoading').style.display = 'none'; } });
myAjax.request();
return false; // we don't want the button to be clicked
}

function comment_captcha(textFieldId, errorId, AddCommentControlsId, CaptchaCheckId, captchaTextfieldId)
{
    if(mandatory_fields_verify([[textFieldId,errorId]]) == true)
    {
        set_display_off(AddCommentControlsId);
        set_display_on(CaptchaCheckId);
        set_display_off('CommentPreview');
        set_display_off('CommentLoading');
        $(captchaTextfieldId).focus();
    }
    return false;
}

/********************************************************/
/* RATE COMMENT FUNCTIONS */
/********************************************************/

function getPointsText(pointsValue)
{
    if(pointsValue == 0)
        return "points";
    else if(Math.abs(pointsValue) == 1)
        return "point";
    else
        return "points";
}

function getPointsClass(pointsValue)
{
    if(pointsValue == 0)
        return "";
    else if(pointsValue > 0)
        return "good_status";
    else if(pointsValue < 0)
        return "bad_status";
}

function upComment(commentId)
{
    var pointsInnerHtml = $('points' + commentId).innerHTML;
    var pointsArr = pointsInnerHtml.split(' ');
    var pointsValue = pointsArr[0];
    var rating = 0;
    pointsValue = pointsValue * 1;
    
    if($('commentMinus' + commentId).className == "minus_checked")
    {
        pointsValue++;
        $('commentMinus' + commentId).className = "minus";
    }
    
    var className = $('commentPlus' + commentId).className;
    var newClassName = "";
    if(className == "plus")
    {
        pointsValue++;
        newClassName = "plus_checked";
        rating = 1;
    }
    else if(className == "plus_checked")
    {
        pointsValue--;
        newClassName = "plus";
        rating = 0;
    }
    $('commentPlus' + commentId).className = newClassName;

    var myAjax = new Ajax("http://softicana.com/rateComment.aspx", {method: 'post', postBody: 'commentId=' + commentId + '&rating=' + rating}); 
    myAjax.request();
    
    $('points' + commentId).setHTML(pointsValue + " " + getPointsText(pointsValue));
    $('points' + commentId).className = getPointsClass(pointsValue);
}

function downComment(commentId)
{
    var pointsInnerHtml = $('points' + commentId).innerHTML;
    var pointsArr = pointsInnerHtml.split(' ');
    var pointsValue = pointsArr[0];
    var rating = 0;
    pointsValue = pointsValue * 1;

    if($('commentPlus' + commentId).className == "plus_checked")
    {
        pointsValue--;
        $('commentPlus' + commentId).className = "plus";
    }
    
    var className = $('commentMinus' + commentId).className;
    var newClassName = "";
    if(className == "minus")
    {
        pointsValue--;
        newClassName = "minus_checked";
        rating = -1;
    }
    else if(className == "minus_checked")
    {
        pointsValue++;
        newClassName = "minus";
        rating = 0;
    }
    $('commentMinus' + commentId).className = newClassName;

    // FIXME: url
    var myAjax = new Ajax("http://softicana.com/rateComment.aspx", {method: 'post', postBody: 'commentId=' + commentId + '&rating=' + rating}); 
    myAjax.request();

    $('points' + commentId).setHTML(pointsValue + " " + getPointsText(pointsValue));
    $('points' + commentId).className = getPointsClass(pointsValue);
}

/********************************************************/
/* REPORT COMMENT FUNCTIONS */
/********************************************************/

function showCommentReportConfirmation(commentId)
{
    $('commentReportButton' + commentId).style.display = "none";
    $('commentReportButtonConfirmation' + commentId).style.display = "";
}

function commentReport(commentId)
{
    $('commentReportButtonConfirmation' + commentId).style.display = "none";
    $('commentReported' + commentId).style.display = "";
    
    var myAjax = new Ajax("http://softicana.com/report.aspx", {method: 'post', postBody: 'commentId=' + commentId}); 
    myAjax.request();
}

function hideCommentReportConfirmation(commentId)
{
    $('commentReportButtonConfirmation' + commentId).style.display = "none";
    $('commentReportButton' + commentId).style.display = "";
}

/********************************************************/
/* REPORT ITEM FUNCTIONS */
/********************************************************/

function showItemReportConfirmation(itemId)
{
    $('itemReportButton' + itemId).style.display = "none";
    $('itemReportButtonConfirmation' + itemId).style.display = "";
}

function itemReport(itemId)
{
    $('itemReportButtonConfirmation' + itemId).style.display = "none";
    $('itemReported' + itemId).style.display = "";
    
    // FIXME: url
    var myAjax = new Ajax("http://softicana.com/report.aspx", {method: 'post', postBody: 'itemId=' + itemId}); 
    myAjax.request();
}

function hideItemReportConfirmation(itemId)
{
    $('itemReportButtonConfirmation' + itemId).style.display = "none";
    $('itemReportButton' + itemId).style.display = "";
}

/********************************************************/
/* EDITOR HELPER FUNCTIONS */
/********************************************************/

function toggleHelp()
{
    if($('editHelp').style.display == "none")
    {
        $('editHelp').style.display = "";
        $('editHelpButton').setHTML("hide help");
    }
    else
    {
        $('editHelp').style.display = "none";
        $('editHelpButton').setHTML("show help");
    }
}

/********************************************************/
/* PROFILE FUNCTIONS */
/********************************************************/

function showPasswordWindow()
{
    url="http://softicana.com/personal/password.aspx";
    window.open(url, "_blank", "height=210, width=300, status=no, toolbar=no, menubar=no, location=no");
}

function showUploadAvatarWindow()
{
    url="http://softicana.com/personal/avatar.aspx";
    window.open(url, "_blank", "height=210, width=300, status=no, toolbar=no, menubar=no, location=no");
}

/********************************************************/
/* LOGIN FUNCTIONS */
/********************************************************/

var global_loginState;

function toggleLogin()
{
	if(getLoginState() == 1)
	{
		$('login_arrow').setHTML("↑");
		$('login_control').style.display = "";
		global_loginState = 2;
	} else {
		$('login_arrow').setHTML("↓");
		$('login_control').style.display = "none";
		global_loginState = 1;
	}
}

function getLoginState()
{
if(global_loginState == null)
	global_loginState = 1;
return global_loginState;
}

function set_empty_field_focus(fieldId)
{
$(fieldId).focus();
$(fieldId).addClass("required_field_hl");
$(fieldId).addEvent('blur', function() { $(fieldId).removeClass("required_field_hl"); $(fieldId).removeEvent('blur'); });
}

function set_display_on(itemId)
{
    if(itemId != '')
    {
        $(itemId).style.display = '';
    }
}

function set_display_off(itemId)
{
    if(itemId != '')
    {
        $(itemId).style.display = 'none';
    }
}

function is_text_reserved(text)
{
    if(text != null)
    {
        if(text == "type \"self\" here to make this post refer to itself.")
        {
            return true;
        }
        if(text == "type screenshot url here")
        {
            return true;
        }
    }
    return false;
}

function mandatory_fields_verify(arr)
{
    var result = true;
    arr.each(function (item, index)
    {
        if($(item[0]).value.length == 0 || is_text_reserved($(item[0]).value)){
            set_display_on(item[1]);
            result = false;
        } else {
            set_display_off(item[1]);
        }
    });
    
    // set focus to the first empty field
    if(result == false)
    {
        for(var i = 0; i < arr.length; i++)
        {
            if($(arr[i][0]).value.length == 0 || is_text_reserved($(arr[i][0]).value))
            {
                set_empty_field_focus(arr[i][0]);
                break;
            }
        }
    }
    return result;
}

function compare_validator(id1, id2, id_to_show, text_to_show)
{
    var result = true;
    if($(id1).value != $(id2).value)
    {
        result = false;
        $(id_to_show).style.display = "";
        $(id_to_show).setHTML(text_to_show);
    } else {
        $(id_to_show).style.display = "none";
    }
    return result;
}

/********************************************************/
/* SUBMIT FUNCTIONS */
/********************************************************/

function limitText(textArea, length) {
    if (textArea.value.length > length) {
        textArea.value = textArea.value.substr(0,length);
    }
}

function show_hide(ids_to_show, ids_to_hide)
{
    ids_to_show.each(function (item, index)
    {
        $(item).removeClass("off");
    });
    ids_to_hide.each(function (item, index)
    {
	    $(item).addClass("off");
    });
}

function show_hide2(ids_to_show, ids_to_hide)
{
    ids_to_show.each(function (item, index)
    {
        $(item).removeClass("off2");
    });
    ids_to_hide.each(function (item, index)
    {
	    $(item).addClass("off2");
    });
}

function checkLink(textFieldId, resultFieldId)
{
    if(checkLink2(textFieldId, resultFieldId) == true)
    {
        var myAjax = new Ajax("http://softicana.com/checkLink.aspx", {method: 'post', postBody: 'link=' + $(textFieldId).value, update: $(resultFieldId)}); 
        myAjax.request();
    }
}

function checkLink2(textFieldId, resultFieldId)
{
    var result = true;
    var v = $(textFieldId).value;
    if(v.toLowerCase() == "self")
    {
        return true;
    }
    if(v.test("http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?") && v.length > 0)
    {
        result = true;
        $(resultFieldId).setHTML("&nbsp;");
    }
    else
    {
        result = false;
        set_empty_field_focus(textFieldId);
        $(resultFieldId).setHTML("<span style=\"color: red\">incorrect url</span>");
    }
    return result;
}

function checkLink3(textFieldId, resultFieldId, scModeFieldId)
{
    var v = $(textFieldId).value;
    if(v == null || v == "" || $(scModeFieldId).value == "upload" || is_text_reserved(v))
    {
        $(resultFieldId).addClass("off");
        return true;
    } else {
        var result = true;
        if(v.test("http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?") && v.length > 0)
        {
            result = true;
            $(resultFieldId).addClass("off");
        }
        else
        {
            result = false;
            set_empty_field_focus(textFieldId);
            $(resultFieldId).setHTML("incorrect url");
            $(resultFieldId).removeClass("off");
        }
        return result;
    }
}

var checkedCnt = 0;

function toggleMark(prefix, id)
{
    var obj = $(prefix + 'label' + id);
    if(obj.className == "content_tag_selected")
    {
        obj.className = "content_tag";
        checkedCnt--;
    }
    else if(obj.className == "content_tag")
    {
        obj.className = "content_tag_selected";
        checkedCnt++;
    }
    if(global_errMessagesContainer != null && global_initialCnt != null)
    {
        checkCategories2(global_errMessagesContainer, global_initialCnt);
    }
}

function checkCategories(err_obj_name, initial_cnt)
{
    global_errMessagesContainer = err_obj_name;
    global_initialCnt = initial_cnt;
    if((checkedCnt + initial_cnt) <= 0)
    {
        $(err_obj_name).setHTML("Please select at least one related category");
        $(err_obj_name).style.display = "";
        return false;
    }
    else
    {
        $(err_obj_name).style.display = "none";
        return true;
    }
}

var global_errMessagesContainer = null;
var global_initialCnt = null;

function checkCategories2(err_obj_name, initial_cnt)
{
    global_errMessagesContainer = err_obj_name;
    global_initialCnt = initial_cnt;
    if((checkedCnt + initial_cnt) > 8)
    {
        var selectedCnt = checkedCnt + initial_cnt;
        $(err_obj_name).setHTML("Please select not more than 8 categories (you selected " + selectedCnt + ")");
        $(err_obj_name).style.display = "";
        return false;
    }
    else
    {
        $(err_obj_name).style.display = "none";
        return true;
    }
}

/*******************************************/
/* SC MANAGER FUNCTIONS ********************/
/*******************************************/

var latestEnabledUC = '';
function enableUC(arr)
{
    if(arr.length == 0)
        return false;
    
    if(latestEnabledUC == '')
    {
        for(var i = 0; i < arr.length; i++)
        {
            if($(arr[i]).hasClass('off') ||
                (i == (arr.length - 1)))
            {
                latestEnabledUC = arr[i - 1];
                break;
            }
        }
    }

    var retVal = false;
    for(var i=0; i < arr.length; i++)
    {
        if( latestEnabledUC == arr[i] &&
            ((i + 1) < arr.length))
        {
            $(arr[i + 1]).removeClass('off');
            latestEnabledUC = arr[i + 1];
            if((i+2) < arr.length)
            {
                retVal = true;
            }
            break;
        }
    }
    return retVal;
}

function removeScreenshot(sessionId, id, loadingId, show, hide)
{
    show_hide([loadingId],[]);
    var myAjax = new Ajax("http://softicana.com/personal/removeScreenshotHandler.aspx", {method: 'post', postBody: 'id=' + id + '&sess=' + sessionId, onComplete: function() { show_hide(show, hide); }}); 
    myAjax.request();
}

function renameScreenshot(id, newTitle, updateId, show1, hide1, show2, hide2)
{
    show_hide(show1, hide1);
    var myAjax = new Ajax("http://softicana.com/personal/renameScreenshotHandler.aspx", {method: 'post', postBody: 'id=' + id + '&newtitle=' + window.encodeURIComponent(newTitle), update: $(updateId), onComplete: function() { show_hide(show2, hide2); }}); 
    myAjax.request();
}

/**************************************/
/* Avatar manager helper functions ****/
/**************************************/

var g_ScreenshotSelected = false;
function avatarManagerNextStep()
{
    if(!g_ScreenshotSelected)
    {
        $('err').style.visibility = 'visible';
        return false;
    }
    else
    {
        $('err').style.visibility = 'hidden';
        return true;
    }
}

function avatarManagerSelectScId(controlId, value, buttonClientId)
{
    $(controlId).value = value;
    g_ScreenshotSelected = true;
    $(buttonClientId).click();
}

/*****************************************************************************/
/* <SCREENSHOW> **************************************************************/
/*****************************************************************************/

var ScreenShow = new Class({
    initialize: function(options){
        this.options = options;
        this.initialHeight = options.size.height + 0;
    }
});

ScreenShow.implement({
    load: function(){
        this.getOverlay0().setOpacity(0.01);
        this.getOverlay().setOpacity(0.6);
        this.manageOverlaySize();
        this.getWindow().setStyles({width: this.options.size.width + 'px', height: this.options.size.height + 'px'});
        this.makeCenter(this.getWindow(), this.options.size);
        this.internalWidth = this.options.size.width - 20;
        this.internalHeight = this.options.size.height - 65;
        this.isBackOver = false;
        this.isNextOver = false;
        this.infoContainerHeight = 45;
        
        this.getWindow().setHTML('\
        <div class="modal_header">\
        <div id="sstitle" class="hdr1">Screenshots</div>\
        <div class="hdr2"><span class="modal_close" onclick="ss.stop(0);">close this window</span></div>\
        </div>\
        <div id="ssback" class="ssnav off"></div>\
        <div id="ssback2" class="ssnav2 hand off" onclick="ss.switchBack();" onmouseover="ss.onBackOver();" onmouseout="ss.onBackOut();" ></div>\
        <div id="ssbackinfo" class="off"><div id="ssbackinfoarr"></div><div><b>Previous screenshot</b><br />Shortcut: «left arrow»</div></div>\
        <div id="ssnext" class="ssnav off"></div>\
        <div id="ssnext2" class="ssnav2 hand off" onclick="ss.switchNext();" onmouseover="ss.onNextOver();" onmouseout="ss.onNextOut();" ></div>\
        <div id="ssnextinfo" class="off"><div id="ssnextinfoarr"></div><div><b>Next screenshot</b><br />Shortcut: «right arrow» key or «space» bar</div></div>\
        <table class="modal_container" cellspacing="0" cellpadding="0" border="0">\
        <tr>\
        <td id="sscontainer" class="ss_main"><img style="margin-left:312px;margin-top:82px" src="/images/ajax-loader-gray.gif" width="16" height="16" /></td>\
        </tr>\
        </table>\
        <div id="ssexinfocontainer" style="clear: both" class="off">\
            <div id="ssoriginalimg" title="Original image" class="hand"><a id="ssoriginalimg2" href="" target="_blank"><img src="/images/scoriginal.gif" width="16" height="16"></img></a></div>\
            <div style="padding-top: 10px;float:left">\
                <img id="ssavatarimg" src="" width="25" height="25"></img>\
            </div>\
            <div style="padding-top: 15px;padding-left: 35px">\
            <span id="ssusername"></span>&nbsp;&nbsp;\
            <span id="ssdate"></span>\
            </div>\
        </div>\
        <div id="ssexinfo" class="ssexinfo1 off hand" onclick="ss.showExInfo();"></div>\
        <div id="sscontrols" class="ssf off">\
        <input id="sshiddeninput" type="text" />\
        <div id="sscontrols1" class="off" style="float: left">\
            <span class="hand" onclick="ss.switchBack();"><span class="ssarr">←</span> <span class="black_dashed2">back</span></span>\
            <span id="ssinfo">asd</span>\
            <span class="hand" onclick="ss.switchNext();"><span class="black_dashed2">next</span> <span class="ssarr">→</span></span>\
        </div>\
        <div id="sscontrols2"><span id="sscontrols21"></span><span id="sscontrols22" class="off"></span></div>\
        </div>\
        <div id="sspreload" />\
        ');
        this.prev_onresize = window.onresize;
        this.prev_onscroll = window.onscroll;
        window.onresize = function() {
            ss.makeCenter(ss.getWindow(), ss.options.size);
            ss.manageOverlaySize();
            if(ss.prev_onresize != null)
                ss.prev_onresize();
            };
        window.onscroll = function() {
            ss.makeCenter(ss.getWindow(), ss.options.size);
            if(ss.prev_onscroll != null)
                ss.prev_onscroll();
            }
        this.loadScreenshotList();
    },
    hideExInfo: function()
    {
        var containerOff = $('ssexinfocontainer').hasClass('off');
        if(!containerOff)
        {
            $('ssexinfocontainer').addClass('off');
            $('ssexinfo').removeClass('ssexinfo2');
            $('ssexinfo').addClass('ssexinfo1');
            this.options.size.height -= this.infoContainerHeight;
            this.getWindow().setStyles({'height' : this.options.size.height});
        }
    },
    showExInfo: function()
    {
        var containerOff = $('ssexinfocontainer').hasClass('off');
        if(containerOff)
        {
            $('ssexinfocontainer').removeClass('off');
            $('ssexinfo').removeClass('ssexinfo1');
            $('ssexinfo').addClass('ssexinfo2');
            this.options.size.height += this.infoContainerHeight;
            this.getWindow().setStyles({'height' : this.options.size.height});
        }
        else
        {
            $('ssexinfocontainer').addClass('off');
            $('ssexinfo').removeClass('ssexinfo2');
            $('ssexinfo').addClass('ssexinfo1');
            this.options.size.height -= this.infoContainerHeight;
            this.getWindow().setStyles({'height' : this.options.size.height});
        }
    },
    onNextOver: function()
    {
        if(this.isNextOver == false)
        {
        //$('ssnext').setOpacity(0.6);
            $('ssnext').setStyles({'background-color' : 'black'});
            $('ssnext').setOpacity(0.6);
            $('ssnextinfo').removeClass('off');
        }
        this.isNextOver = true;
    },
    onNextOut: function()
    {
        if(this.isNextOver == true)
        {
            $('ssnext').setStyles({'background-color' : ''});
            $('ssnext').setOpacity(1);
            $('ssnextinfo').addClass('off');
        }
        this.isNextOver = false;
    },
    onBackOver: function()
    {
        if(this.isBackOver == false)
        {
        //$('ssnext').setOpacity(0.6);
            $('ssback').setStyles({'background-color' : 'black'});
            $('ssback').setOpacity(0.6);
            $('ssbackinfo').removeClass('off');
        }
        this.isBackOver = true;
    },
    onBackOut: function()
    {
        if(this.isBackOver == true)
        {
            $('ssback').setStyles({'background-color' : ''});
            $('ssback').setOpacity(1);
            $('ssbackinfo').addClass('off');
        }
        this.isBackOver = false;
    },
    loadScreenshotList: function()
    {
        var jSonRequest = new Json.Remote("http://softicana.com/JSONScreenshotList.aspx", {onComplete: function(arr)
        {
            ss.setArray(arr);
        }}).send({'ItemId' : this.options.ItemId});
    },
    setArray: function(arr)
    {
        if(arr.length == 0)
            ss.stop();
            
        $('sshiddeninput').onkeydown = function(event)
        {
            var event = new Event(event);
            if(event.key == 'right')
            {
                ss.switchNext();
            }
            else if(event.key == 'left')
            {
                ss.switchBack();
            }
            else if(event.key == 'space')
            {
                ss.switchNext();
            }
            else if(event.key == 'esc')
            {
                ss.stop(0);
            }
        };
        this.arr = arr;
        if(this.options.StartId != null)
            this.switchById(this.options.StartId);
        else
            this.switchByIndex(0);
    },
    switchBack: function()
    {
        var index = this.currentIndex - 1;
        if(index < 0)
        {
            index = this.arr.length - 1;
        }
        this.hideExInfo();
        this.switchByIndex(index);
    },
    switchNext: function()
    {
        var index = this.currentIndex + 1;
        if(index >= this.arr.length)
        {
            index = 0;
        }
        this.hideExInfo();
        this.switchByIndex(index);
    },
    setInfo: function()
    {
        var text = "( " + (this.currentIndex + 1)*1 + " / " + this.arr.length + " )";
        $('ssinfo').setHTML(text);
    },
    getIndexById: function(id)
    {
        var index = 0;
        for(var i = 0; i < this.arr.length; i++)
        {
            if(this.arr[i].id == id)
            {
                index = i;
                break;
            }
        }
        return index;
    },
    switchById: function(id)
    {
        var index = this.getIndexById(id);
        this.switchByIndex(index);
    },
    switchByIndex: function(index)
    {
        this.currentIndex = index;
        this.setInfo();
        var windowHeight = this.getWindow().getSize().size.y;
        var windowWidth = this.getWindow().getSize().size.x;
        var h = this.arr[index].height;
        var w = this.arr[index].width;
        var addHeight = h - (windowHeight - 65);
        var addWidth = w - (windowWidth - 20);
        show_hide([],['sscontainer','sscontrols','ssexinfo','ssback','ssback2','ssnext','ssnext2']);
        
        var newHeight = windowHeight + addHeight;
        var newWidth = windowWidth + addWidth;
        
        if(newWidth < 540)
            newWidth = 540;

        if(newHeight < 245)
            newHeight = 245;
            
        var newLeft = this.getWindow().getPosition().x - (newWidth - windowWidth) / 2;
        var newTop = this.getWindow().getPosition().y - (newHeight - windowHeight) / 2;

        this.options.size.height = newHeight;
        this.options.size.width = newWidth;
        
        var margin_left = (520 - w) / 2;
        var margin_top = (180 - h) / 2;
        
        if(margin_left < 0)
            margin_left = 0;
        if(margin_top < 0)
            margin_top = 0;
        
        this.drawExInfo();
        
        this.getWindow().setStyles({'height' : newHeight, 'top' : newTop, 'width' : newWidth, 'left' : newLeft});
        $('sscontainer').setHTML('<img src="' + ss.arr[index].src + '" width="' + ss.arr[index].width + '" height="' + ss.arr[index].height + '" style="margin-left: '+margin_left+'px; margin-top: '+margin_top+'px; margin-bottom: '+margin_top+'px" />');
        $('sstitle').setHTML(ss.arr[index].title);
        show_hide(['sscontainer','sscontrols','ssexinfo'],[]);
        $('sshiddeninput').focus();

        this.preload();
        this.drawBackNextControls();
    },
    drawExInfo: function()
    {
        var i = this.currentIndex;
        $('ssavatarimg').setProperty("src", "/images/a_ico_" + this.arr[i].uid + ".png");
        $('ssusername').setHTML('<a href="/profile/'+this.arr[i].username+'/" target="_blank">'+this.arr[i].username+'</a>');
        $('ssdate').setHTML(this.arr[i].date);
        $('ssoriginalimg2').setProperty("href", this.arr[i].osrc);
    },
    drawBackNextControls: function()
    {
        var w = this.arr[this.currentIndex].width;
        var h = this.arr[this.currentIndex].height;
        
        if(w < 520)
            w = 520;
        if(h < 180)
            h = 180;
        
        $('ssback').setStyles({'left' : 10, 'width' : w / 2, 'height' : h});
        $('ssback2').setStyles({'left' : 10, 'width' : w / 2, 'height' : h});
        $('ssbackinfo').setStyles({'left' : 10, 'width' : w / 2, 'margin-top' : ((h - 45) / 2)*1 });
        $('ssnext').setStyles({'left' : 10 + w/2, 'width' : w / 2, 'height' : h});
        $('ssnext2').setStyles({'left' : 10 + w/2, 'width' : w / 2, 'height' : h});
        $('ssnextinfo').setStyles({'left' : 10 + w/2, 'width' : (w / 2) - 20, 'margin-top' : ((h - 45) / 2)*1 });
        $('ssnextinfoarr').setStyles({'margin-left' : (w / 2) - 20 - 60});
        show_hide(['ssback','ssnext'],[]);

        if(this.arr.length > 1)
            show_hide(['ssnext2','ssback2','sscontrols1'],[]);

        this.drawPoints();        
        if(this.arr[this.currentIndex].dr == true)
        {
            this.drawRateControls();
            show_hide(['sscontrols22'],[]);
        }
        else
            show_hide([],['sscontrols22']);
    },
    drawPoints: function()
    {
        var id = this.arr[this.currentIndex].id;
        var cnt = this.arr[this.currentIndex].cnt;
        $('sscontrols21').setHTML('<span id="scPoints' + id + '" class="' + getPointsClass(cnt) + '">' + cnt + ' ' + getPointsText(cnt) +  '</span>&nbsp;&nbsp;&nbsp;');
    },
    drawRateControls: function()
    {
        var id = this.arr[this.currentIndex].id;
        var rating = this.arr[this.currentIndex].rating;
        var plusclass = "plus";
        var minusclass = "minus";
        
        if(rating == 1)
            plusclass = "plus_checked";
        else if(rating == -1)
            minusclass = "minus_checked";
        
        var html = '\
        <span id="scPlus' + id + '" class="' + plusclass + '" onclick="upScreenshot('+id+');">&nbsp;</span>\
        <span id="scMinus' + id + '" class="' + minusclass + '" onclick="downScreenshot('+id+');">&nbsp;</span>\
        ';
        
        if(this.arr[this.currentIndex].reported == true)
        {
            html += 'reported';
        }
        else
        {
            html += '\
            <span id="scReportButton'+id+'" class="black_dashed2" onclick="show_hide([\'scReportConfirm'+id+'\'],[\'scReportButton'+id+'\']);">report</span>\
            <span id="scReportConfirm'+id+'" class="off">are you sure? <span class="black_dashed3" onclick="scReport('+id+');">yes</span> / <span class="black_dashed3" onclick="show_hide([\'scReportButton'+id+'\'],[\'scReportConfirm'+id+'\']);">no</span></span>\
            ';
        }
        
        $('sscontrols22').setHTML(html);
        return true;
    },
    preload: function()
    {
        var indexNext = this.currentIndex + 1;
        var indexPrev = this.currentIndex - 1;
        if(indexNext >= this.arr.length)
            indexNext = 0;
        if(indexPrev < 0)
            indexPrev = this.arr.length - 1;
        
        var img1 = '<img src="' + this.arr[indexNext].src + '" />';
        var img2 = '<img src="' + this.arr[indexPrev].src + '" />';
        $('sspreload').setHTML(img1 + img2);
    },
    loadObject: function(type, objectId)
    {
        if(!$(objectId))
        {
            new Element(type).setProperty('id', objectId).injectInside(document.body);
        }
        return $(objectId);
    },
    getOverlay0: function()
    {
        return this.loadObject('iframe', 'SSOVERLAY0__');
    },
    getOverlay: function()
    {
        return this.loadObject('div', 'SSOVERLAY__');
    },
    getWindow: function()
    {
        return this.loadObject('div', 'SSWINDOW__');
    },
    makeCenter: function(obj, objsize)
    {
        var leftValue = window.getScrollLeft() + (window.getWidth() - objsize.width) / 2;
        var topValue = window.getScrollTop() + (window.getHeight() - objsize.height) / 2;
        obj.setStyles({left: leftValue + 'px', top: topValue + 'px'});
    },
    manageOverlaySize: function()
    {
        $('SSOVERLAY__').setStyles({"height": '0px', "width": '0px'});
        $('SSOVERLAY0__').setStyles({"height": '0px', "width": '0px'});
        $('SSOVERLAY__').setStyles({"height": window.getScrollHeight()+'px', "width": window.getScrollWidth()+'px'});;
        $('SSOVERLAY0__').setStyles({"height": window.getScrollHeight()+'px', "width": window.getScrollWidth()+'px'});;
    },
    stop: function(retCode)
    {
        window.onresize = this.prev_onresize;
        window.onscroll = this.prev_onscroll;
        //window.onkeydown = null;
        ss.getWindow().setOpacity(0);
        ss.getOverlay().setOpacity(0);
        ss.getWindow().remove();
        ss.getOverlay().remove();
        ss.getOverlay0().remove();
        if(retCode > 0)
        {
            if(this.onSuccess != null)
            {
                this.onSuccess();
            }
        }
        if(this.onStop != null)
        {
            this.onStop();
        }
    }
});

function setClassByRating(id, rating, cnt, plusPrefix, minusPrefix, pointsPrefix)
{
    if(rating == 0)
    {
        $(plusPrefix + id).className = 'plus';
        $(minusPrefix + id).className = 'minus';
    }
    else if(rating == 1)
    {
        $(plusPrefix + id).className = 'plus_checked';
        $(minusPrefix + id).className = 'minus';
    }
    else if(rating == -1)
    {
        $(plusPrefix + id).className = 'plus';
        $(minusPrefix + id).className = 'minus_checked';
    }
    $(pointsPrefix + id).removeClass("good_status");
    $(pointsPrefix + id).removeClass("bad_status");
    $(pointsPrefix + id).addClass(getPointsClass(cnt));
    $(pointsPrefix + id).setHTML(cnt + ' ' + getPointsText(cnt));
    
    if((plusPrefix == "scPlus") && ($("_scPlus" + id) != null))
    {
        setClassByRating(id, rating, cnt, "_scPlus", "_scMinus", "_scPoints");
    }
}
function scReport(id)
{
    if($('scReportConfirm' + id) != null)
    {
        $('scReportConfirm' + id).setHTML('reported');
        var i = ss.getIndexById(id);
        ss.arr[i].reported = true;
    }
    if($('_scReportConfirm' + id) != null)
    {
        $('_scReportButton' + id).setHTML('reported');
        $('_scReportConfirm' + id).setHTML('reported');
    }
    var myAjax = new Ajax("http://softicana.com/report.aspx", {method: 'post', postBody: 'screenshotId=' + id}); 
    myAjax.request();
}
function rateScreenshot(id, rating)
{
    var myAjax = new Ajax("http://softicana.com/rateScreenshot.aspx", {method: 'post', postBody: 'screenshotId=' + id + '&rating=' + rating}); 
    myAjax.request();
}
function upScreenshot(id)
{
    var i = ss.getIndexById(id);
    if(ss.arr[i].rating == 1)
    {
        ss.arr[i].rating = 0;
        ss.arr[i].cnt--;
    }
    else if(ss.arr[i].rating == 0)
    {
        ss.arr[i].rating = 1;
        ss.arr[i].cnt++;
    }
    else if(ss.arr[i].rating == -1)
    {
        ss.arr[i].rating = 1;
        ss.arr[i].cnt+=2;
    }
    setClassByRating(id, ss.arr[i].rating, ss.arr[i].cnt, "scPlus", "scMinus", "scPoints");
    rateScreenshot(id, ss.arr[i].rating);
    $('sshiddeninput').focus();
}
function downScreenshot(id)
{
    var i = ss.getIndexById(id);
    if(ss.arr[i].rating == 1)
    {
        ss.arr[i].rating = -1;
        ss.arr[i].cnt-=2;
    }
    else if(ss.arr[i].rating == 0)
    {
        ss.arr[i].rating = -1;
        ss.arr[i].cnt--;
    }
    else if(ss.arr[i].rating == -1)
    {
        ss.arr[i].rating = 0;
        ss.arr[i].cnt++;
    }
    setClassByRating(id, ss.arr[i].rating, ss.arr[i].cnt, "scPlus", "scMinus", "scPoints");
    rateScreenshot(id, ss.arr[i].rating);
    $('sshiddeninput').focus();
}

var ss;

function screenShow(itemId, startId)
{
ss = new ScreenShow({ItemId: itemId, StartId: startId, size: {width: 660, height: 245}});
ss.load();
}

/*****************************************************************************/
/* </SCREENSHOW> *************************************************************/
/*****************************************************************************/

function _upScreenshot(id)
{
    var pointsInnerHtml = $('_scPoints' + id).innerHTML;
    var pointsArr = pointsInnerHtml.split(' ');

    var cnt = pointsArr[0] * 1;
    var rating = 0;
    
    if($('_scMinus' + id).className == "minus_checked")
    {
        cnt++;
    }
    var className = $('_scPlus' + id).className;
    if(className == "plus")
    {
        cnt++;
        rating = 1;
    }
    else if(className == "plus_checked")
    {
        cnt--;
        rating = 0;
    }
    setClassByRating(id, rating, cnt, "_scPlus", "_scMinus", "_scPoints");
    rateScreenshot(id, rating);
}

function _downScreenshot(id)
{
    var pointsInnerHtml = $('_scPoints' + id).innerHTML;
    var pointsArr = pointsInnerHtml.split(' ');

    var cnt = pointsArr[0] * 1;
    var rating = 0;

    if($('_scPlus' + id).className == "plus_checked")
    {
        cnt--;
    }
    var className = $('_scMinus' + id).className;
    if(className == "minus")
    {
        cnt--;
        rating = -1;
    }
    else if(className == "minus_checked")
    {
        cnt++;
        rating = 0;
    }
    setClassByRating(id, rating, cnt, "_scPlus", "_scMinus", "_scPoints");
    rateScreenshot(id, rating);
}

/*****************************************************************************/
/* <MODALBOX> ****************************************************************/
/*****************************************************************************/

var ModalBox = new Class({
    initialize: function(options){
        this.options = options;
        this.initialHeight = options.size.height + 0;
    }
});

ModalBox.implement({
    load: function(){
        this.getOverlay0().setOpacity(0.01);
        this.getOverlay().setOpacity(0.6);
        this.manageOverlaySize();
        this.getWindow().setStyles({width: this.options.size.width + 'px', height: this.options.size.height + 'px'});
        this.makeCenter(this.getWindow(), this.options.size);
        this.internalWidth = this.options.size.width - 20;
        this.internalHeight = this.options.size.height - 45;
        this.initialInternalHeight = this.internalHeight + 0;
        
        var overflowValue = '';
        if(this.options.isOverflowHidden == true)
        {
            overflowValue = 'overflow: hidden;';
        }
        
        this.getWindow().setHTML('\
        <div class="modal_header">\
        <div class="hdr1">' + this.options.header + '</div>\
        <div class="hdr2"><span class="modal_close" onclick="box.stop(0);">close this window</span></div>\
        </div>\
        <div class="modal_container">\
        <iframe frameborder="0" hspace="0" src="' + this.options.url + '" id="IFRAME__" style="' + overflowValue + 'width: ' +this.internalWidth+ 'px; height: ' +this.internalHeight+ 'px" />\
        </div>\
        ');
        this.prev_onresize = window.onresize;
        this.prev_onscroll = window.onscroll;
        window.onresize = function() {
            box.makeCenter(box.getWindow(), box.options.size);
            box.manageOverlaySize();
            if(box.prev_onresize != null)
                box.prev_onresize();
            };
        window.onscroll = function() {
            box.makeCenter(box.getWindow(), box.options.size);
            if(box.prev_onscroll != null)
                box.prev_onscroll();
            }
    },
    loadObject: function(type, objectId)
    {
        if(!$(objectId))
        {
            new Element(type).setProperty('id', objectId).injectInside(document.body);
        }
        return $(objectId);
    },
    increaseHeight: function(addValue)
    {
        box.options.size.height = box.options.size.height + addValue;
        box.getWindow().setStyles({height: box.options.size.height + 'px'});
        box.internalHeight = box.internalHeight + addValue;
        $('IFRAME__').setStyles({height: box.internalHeight + 'px'});
        var topValue = window.getScrollTop() + (window.getHeight() - box.options.size.height) / 2;
        box.getWindow().setStyles({top: topValue + 'px'});
    },
    increaseHeightFromInitial: function(addValue)
    {
        box.options.size.height = box.initialHeight + addValue;
        box.getWindow().setStyles({height: box.options.size.height + 'px'});
        box.internalHeight = box.initialInternalHeight + addValue;
        $('IFRAME__').setStyles({height: box.internalHeight + 'px'});
        var topValue = window.getScrollTop() + (window.getHeight() - box.options.size.height) / 2;
        box.getWindow().setStyles({top: topValue + 'px'});
    },
    getOverlay0: function()
    {
        return this.loadObject('iframe', 'OVERLAY0__');
    },
    getOverlay: function()
    {
        return this.loadObject('div', 'OVERLAY__');
    },
    getWindow: function()
    {
        return this.loadObject('div', 'WINDOW__');
    },
    makeCenter: function(obj, objsize)
    {
        var leftValue = window.getScrollLeft() + (window.getWidth() - objsize.width) / 2;
        var topValue = window.getScrollTop() + (window.getHeight() - objsize.height) / 2;
        obj.setStyles({left: leftValue + 'px', top: topValue + 'px'});
    },
    manageOverlaySize: function()
    {
        $('OVERLAY__').setStyles({"height": '0px', "width": '0px'});
        $('OVERLAY0__').setStyles({"height": '0px', "width": '0px'});
        $('OVERLAY__').setStyles({"height": window.getScrollHeight()+'px', "width": window.getScrollWidth()+'px'});;
        $('OVERLAY0__').setStyles({"height": window.getScrollHeight()+'px', "width": window.getScrollWidth()+'px'});;
    },
    stop: function(retCode)
    {
        window.onresize = this.prev_onresize;
        window.onscroll = this.prev_onscroll;
        box.getWindow().setOpacity(0);
        box.getOverlay().setOpacity(0);
        box.getWindow().remove();
        box.getOverlay().remove();
        box.getOverlay0().remove();
        if(retCode > 0)
        {
            if(this.onSuccess != null)
            {
                this.onSuccess();
            }
        }
        if(this.onStop != null)
        {
            this.onStop();
        }
    }
});

var box;

function refreshScList(sessionId, loadingId, sclistId, avatarLoadingId, avatarContainerId, btnUploadAvatarId)
{
    var url = 'http://softicana.com/personal/getScreenshotsList.aspx';// sessid + sessionId;
    show_hide([loadingId],[sclistId]);
    var myAjax = new Ajax(url, {
        method: 'post',
        postBody: 'sessid=' + sessionId,
        update: $(sclistId),
        onComplete: function()
        {
            show_hide([sclistId],[loadingId]);
            enableAvatarSelection(sessionId, avatarLoadingId, avatarContainerId, sclistId, btnUploadAvatarId);
        }
    }); 
    myAjax.request();
}

function enableAvatarSelection(sessionId, avatarLoadingId, avatarContainerId, sclistId, btnUploadAvatarId)
{
    if($(sclistId).innerHTML == "")
    {
        $(btnUploadAvatarId).setHTML("Please upload screenshots first");
    }
    else
    {
        $(btnUploadAvatarId).setHTML("<span class=\"blue_dashed\" onclick=\"avtmanager('" + sessionId + "','" + avatarLoadingId +"','" + avatarContainerId + "');\">Go to Avatar Manager</a>");
    }
}

function scmanager(sessionId, loadingId, sclistId, btnUploadAvatarId, avatarLoadingId, avatarContainerId)
{
    box = new ModalBox({url: 'http://softicana.com/personal/scmanager/scmanager.aspx?sess=' + sessionId, size: {width: 660, height: 130}, header: 'Screenshot manager'});
    box.onStop = function() { refreshScList(sessionId, loadingId, sclistId, avatarLoadingId, avatarContainerId, btnUploadAvatarId); refreshAvatar(sessionId, avatarLoadingId, avatarContainerId); }
    box.load();
}

function scmanager2(itemId)
{
    box = new ModalBox({url: 'http://softicana.com/personal/scmanager/scmanager.aspx?sess=auto&itemId=' + itemId, size: {width: 660, height: 130}, header: 'Screenshot manager'});
    box.load();
}

function refreshAvatar(sessionId, avatarLoadingId, avatarContainerId)
{
    var url = 'http://softicana.com/personal/getSoftwareAvatar.aspx';
    show_hide([avatarLoadingId],[avatarContainerId]);
    var myAjax = new Ajax(url, {method: 'post', postBody: 'sessid=' + sessionId, update: $(avatarContainerId), onComplete: function() { show_hide([avatarContainerId],[avatarLoadingId]); }}); 
    myAjax.request();
}

function avtmanager(sessionId, avatarLoadingId, avatarContainerId)
{
    box = new ModalBox({url: 'http://softicana.com/personal/avtmanager/avtmanager.aspx?sess=' + sessionId, size: {width: 660, height: 278}, header: 'Avatar manager', isOverflowHidden: true});
    box.onStop = function() { refreshAvatar(sessionId, avatarLoadingId, avatarContainerId); }
    box.load();
}

/*****************************************************************************/
/* </MODALBOX> ***************************************************************/
/*****************************************************************************/

/*****************************************************************************/
/* <SLIDER> ******************************************************************/
/*****************************************************************************/

var ScreenshotSlider = new Class({
    initialize: function(options)
    {
        this.options = options;
        this.options.container = $(options.containerId);
        this.options.frame = $(options.frameId);
        this.options.tracker = $(options.trackerId);
        this.currentX = 0;
    }
});

ScreenshotSlider.implement({
    init: function()
    {
        new Fx.Scroll(this.options.container, {duration: 0}).scrollTo(0, 0);
    },
    needScrollBar: function()
    {
        if(this.options.container.getSize().size.x < this.options.frame.getSize().size.x)
        {
            return true;
        }
        return false;
    },
    resize: function()
    {
        this.options.container.setStyles({'width': '1px'});
        this.options.container.setStyles({'width': this.options.tracker.getSize().size.x + 'px'});
        if(this.options.centerIfNoScroll)
        {
            if(!this.needScrollBar())
            {
                var a = (this.options.container.getSize().size.x - this.options.frame.getSize().size.x) / 2;
                this.options.frame.setStyles({'margin-left': a + 'px' });
            } else {
                this.options.frame.setStyles({'margin-left': '0px' });
            }
        }
        this.currentX = this.options.container.getSize().scroll.x;
        this.showHideScrollBar();
        this.enableHiddenElements();
    },
    enableHiddenElements: function()
    {
        $$('#' + this.options.frameId + ' .slide').each(function(element)
        {
            var a = element.getPosition().x - getScSlider().options.container.getPosition().x;
            if((a >= getScSlider().currentX) && a <= (getScSlider().currentX + getScSlider().options.tracker.getSize().size.x))
            {
                // visible
                $$(element.getElementsByTagName('img')).each(function(imgElement)
                {
                    if(imgElement.hasClass('cached'))
                    {
                        imgElement.setProperty('src', imgElement.getProperty('realsrc'));
                        imgElement.removeProperty('realsrc');
                        imgElement.removeClass('cached');
                    }
                });
            }
        });
    },
    showHideScrollBar: function()
    {
        if(this.needScrollBar())
        {
            if($('st').hasClass('st_colors0'))
            {
                $('st').removeClass('st_colors0');
                $('st').addClass('st_colors1');
            }
        } else {
            $('st').removeClass('st_colors1');
            $('st').removeClass('st_colors2');
            $('st').addClass('st_colors0');
            new Fx.Scroll(this.options.container, {duration: 0}).scrollTo(this.currentX, 0);
        }
    },
    slideLeft: function()
    {
        if(this.currentX > 0)
        {
            this.currentX = this.currentX - this.options.size;
            new Fx.Scroll(this.options.container, {duration: this.options.duration}).scrollTo(this.currentX, 0);
        }
        else
        {
            this.currentX = this.options.container.getSize().scroll.x;
        }
        this.enableHiddenElements();
    },
    slideRight: function()
    {
        if((this.currentX + this.options.container.getSize().size.x) < this.options.container.getSize().scrollSize.x)
        {
            this.currentX = this.currentX + this.options.size;
            new Fx.Scroll(this.options.container, {duration: this.options.duration}).scrollTo(this.currentX, 0);
        }
        else
        {
            this.currentX = this.options.container.getSize().scroll.x;
        }
        this.enableHiddenElements();
    }
});

var scSlider;

function getScSlider()
{
    if(scSlider == null)
    {
        // <ugly_hack> (TODO)
        var _frameId = "";
        var _centerIfNoScroll = false;
        if($('Screenshots_mySliderFrame') != null)
            _frameId = "Screenshots_mySliderFrame";
        else if($('mySliderFrame') != null)
        {
            _frameId = "mySliderFrame";
            _centerIfNoScroll = true;
        }
        else
            alert("can't find frameId");
        // </ugly_hack>

        scSlider = new ScreenshotSlider({ containerId: 'mySlider', frameId: _frameId, trackerId: 'mySlideTracker', size: 182, duration: 500, centerIfNoScroll: _centerIfNoScroll });
    }
    return scSlider;
}

function initSlider()
{
    if($('mySlider') != null)
    {
        getScSlider().init();
        window.onresize = function() { getScSlider().resize(); }
        getScSlider().resize();
    }
}

function st_over()
{
    if($('st').hasClass('st_colors1'))
    {
        $('st').removeClass('st_colors1');
        $('st').addClass('st_colors2');
    }
}

function st_out()
{
    if($('st').hasClass('st_colors2'))
    {
        $('st').removeClass('st_colors2');
        $('st').addClass('st_colors1');
    }
}

function slideLeft()
{
    getScSlider().slideLeft();
}

function slideRight()
{
    getScSlider().slideRight();
}

/*****************************************************************************/
/* </SLIDER> *****************************************************************/
/*****************************************************************************/
