
function initXMLReq() {
	var req = null;
	if (typeof XMLHttpRequest != 'undefined') {
		req = new XMLHttpRequest();
	} else if (typeof ActiveXObject != 'undefined') {
		var XMLObjects = ["MSXML2.XMLHttp", "MSXML3.XMLHttp", "MSXML.XMLHttp", "Microsoft.XMLHttp"];
		for (var i=0; i<XMLObjects.length; i++) {
			try {
				req = new ActiveXObject(XMLObjects[i]);
			} catch (e) {}
		}
	}
	return req;
}


function Replicator(pnode,html,itemtagname,itemclassname,nhtml){

	var extrael = null;

	var custom_function = function(){ }
	
	this.setCustomFunction = function(f){
		custom_function = f;
	}
	
	this.customFunction = function(param){
		return custom_function(param);
	}
	
	this.append = function(){
		var e = document.createElement(itemtagname);
		e.className = itemclassname;
		if(typeof(nhtml)!='undefined'){
			var l = nhtml.length;
			var ihtml = '';
			for(i=0;i<l;i++){
				if(extrael){
					var ee = document.createElement(extrael);
					ee.innerHTML = nhtml[i];
					e.appendChild(ee);
				}else{
					ihtml += nhtml[i];
				}
			}
			if(!extrael){
				e.innerHTML = ihtml;
			}
		}else{
			if(extrael){
				ee = document.createElement(extrael);
				ee.innerHTML = html;
				e.appendChild(ee);
			}else{
				e.innerHTML = html;
			}
		}
		pnode.appendChild(e);		
	}
	
	this.remove = function(p){
		var e = p;
		for(;e.tagName!=itemtagname&&e.className!=itemclassname;e = e.parentNode);
		e.parentNode.removeChild(e);
	}
	
	this.setExtrael = function(value){
		extrael = value;
	}

}

// TDateTimeInput

function TDateTimeInput(prefix){

	var _instance = this;

	this.month_days = new Array(
	    31,[28,29],31,30,31,30,31,31,30,31,30,31
	    );

	this.clearOptions = function(parent_el){
		ret = parent_el;
	    ch = ret.childNodes;
	    l = ch.length;
	    for(i=l-1;i>-1;i--){
	        ret.removeChild(ch.item(i));
	    }
	    return ret;
	}
	
	this.generateOptions = function(parent_el,start_val,end_val,sel_val){
		ret = parent_el;
	    for(i=start_val;i<=end_val;i++){
	        o = document.createElement('option');
	        o.value = i<10?'0'+i:i;
	        if(o.value==sel_val)
	            o.setAttribute("selected","selected");
	        ot = document.createTextNode(i<10?'0'+i:i);
	        o.appendChild(ot);
	        ret.appendChild(o);
	    }
	    return ret;
	}
	
	this.year_dd = document.getElementById(prefix+'_year');
	this.month_dd = document.getElementById(prefix+'_month');
	this.day_dd = document.getElementById(prefix+'_day');
	
	this.year_dd.onchange = function(){
		id = this.id.substr(0,this.id.lastIndexOf('_'));
	    m = document.getElementById(id+'_month');
	    if(m.value!='02')
	        return true;
	    d = document.getElementById(id+'_day');
	    if(this.value%4==0&&(this.value%100!=0||this.value%400==0)){
	        d = _instance.clearOptions(d);
	        d = _instance.generateOptions(d,1,_instance.month_days[1][1],0);
	    }else{
	        d = _instance.clearOptions(d);
	        d = _instance.generateOptions(d,1,_instance.month_days[1][0],0);
	    }
	}
	
	this.month_dd.onchange = function(){
		id = this.id.substr(0,this.id.lastIndexOf('_'));
	    y = document.getElementById(id+'_year');
	    d = document.getElementById(id+'_day');        
	    if(this.value=='02'&&y.value%4==0&&(y.value%100!=0||y.value%400==0)){
	        d = _instance.clearOptions(d);
	        d = _instance.generateOptions(d,1,_instance.month_days[1][1],0);
	    }else if(this.value=='02'){
	        d = _instance.clearOptions(d);
	        d = _instance.generateOptions(d,1,_instance.month_days[1][0],0);
	    }else{
	        d = _instance.clearOptions(d);
	        d = _instance.generateOptions(d,1,_instance.month_days[this.value-1],0);
	    }
	}
	
	switch(this.month_dd.value){
        case "01":
        case "03":
        case "05":
        case "07":
        case "08":
        case "10":
        case "12":
            return;
        case "02":
            //remove one day
            this.day_dd.removeChild(this.day_dd.lastChild);
            //if not leap year remove another day
            if(this.year_dd.value%4!=0||(this.year_dd.value%100==0&&this.year_dd.value%400!=0))
                this.day_dd.removeChild(this.day_dd.lastChild);
        case "04":
        case "06":
        case "09":
        case "11":
            //remove one day
            this.day_dd.removeChild(this.day_dd.lastChild);
    }
}

