/*
**  Copyright (c) 2005 Willco Limited
*/

var st = new Date().getTime();
var savedDivs = new Object();
var savedObjs;
var intTimer;
var lg;
var progressImage = new Image();
var custWin;
var zanadu;

progressImage.src = "/library/progress.gif";

function startTime() {
    return st ? st : (st = new Date().getTime());
}

function setTimer(timestamp, divs) {
    startTime();
    savedDivs = divs;
    for (x in divs) if (!savedDivs[x]) savedDivs[x] = divs[x];
    intTimer = setInterval("updateTimers()", 1000);
}

function updateTimers() {
    var msec = new Date();
    var elapsed = msec.getTime() - startTime();
    var key;
    var o;
    if (savedDivs && document.getElementById) {
        for (key in savedDivs) {
            o = savedDivs[key];
            if ($(key)) {
                var t = o - elapsed;
                msec.setTime(t);
                var h = msec.getUTCHours();
                var m = msec.getMinutes();
                h = (h < 10) ? "0"+h : h;
                m = (m < 10) ? "0"+m : m;
                
                var html;
                if (o == -1) html = 'Waiting...';
                else if (o == -2) html = 'Downloading';
                else if (t <= 0) html = 'Expired';
                else if (h!='NaN') html = h+'h '+m+'m';
                
                if (html != $(key).innerHTML) $(key).innerHTML = html;
            }
        }
    }
}

function dynamic_download2(e) {
    var temp = e.responseText.split(/<\/?base>/i)[1].split(/<\/?id>/i);
    var tr = temp[0];
    var id = temp[1];
    var old_tr = $('row'+id);
    
    temp = document.createElement('div');
    temp.innerHTML='<table><tbody>'+tr+'</tbody></table>';
    
    tr = temp.getElementsByTagName('tr').item(0);
    
    old_tr.parentNode.replaceChild(tr, old_tr);
    update_item(id);
}

function dynamic_download(objs) {
    savedObjs = objs;
    for (k in savedObjs) {
        var id = savedObjs[k];
        
        if (id != 0 && $(k)) {
        
            new Ajax.Request('/shop/repository/', {
                method:'get',
                parameters:'fetch=' + id,
                asynchronous:true,
                onComplete:dynamic_download2
            });
            savedDivs['time' + id] = -2;
            //savedObjs[id] = 0;
            //return;
        }
    }
}

function update_item(id) {
    if (id) {
        var d = new Date();
        x = d.getTime();
        y = x - startTime();
        z = y + 86399000;
        d.setTime(z);
        var h = d.getUTCHours();
        var m = d.getMinutes();
        h = (h < 10) ? "0"+h : h;
        m = (m < 10) ? "0"+m : m;
        
        savedDivs['time'+id] = z;
        
        //alert(x+','+y+','+z+' (time'+id+','+savedDivs['time'+id]+')');
        updateTimers();
    }
}

// Toggles the fields and buttons on the index page when a different country is
// selected
function toggle(on) {
    if ($ && document.getElementsByTagName) {
    
        $('pcn').style.display = (on <= 2) ? '' : 'none';
        $('coc').style.display = (on == 9) ? '' : 'none';
        $('sfo').style.display = (on < 1)  ? '' : 'none';
		if (!document.sf.getElementsByTagName('input').item(2).checked)
        	document.sf.getElementsByTagName('input').item(1).checked = true;
        c = document.sf.c.options[document.sf.c.selectedIndex].value;
        $('flag').src='images/'+c+'.gif';
        $('flag').style.padding='0';
        $('s').focus();
    }
}

function showProgress(img) {
    if (i = $(img)) {
        i.src = progressImage.src;
        if (img == 'flag') i.style.padding = "21px";
    }
}

function show(objId, url) {
    if (o = $(objId)) {
        o.style.display = 'block';
        if (url != '') document.location = url;
    }
}

function editName(itemID,sender,text) {
    $('label'+itemID).innerHTML=
        '<input type="submit" value="Save" onclick="return ccRename(this,' + itemID + ')" style="float:right"> ' +
        '<input id="xjs' + itemID + '" name="newname[' + itemID + ']" value="' + text + '">';
    $('xjs'+itemID).focus();
}

function ccRename(obj, itemID) {
    var url = 'https://web.researcha.com/shop/checkout/';
    var pars = 'ajax=y&newname[' +itemID + ']=' + escape($('xjs' + itemID).value);
    var a = new Ajax.Updater('label'+itemID, url+'?'+pars, {asynchronous:true});
    return false;
}

function instantLogin(a,b) {
    var url = '/login.php?ajax=y';
    url += '&' + $(a).name + '=' + escape($F(a));
    url += '&' + $(b).name + '=' + escape($F(b));
    var x = new Ajax.Updater('statusinner', url, {asynchronous:true,
        onComplete:function(){$('xqlp').focus();}});
    return false;
}

function instantLogout(full) {
    var url = '/logout.php?ajax='+full;
    var x = new Ajax.Updater('statusinner', url, {asynchronous:true});
    return false;
}

