
function fixImage(img, width, height) {
   var isIE = navigator.userAgent.toLowerCase().indexOf("msie") >= 0;
   if (!isIE)
      return;

   var currentSrc = img.src;

   var imgStyle = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + currentSrc + "', sizingMethod='scale')";
   img.src = 'images/clearpixel.gif';
   img.style.width  = width + "px";
   img.style.height = height + "px";
   img.style.filter =  imgStyle;
}

var navigationPages = [ "home.page", "eatures.page", "demos.page", "docs.page", "downloads.page", "about.page" ];
var navigationLinks = [ "homeLink", "featuresLink", "demosLink", "docsLink", "downloadsLink", "aboutLink" ];

function showMenuContext() {
   var currentLocation = document.location.href;
   for ( var i = 0 ; i < navigationPages.length ; i++ )
      if ( currentLocation.indexOf(navigationPages[i]) != -1 ) { setLinkStyle($(navigationLinks[i])); break; }
}

function setLinkStyle(link) {
   link.style.fontWeight = 'bold';
   var currentFontSize = parseInt(RicoUtil.getElementsComputedStyle(link, "fontSize", "font-size" ));
   link.style.fontSize = (currentFontSize+2) + "px";
   link.style.color    = 'white';
}

//
// Upload image to mobile. add by Creator. Whats wrong? :)
//
var s_partner_domain = 'gsm.tuse.com.ua';
function gsmfuns(url) {
    window.open('http://' + s_partner_domain + '/?img='+url,'_blank',
    'height=617,width=786,status=no,toolbar=no,menubar=no,location=no');
}

//
// Tranquil utils
//

// Set visual state of the validating field
function SetFieldState()
{
    var sId = this.oFieldNode.getAttribute('id')
    var aLabels = this.oFieldNode.form.getElementsByTagName('label')
    for( var i=0; i<aLabels.length; i++ )
    {
         if( aLabels[i].htmlFor == sId )
         {
               aLabels[i].style.color = this.bValidated ? '' : 'red'
               break
         }
    }
}

/**
 * Hide dynatable scroller hint 
 */
function idleTableScrollerTip() { 
   var scrollerTip = $('scrollerTip'); 
   scrollerTip.style.visibility = 'hidden';
}

/**
 * display dynatable scroller hint 
 */
function updateTableScrollerTip( liveGrid, offset ) {

   var metaData = liveGrid.metaData;
   var grid     = liveGrid.table;

   var scrollerTip = $('scrollerTip');
   var range = offset + 1;
   
   scrollerTip.innerHTML = '<span class="scrollerTipSpan">' + range + '</span>';
   var topY = metaData.getTotalRows() > 0
                ? (offset / metaData.getTotalRows())
                          * (grid.parentNode.offsetHeight - (metaData.scrollArrowHeight*2) - scrollerTip.offsetHeight/2)
                          + metaData.scrollArrowHeight
                : 0;
                            

   var scrollerWidth = 18;
   var padding = 4;
    
   var vpp = RicoUtil.toViewportPosition(liveGrid.viewPort.div.parentNode);

   scrollerTip.style.top = vpp.y + topY + 'px';
   scrollerTip.style.left = vpp.x + grid.offsetWidth + scrollerWidth + padding + 'px';
   scrollerTip.style.visibility = 'visible';
}

function getLikeElements(tagName, attrName, attrValue) {
    return getLikeChildren(document, tagName, attrName, attrValue);
}

function getLikeChildren(parent, tagName, attrName, attrValue) {
    var startSet;
    var endSet = new Array( );
    if (tagName) {
        startSet = parent.getElementsByTagName(tagName);
    } else {
        startSet = (parent.all) ? parent.all : 
            parent.getElementsByTagName("*");
    }
    if (attrName) {
        for (var i = 0; i < startSet.length; i++) {
            if (startSet[i].getAttribute(attrName)) {
                if (attrValue) {
                    if (startSet[i].getAttribute(attrName) == attrValue) {
                        endSet[endSet.length] = startSet[i];
                    }
                } else {
                    endSet[endSet.length] = startSet[i];
                }
            }
        }
    } else {
        endSet = startSet;
    }
    return endSet;
}