function popupMenu(button,menu,pos_elem){
	var offsetx = 0;
	var offsety = 0;
	if(pos_elem){
		offsetx = pos_elem.offsetLeft;
		offsety = pos_elem.offsetTop;
	}
	button.onclick = function(e){
		if(!e) var e = window.event;
		var posx;
		var posy;
		if (e.pageY){
			posy = e.pageY;
			posx = e.pageX;
		}
		else if(e.clientY){
			posy = e.clientY + (document.documentElement?document.documentElement.scrollTop:document.body.scrollTop);
			posx = e.clientX + (document.documentElement?document.documentElement.scrollLeft:document.body.scrollLeft);
		}
		menu.style.top = (posy-10-offsety)+'px';
		menu.style.left = (posx-20-offsetx)+'px'; //offset this to be under the mouse, so that doubleclicking would take user to the default action
		menu.style.display = 'block';
		var f = function(){
			document.body.onclick = function(){
				if(this.tagName.toLowerCase()=='a')
					return true;
				menu.style.display = 'none';
				document.body.onclick = function(){}
			}
		}
		setTimeout(f,100);
		return false;
	}
}

function initPopupMenu(type,pos_elem){
	var ret = new Array();
	if(!type)
		type = 'img'
	var imgs = document.getElementsByTagName(type);
	var l = imgs.length;
	for(var i=0;i<l;i++){
		if(imgs.item(i).className == 'popup_menu'){
			var item = imgs.item(i);
			var tmp = item;
			for(;tmp.className!='item_menu';tmp = tmp.nextSibling);
			ret[ret.length] = new popupMenu(item,tmp,pos_elem);
		}
	}
	return ret;
}


function save_form(formid,sname,svalue){
	var f = document.getElementById(formid);
	if(f){
		var s = document.createElement('input');
		s.setAttribute('type','hidden');
		s.setAttribute('name',sname?sname:'save');
		s.setAttribute('value',svalue?svalue:'1');
		f.appendChild(s);
		f.submit();
	}else{
		f = document.forms[0];
		var s = document.createElement('input');
		s.setAttribute('type','hidden');
		s.setAttribute('name',sname?sname:'save');
		s.setAttribute('value',svalue?svalue:'1');
		f.appendChild(s);
		f.submit();		
	}
}

function cancel_form(formid){
	var f = document.getElementById(formid);
	if(!f)
		f = document.forms[0];
	if(typeof(f.confirm)!='undefined'){
		history.back();
		return;
	}
	if(confirm("Do you wish to discard all changes"))
		history.back();
}
	
	
function WindowOnload(){

	var functions = new Array();
	var executed = false;
	
	this.addMethod = function (f){
		if(!executed)
			functions[functions.length] = f;
		else
			f();
	}
	
	this.executeMethods = function(){
		for(i =0;i<functions.length;i++){
			functions[i]();
		}
		executed = true;
	}
	
}

var wOnload = new WindowOnload();

window.onload = wOnload.executeMethods;

