if (!document.customFields) document.customFields = new Object();

document.customFields.getXmlParams = function(arr) {
	var xml = '<value>';
	switch (typeof(arr)){
		case 'object':{
			xml+='<struct><member>';
            if( arr.length ) {
                for( var i=0; i<arr.length; i++ ) {
                    xml+= '<name>' + i + '</name>';
                    xml+= document.customFields.getXmlParams( arr[i] );
                }
            } else {
                for( var i in arr ) {
                    xml+= '<name>' + i + '</name>';
                    xml+= document.customFields.getXmlParams( arr[i] );
                }
            }
			xml+='</member></struct>';
			break;
		}
		case 'number':{
			xml+='<int>' + arr + '</int>';
			break;
		}
		case 'string':{
			xml+='<string>' + arr + '</string>';
			break;
		}
	};
	xml+='</value>';
	return xml;
}

document.customFields.fixImages = function(jcoll, size)
{
	jcoll.each(function(){
		var w = parseInt($(this).attr('width'));
		
		if(isNaN(w)){
			w = parseInt($(this).css('width'));
		}

		if(w > size){
			var ratio = $(this).attr('width') / size;
			var h = $(this).attr('height') / ratio;
			$(this).attr('width', size);
			$(this).attr('height', h);
			$(this).css('width', size + 'px');
			$(this).css('height', h + 'px');
		}
	});
}

document.customFields.ajaxStart = function (el)
{	

	if (!el){
		el=document.customFields.ajaxDiv;
	}
	
	el=document.customFields.center(el);
	if (!el) return false;
	
	$(el).css('display','block');
}

document.customFields.ajaxEnd = function(el)
{
	if (!el){
		el=document.customFields.ajaxDiv;
	}
	el=document.customFields.getObject(el);
	if (!el) return false;
	$(el).css('display','none');
}

document.customFields.moveToDocument = function(el)
{
	el=document.customFields.getObject(el);
	if (!el) return false;
	else if (el.parentNode == document.body) return el;
	else {
		document.body.appendChild(el);
		return el;
	}
	
	return false;
}

document.customFields.getObject = function(el)
{	
	if (!el) return false; 
	else if (typeof(el)=='object') return el;
	else if (document.getElementById(el)) return document.getElementById(el);
	else if ($(el)[0]) return $(el)[0];
	
	return false;   
}

document.customFields.getScreenInfo = function()
{
	var srcOfX = 0, srcOfY = 0;
	var srcWidth = 0, srcHeight = 0;
	
	if(typeof(window.pageYOffset) == 'number'){
		srcHeight = window.innerHeight;
		srcWidth = window.innerWidth;
		srcOfY = window.pageYOffset;
		srcOfX = window.pageXOffset;
	} else if(document.body && ( document.body.scrollLeft || document.body.scrollTop)){
		srcHeight = window.innerHeight;
		srcWidth = window.innerWidth;
		srcOfY = document.body.scrollTop;
		srcOfX = document.body.scrollLeft;
	} else if(document.documentElement && ( document.documentElement.clientHeight || document.documentElement.clientWidth)){
		srcHeight = document.documentElement.clientHeight;
		srcWidth = document.documentElement.clientWidth;
		srcOfY = document.documentElement.scrollTop;
		srcOfX = document.documentElement.scrollLeft;
	}
	
	return [srcWidth, srcHeight, srcOfX, srcOfY];
}

document.customFields.center = function(el)
{
	el=document.customFields.getObject(el);
	el=document.customFields.moveToDocument(el);
	if (!el) return false;
	
	var srcOfX = 0, srcOfY = 0;
	var srcWidth = 0, srcHeight = 0;
	
	var screen = document.customFields.getScreenInfo();
	
	if (el.offsetWidth==0) {
		$(el).css('display','block');
	}
	
	var x = (screen[0]/2) - (el.offsetWidth / 2) + screen[2];
	var y = (screen[1]/2) - (el.offsetHeight / 2) + screen[3];
	
	$(el).css('left',x+'px');
	$(el).css('top',y+'px');
		
	return el;
}