function markCheckBoxes(mask, value)
{
    var set = getLikeElements('input', 'name', mask);
    for (var i = 0; i < set.length; i++)
    {
        set[i].checked = value;
    }
} 

// Make it common
function setupProc(procName, procUrl, proc)
{
    ajaxEngine.registerRequest(procName, procUrl);
    ajaxEngine.registerAjaxObject(procName, proc);
}

// Refresh LiveGrid table
function refreshTable(tableName) {
    table = eval('v'+tableName);
    if (table != null)
    {
        //table.addRequestParams('seed=' + Math.random());
        table.resetContents();
        table.requestContentRefresh(0);
    }
} 

window.onerror = null;

function OpenCenterWindow( sUri, iWidth, iHeight )
{
        var sWindowName = 'win' + Math.floor( Math.random()*1000 )
        var iRealWidth = iWidth ? iWidth : 600
        var iRealHeight = iHeight ? iHeight : screen.height - 300

        var iLeft = Math.round( (screen.width-iRealWidth)/2 )
        var iTop =  Math.round( (screen.height-iRealHeight)/2 ) - 35

        var sWindowOptions = 'status=yes,menubar=no,toolbar=no'
        sWindowOptions += ',resizable=no,scrollbars=yes,location=no'
        sWindowOptions += ',width='  + iRealWidth
        sWindowOptions += ',height=' + iRealHeight
        sWindowOptions += ',left='   + iLeft
        sWindowOptions += ',top='       + iTop

        var oWindow = window.open( sUri, sWindowName, sWindowOptions )
        oWindow.focus();
        return oWindow
}

// Editor toolbar


var edButtons = new Array();
var edLinks = new Array();
var edOpenTags = new Array();

function edButton(id, display, tagStart, tagEnd, access, open) {
    this.id = id;               // used to name the toolbar button
    this.display = display;     // label on button
    this.tagStart = tagStart;   // open tag
    this.tagEnd = tagEnd;       // close tag
    this.access = access;       // access key
    this.open = open;           // set to -1 if tag does not need to be closed
}

function zeroise(number, threshold) {
    // FIXME: or we could use an implementation of printf in js here
    var str = number.toString();
    if (number < 0) { str = str.substr(1, str.length) }
    while (str.length < threshold) { str = "0" + str }
    if (number < 0) { str = '-' + str }
    return str;
}

var now = new Date();
var datetime = now.getFullYear() + '-' +
                zeroise(now.getMonth() + 1, 2) + '-' +
                zeroise(now.getDate(), 2) + 'T' +
                zeroise(now.getHours(), 2) + ':' +
                zeroise(now.getMinutes(), 2) + ':' +
                zeroise(now.getSeconds() ,2) +
                // FIXME: we could try handling timezones like +05:30 and the like
                zeroise((now.getTimezoneOffset()/60), 2) + ':' + '00';

edButtons[edButtons.length] =
new edButton('ed_strong'
,'str'
,'[B]'
,'[/B]'
,'b'
);

edButtons[edButtons.length] =
new edButton('ed_em'
,'em'
,'[I]'
,'[/I]'
,'i'
);

edButtons[edButtons.length] =
new edButton('ed_pre'
,'code'
,'[CODE]'
,'[/CODE]'
,'c'
);

edButtons[edButtons.length] =
new edButton('ed_block'
,'b-quote'
,'[QUOTE]'
,'[/QUOTE]'
,'q'
);

/*
edButtons[edButtons.length] =
new edButton('ed_link'
,'link'
,''
,'</a>'
,'a'
); // special case
*/
function edLink() {
    this.display = '';
    this.URL = '';
    this.newWin = 0;
}

function edShowButton(button, i) {
    if (button.id == 'ed_img') {
        document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
    }
    else if (button.id == 'ed_link') {
        document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
    }
    else {
        document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '"  />');
    }
}

function edAddTag(button) {
    if (edButtons[button].tagEnd != '') {
        edOpenTags[edOpenTags.length] = button;
        document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value;
    }
}