function toggle(id){
	var cont = document.getElementById(id);
	if(!cont)
		return;
	if(cont.style.display == 'block')
		cont.style.display = 'none';
	else
		cont.style.display = 'block';
}
function menuNavigate(action,sel){
	document.location= action + "&firm=" + sel;
}



function tablerow_dnd(table,draghandle_tag){
    this.table = table;
    
    var container;
    var cont_table;
    
    var drop_callback = function(){};
    
    this.setDropCallback = function(f){
    	drop_callback = f;
    }
    
    var dragging = false;
    
    this.init = function(){
        var trs = table.getElementsByTagName('tr');
        var l = trs.length;
        for(var i=0;i<l;i++){
            if(trs.item(i).className !='nodrag'){
            	var dh = trs.item(i).getElementsByTagName(draghandle_tag);
            	var dhl = dh.length;
            	for(var j=0;j<dhl;j++){
            		if(dh.item(j).className == 'draghandle'){
            			dh.item(j).onmousedown = start_drag;
            		}
            	}
            }
        }
        
        container = document.createElement('div');
        container.style.position = 'absolute';
        container.style.border = '1px dotted blue';
        container.style.display = 'none';
        container.style.zIndex = '10';
        
        cont_table = document.createElement('table');
        container.appendChild(cont_table);
        var ct = document.createElement('tbody');
        cont_table.appendChild(ct);
        cont_table = ct;
        
        document.body.appendChild(container);
    }
    
    var start_drag = function(e){
    	if(dragging){
    		drop();
    		return;
    	}
        if(!e) e = window.event;
        var posx;
		var posy;
		if (e.pageY){
			posy = e.pageY;
			posx = e.pageX;
		}
		else if(e.clientY){
			posy = e.clientY + (document.documentElement?document.documentElement.scrollTop:document.body.scrollTop);
			posx = e.clientX + (document.documentElement?document.documentElement.scrollLeft:document.body.scrollLeft);
		}
		container.style.top = posy+'px';
		container.style.left = posx+'px';
		var tr = this;
		for(;tr.tagName.toLowerCase()!='tr';tr = tr.parentNode);
		tr.parentNode.removeChild(tr);
		cont_table.appendChild(tr);		
		container.style.display = 'block';
		document.body.onmousemove = drag;
		var trs = table.getElementsByTagName('tr');
        var l = trs.length;
        for(var i=0;i<l;i++){
            trs.item(i).onmouseover = set_active;            
        }
		document.body.onmouseup = drop;
		document.body.onselectstart = function(){ return false; }
		var dh = tr.getElementsByTagName(draghandle_tag);
        var dhl = dh.length;
        for(var i=0;i<dhl;i++){
        	if(dh.item(i).className=='draghandle'){
        		dh.item(i).onmousedown = function(){};
        	}
        }
		dragging = true;
    }
    
    var active = null;
    
    var set_active = function(){
        active = this;
    }
    
    var drag = function(e){
        if(!e) e = window.event;
        var posx;
		var posy;
		if (e.pageY){
			posy = e.pageY;
			posx = e.pageX;
		}
		else if(e.clientY){
			posy = e.clientY + (document.documentElement?document.documentElement.scrollTop:document.body.scrollTop);
			posx = e.clientX + (document.documentElement?document.documentElement.scrollLeft:document.body.scrollLeft);
		}
		container.style.top = posy+'px';
		container.style.left = posx+'px';
    }
    
    var drop = function(e){
        var tr = cont_table.firstChild;
        var cid = tr.id.substr(tr.id.lastIndexOf('_')+1);
        var tgtid = -1;
        tr.parentNode.removeChild(tr);
        container.style.display = 'none';
        var tgt = active;
        if((tgt == null&&this.tagName.toLowerCase()!='tr')||tgt==tr){
            var tbody = table.getElementsByTagName('tbody').item(0);
            if(tbody){                
                tbody.appendChild(tr);
            }else{
                table.appendChild(tr);
                
            }
        }else{
            //alert('qwe');
            for(;tgt.tagName.toLowerCase()!='tr';tgt = tgt.parentNode);
            if(tgt.className=='nodrag'){
                if(tgt.nextSibling){
                    tgtid = tgt.nextSibling.id.substr(tgt.nextSibling.id.lastIndexOf('_')+1);
                    tgt.parentNode.insertBefore(tr,tgt.nextSibling);

                }else{
                    tgt.parentNode.appendChild(tr);
                }
            }else{
            	tgtid = tgt.id.substr(tgt.id.lastIndexOf('_')+1);
                tgt.parentNode.insertBefore(tr,tgt);
            }
        }
        active = null;
        var dh = tr.getElementsByTagName(draghandle_tag);
        var dhl = dh.length;
        for(var i=0;i<dhl;i++){
        	if(dh.item(i).className=='draghandle'){
        		dh.item(i).onmousedown = start_drag;
        	}
        }
        if(typeof(drop_callback)=='function'){
        	drop_callback(cid,tgtid);
        }
        document.body.onmouseup = function(){}
		document.body.onselectstart = function(){ }        
        dragging = false;
    }
    
} 