document.customFields.StripPx = function (msg){var str=""+msg;return parseInt(str.replace(/px/,""));}
document.customFields.moveToMouse = function(event,el)
{
	if (!el) return false;
	if (el.parentNode != document.body){
		el=document.customFields.getObject(el);
		el=document.customFields.moveToDocument(el);
	}
	if (document.customFields.StripPx(el.style.top)!=event.pageY + 5)	
		el.style.top = event.pageY+5+'px';
		
	if (document.customFields.StripPx(el.style.left)!= event.pageX + 5)
		el.style.left = event.pageX+5+'px';
	
}

document.customFields.getXmlArr = function (xml) {

    if( $(xml).find('member').length ) {
        var obj = Array();
        $(xml).find('member').each( function( id, el ) {
            obj[$(el).find('name').text()]=$(el).find('value').text();
        });
    } else {
        obj = $(xml).find('string').text();
    }
	return obj;

}

document.customFields.getId = function(lel){return lel ? lel.replace(/.*_(\d)/,"$1") : 0;}

document.customFields.semaphore=Array();
document.customFields.canAjax = function(pattern,val)
{
	if(val==1){
		document.customFields.semaphore[pattern]=1;		
	}
	else if (val==0){
		document.customFields.semaphore[pattern]=0;
	}
	
	return (document.customFields.semaphore[pattern]==undefined?1:document.customFields.semaphore[pattern]);
}

document.customFields.cancelBuble=function(event)
{
	if ($.browser.msie) 
	{
	    window.event.cancelBubble = true;
	    window.event.returnValue = false;
	}
	else if ($.browser.mozilla) {event.preventDefault();}
	
	return false;	
}

document.customFields.clearForm = function(el){
	el=document.customFields.getObject(el);
	if (!el) return false;
	$(el).find('input').each(function(id,el){
		if (el.type=='text'){
			el.value='';
		}
		else if (el.type=='checkbox'){
			el.checked=false;
		}
			
	});
	$(el).find('select').each(function(id,el){
		el.selectedIndex=0;	
	});
	return false;
}

$(document).ready(function(){
	$('textarea#edit-teaser').keypress(function(){
		$('input#edit-update-teaser').attr('checked', 'checked');
	});
	$('textarea#edit-body').keypress(function(){
		var el = $('textarea#edit-teaser').parent().parent().parent().parent().parent();
		if(el.hasClass('collapsible')){
			el.removeClass('collapsed');
		}
	});

	if(top.location != document.location){
		top.location = document.location;
	}
});

document.customFields.ajax = function (functionName,arr,funk,json)
{
	Drupal.settings.basePath = Drupal.settings.basePath || '/';

	var xml_post;
	xml_post = "<?xml version=\"1.0\"?>";
    xml_post += "<methodCall><methodName>" + functionName + "</methodName><params><param>";
	xml_post += document.customFields.getXmlParams(arr);
    xml_post += "</param></params></methodCall>";

	document.customFields.ajaxStart();
	$.ajax({
	  type: "POST",
	  url: Drupal.settings.basePath + "xmlrpc.php",
	  dataType: ( json ) ? "json" : "xml",
	  data: xml_post,
	  success: function (xml) {

        if( json ) {
            var arr = xml;
        } else {
            var arr=document.customFields.getXmlArr(xml);
        }
        
	  	if (funk) {
            funk(arr);
        } else if( arr['function'] ) {
            arr['function'](arr);
        } else if( arr['id'] && arr['content'] ) {
            document.customFields.replace(arr);
        }
		document.customFields.ajaxEnd();
	  }
	});
}

document.customFields.replace = function( arr ) {
  $( '#' + arr['id'] ).html( arr['content'] );
}

document.customFields.xmlrpcForms = function( form_id, callback ) {
     $( '#' + form_id ).find('input[type=submit]').bind('click',function(event){
            var data = {};
            $( '#' + form_id ).find( 'input' ).each( function( id, el ) {
                if( el.type == 'text' || el.type == 'hidden' ) {
                    data[el.name] = el.value;
                } else if( el.type == 'checkbox' && el.checked ){
                    data[el.name] = 1;
                }
            });
            $( '#' + form_id ).find('select').each(function(id,el){
                data[el.name]=$(el).val();
            });
            document.customFields.ajax( 'customfields.formSubmit', data, function( errors ) { if( callback ) callback( ( errors ) ? errors : data ); }, true );
            return false;
    });
}