function edRemoveTag(button) {
    for (i = 0; i < edOpenTags.length; i++) {
        if (edOpenTags[i] == button) {
            edOpenTags.splice(i, 1);
            document.getElementById(edButtons[button].id).value =       document.getElementById(edButtons[button].id).value.replace('/', '');
        }
    }
}

function edCheckOpenTags(button) {
    var tag = 0;
    for (i = 0; i < edOpenTags.length; i++) {
        if (edOpenTags[i] == button) {
            tag++;
        }
    }
    if (tag > 0) {
        return true; // tag found
    }
    else {
        return false; // tag not found
    }
}

function edCloseAllTags() {
    var count = edOpenTags.length;
    for (o = 0; o < count; o++) {
        edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
    }
}

function edToolbar() {
    document.write('<div id="ed_comment_toolbar">');
    for (i = 0; i < edButtons.length; i++) {
        edShowButton(edButtons[i], i);
    }
    document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" value="Close Tags" />');
    document.write('</div>');
}

// insertion code

function edInsertTag(myField, i) {
    //IE support
    if (document.selection) {
        myField.focus();
         sel = document.selection.createRange();
        if (sel.text.length > 0) {
            sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd;
        }
        else {
            if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
                sel.text = edButtons[i].tagStart;
                edAddTag(i);
            }
            else {
                sel.text = edButtons[i].tagEnd;
                edRemoveTag(i);
            }
        }
        myField.focus();
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        var cursorPos = endPos;
        var scrollTop = myField.scrollTop;

        if (startPos != endPos) {
            myField.value = myField.value.substring(0, startPos)
                              + edButtons[i].tagStart
                              + myField.value.substring(startPos, endPos)
                              + edButtons[i].tagEnd
                              + myField.value.substring(endPos, myField.value.length);
            cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
        }
        else {
            if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
                myField.value = myField.value.substring(0, startPos)
                                  + edButtons[i].tagStart
                                  + myField.value.substring(endPos, myField.value.length);
                edAddTag(i);
                cursorPos = startPos + edButtons[i].tagStart.length;
            }
            else {
                myField.value = myField.value.substring(0, startPos)
                                  + edButtons[i].tagEnd
                                  + myField.value.substring(endPos, myField.value.length);
                edRemoveTag(i);
                cursorPos = startPos + edButtons[i].tagEnd.length;
            }
        }
        myField.focus();
        myField.selectionStart = cursorPos;
        myField.selectionEnd = cursorPos;
        myField.scrollTop = scrollTop;
    }
    else {
        if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
            myField.value += edButtons[i].tagStart;
            edAddTag(i);
        }
        else {
            myField.value += edButtons[i].tagEnd;
            edRemoveTag(i);
        }
        myField.focus();
    }
}

function edInsertContent(myField, myValue) {
    //IE support
    if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        sel.text = myValue;
        myField.focus();
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)
                          + myValue
                             + myField.value.substring(endPos, myField.value.length);
        myField.focus();
        myField.selectionStart = startPos + myValue.length;
        myField.selectionEnd = startPos + myValue.length;
    } else {
        myField.value += myValue;
        myField.focus();
    }
}

function edInsertLink(myField, i, defaultValue) {
    if (!defaultValue) {
        defaultValue = 'http://';
    }
    if (!edCheckOpenTags(i)) {
        var URL = prompt('Enter the URL' ,defaultValue);
        if (URL) {
            edButtons[i].tagStart = '<a href="' + URL + '">';
            edInsertTag(myField, i);
        }
    }
    else {
        edInsertTag(myField, i);
    }
}

var edQ;

    function copyQ()
    {   
        sel = document.selection.createRange();
        edQ = sel.text;
        
    }

    function pasteQ(author, date)
    {   
        //edInsertContent(edCanvas, "<blockquote"+((author != undefined)? " author=\""+author+"\"" : "") +
        //     ((date != undefined)? " date=\""+date+"\"": "") + ">" + edQ + "</blockquote>");

        edInsertContent(edCanvas, "[quote]" + edQ + "[/quote]");
    }

function get_gift(user_id) {
    var url = '/ext/gifts/get_gift.php?user_id=' + user_id;
    new Ajax.Request(url, {
			    method: 'get',
			    onComplete: function(transport) {
								document.write(transport.responseText);
							    }
		});
}