function beginInstantLogin(email) {
    $('statusinner').innerHTML = '<form action="login.php" method="POST" onsubmit="return instantLogin(\'xqle\',\'xqlp\')" class="plain" style="text-align:right"><b>Email:</b><input name="community_email" value="'+email+'" id="xqle" class="plain"><br><b>Password:</b><input type="password" name="community_password" id="xqlp" class="plain"><br><input type="submit" value="Login" class="hidden unhidden"><a href="/lostpass.php?email='+email+'" class="plain">Lost password?</a></form>';
    $('xqlp').focus();
    return false;
}

function verifyChecked(obj) {
    var x;
    for (x=0;x<obj.length;x++) if (obj[x].checked) return true;
    return false;
}

function toggleRow(obj) {
    obj.parentNode.parentNode.parentNode.style.backgroundColor = obj.checked ? '#f4fcd6' : '#fff';
}

function disable_link(obj) {
    obj.style.backgroundImage =
        obj.style.backgroundImage.replace(/(addtocart).gif/, '$1_dim.gif');
    obj.style.backgroundPosition = "top left";
}

function disable_table_row(row) {
    var inputs = row.getElementsByTagName('input');
    var links = row.getElementsByTagName('a');
    var x;
    
    for (x=0;x<inputs.length;x++) {
        inputs[x].disabled = true;
        inputs[x].checked = false;
        toggleRow(inputs[x]);
    }
    x=0;
    for (x=0;x<links.length;x++) disable_link(links[x]);
}

function popup_action(val,chk) {
    if (val == 'selectall' || val == 'selectnone' || val == 'disable') {
        for(x=0;x<chk.length;x++) {
        	var row = chk[x].parentNode.parentNode.parentNode;
            if (val == 'disable' && chk[x].checked == true) {
                disable_table_row(row);
            }
            if (!chk[x].disabled && row.style.display != 'none')
            	chk[x].checked = (val == 'selectall');
            toggleRow(chk[x]);
        }
        return (val != 'disable') ? 'noselect' : '';
    }
    display_progress('minicart');
    return val;
}

function headerPopup(obj, verify, ajax) {
    var val = obj.options[obj.selectedIndex].value;
    var chk = obj.form.getElementsByTagName('input');
    
    val = popup_action(val,chk);
    
    if (verify && val != 'noselect' && val != '') if (!verifyChecked(chk)) {
        alert('Please tick at least one item before selecting an option from this menu.');
        val = 'noselect';
    }
    
    if (val == 'noselect') return (obj.options[0].selected = true);
    
    if (ajax!=0) {
        add_to_minicart(obj);
        obj.options[0].selected = true;
        popup_action('disable', chk);
        return false;
    }
    
    return obj.form.submit();
}

function update_minicart(url) {
    new Ajax.Updater('minicart', url, {
        method:'post',
        postBody:'minicart=y',
        onLoading:function(x){display_progress('minicart');},
        onComplete:function(x){undisplay_progress('minicart');},
        onFailure:function(x){alert('minicart');}
    });
}

function add_to_minicart(obj) {
    var dest = obj.form.action;

    new Ajax.Updater('minicart', dest, {
        method:'post',
        postBody:'minicart=y&'+Form.serialize(obj.form),
        onLoading:function(x){display_progress('minicart');},
        onComplete:function(x){undisplay_progress('minicart');}
    });

    return false;
}

function link_minicart(obj) {
    var dest = obj.href+'&minicart=y';
    display_progress('minicart');
    new Ajax.Updater('minicart', dest, {
        onSuccess:function(x){undisplay_progress('minicart');}
    });
    disable_table_row(obj.parentNode.parentNode);
    return false;
}

function empty_minicart(obj) {
    if (confirm('Are you sure?')) {
        link_minicart(obj);
        return false;
    }
    
    return false;
}

function popup_customer() {
  if (custWin && !custWin.closed) custWin.close();
  custWin = window.open('/invoices/admin/customer_popup.php?x=shop','cust', 
      'height=350,width=300,scrollbars=yes,top=300,left=300');
}

function update_expired_header () {

}

function display_progress(obj) {
    $(obj).style.background = "url("+progressImage.src+") no-repeat center center";
}

function undisplay_progress(obj) {
    $(obj).style.background = "none";
}

function prepare_expired(t) {
    var opts = { prefetchBuffer: true, onscroll: update_expired_header };
    lg = new Rico.LiveGrid ('expired_grid', 10, t, '/shop/repository/g.php', opts);
}

function click_tab(tab) {
	tab = $(tab);
	
	var sel = $(sel_tab);
	var trs = sel.parentNode.parentNode.getElementsByTagName('tr');
	
	if (tab == sel) return false;
	
	tab.className = 'selected';
	sel.className = '';
	sel_tab = tab.id;
	
	for (i = 0; i < trs.length; i ++) {
		var row = trs.item(i);
		//alert('row:'+row);
		if (row.className == tab.id || tab.id == 'tab_all')
			Element.show(row);
		else
			Element.hide(row);
	}
	
	return false;
}