var ie6imagefix = function (){

	
	var links = document.getElementById('toolbar').getElementsByTagName('a');
	var l = links.length;
	for(var i = 0;i<l;i++){
		if(links.item(i).style.backgroundImage.match(/\.png/)){
		 	links.item(i).style.backgroundImage = links.item(i).style.backgroundImage.replace(/\.png/,".gif");
		
		}
	}
}

var makeEqColumns = function(left,right,mid){
	var lcol = document.getElementById(left);
	var rcol = document.getElementById(right);
	var mcol = document.getElementById(mid);
	var mch = mcol.offsetHeight;
	var cheight = Math.max(lcol.offsetHeight,rcol.offsetHeight);
	if(cheight>mch){
		mcol.style.height = cheight+'px';
	}
	if(mcol.scrollHeight>mch){
	   lcol.style.height = mcol.scrollHeight+'px';
	   rcol.style.height = mcol.scrollHeight+'px';
	   mcol.style.height = mcol.scrollHeight+'px';
    }
}


var asyncRequest = function() {
    function handleReadyState(o, callback) {
        var poll = window.setInterval(function() {
            if(o && o.readyState == 4) {
                window.clearInterval(poll);
                if ( callback ){
                    callback(o);
                }
            }
        },
        50);
    }
    var http;
    try {
        http = new XMLHttpRequest();
    }
    catch(e) {
        var msxml = ["MSXML2.XMLHttp", "MSXML3.XMLHttp", "MSXML.XMLHttp", "Microsoft.XMLHttp"];
        for ( var i=0, len = msxml.length; i < len; ++i ) {
            try {
                http = new ActiveXObject(msxml[i]);
                break;
            }
            catch(e) {}
        }
    }
    return function(method, uri, callback, postData) {
        http.open(method, uri, true);
        if(postData){
        	http.setRequestHeader('content-type','application/x-www-form-urlencoded');
        }
        handleReadyState(http, callback);
        http.send(postData || null);
        return http;
    };
}();


/** some crap that people with lame fingers use (I don't have the time go around changeing it in frontpage/whatever generated html)*/
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


function mp3preview(filename){
	window.open("/preview_song.html?mp3="+encodeURIComponent(filename),'','width=220,height=260');
}

function mp3previewfp(id){
	window.open("/preview_song.html?mp3id="+id,'','width=220,height=260');
}

function _feedback_popup_submit(el){
	var pel = $(el).parent();
	var page_title = $('#feedback_popup_btn').attr('rel');
	var params = {
		page_from:page_title,
		send:1,
		content:el.elements['content'].value,
		subject:el.elements['subject'].value		
	}
	if ( typeof(el.elements['name']) != 'undefined' ) {
		params.name = el.elements['name'].value;
		params.email = el.elements['email'].value;
	}
	$.post('/feedback_popup.html',params,function(resp){
		pel.html(resp);
	});
	return false;
}