var mouseX, mouseY;
var CURRENT_URL 	= parse_url(document.location);
var CURRENT_PATH 	= CURRENT_URL.path;
var URL_PARTS		= CURRENT_PATH.split("/");
var CURRENT_FILE 	= array_pop(URL_PARTS);
var CURRENT_BASE 	= URL_PARTS.join("/");

var PREF_PANE;
var PREF_TIME;
var PREF_OVER;

function calculate(frm)
{
	cTab($('cb2'));

	var params = frm.serialize();

	$('cc2').innerHTML = '<br><br><img src="img/loading.gif"><br /><br />Calculating...please wait!';

	// Ajax call
	new Ajax.Request(CURRENT_BASE+'/Calculator.html',
	{
		onSuccess: function(transport){
			$('cc2').innerHTML = transport.responseText;
		},
		onFailure: function(){
			$('cc2').innerHTML = '<br><br><h3>System Error</h3><strong>Please try again latter or contact our support desk!</strong>';
		},
		parameters:params
	});
}

function trigger(f)
{
	var id		= f.id.replace("f_", "t_");
	var combo 	= $(id);

	f.select();
	triggerClose(id);

	if(combo.style.display != 'block'){
		combo.style.display = 'block';
	}
	else {
		combo.style.display = 'none';
	}
}

function triggerSelect(a, call)
{
	$(a.parentNode.id.replace("t_", "f_")).value = a.innerHTML;
	triggerClose();

	if(call){
		call(a.innerHTML);
	}
}

function triggerClose(id)
{
	var triggers = $$('.trigger');

	for(var i=0; i<triggers.length; i++)
	{
		if(id && id == $(triggers[i]).id){
			//
		}
		else {
			$(triggers[i]).style.display = 'none';
		}
	}
}

function cTab(tab)
{
	tab.className = 'active';

	if(tab.id == 'cb1'){
		$('cb2').className = '';
		$('cc1').style.display 	= 'block';
		$('cc2').style.display 	= 'none';
	}
	else{
		$('cb1').className 		= '';
		$('cc1').style.display 	= 'none';
		$('cc2').style.display 	= 'block';
	}
}

function showPrefs()
{
	Effect.Fade('activePrefs', {duration: 0.4});
	Effect.SlideDown('options', {delay: 0.4, duration: 0.4});
	
	PREF_TIME = setTimeout("hidePrefs()", 3000);
}

function hidePrefs()
{
	if(PREF_OVER){
		clearTimeout(PREF_TIME);
		PREF_TIME = setTimeout("hidePrefs()", 500);
		return;	
	}
	
	if($('options').style.display == 'none'){
		return;	
	}
	
	Effect.Appear('activePrefs', {delay:0.4, duration:0.4});
	Effect.SlideUp('options', {delay: 0, duration: 0.4});
}

function showHint(href)
{
	var hint = $('hint');

	if(href)
	{
		hint.innerHTML 		= href.getAttribute('hint');
		hint.style.display	= 'block';
		hint.style.left 	= (mouseX)+"px";
		hint.style.top  	= (mouseY+20)+"px";
	}
	else {
		hint.style.display = 'none';
	}
}

// Some observers
document.observe('click', initEvents);
document.observe('keypress', initEvents);
document.observe('mousemove', mouseMove);

function mouseMove(e)
{
	mouseX = Event.pointerX(e);
	mouseY = Event.pointerY(e);
	
	var hint = $('hint');

	if(hint && hint.style.display == 'block')
	{
		hint.style.left 	= (mouseX)+"px";
		hint.style.top  	= (mouseY+20)+"px";
	}
	
	// Close pref pane	
	if(PREF_PANE)
	{
		var o = PREF_PANE.viewportOffset();
		
		var t = o.top;
		var r = o.left + PREF_PANE.getWidth();
		var b = o.top + PREF_PANE.getHeight();
		var l = o.left;
		
		if(mouseX > l && mouseX < r && mouseY > t && mouseY < b){
			PREF_OVER = true;
		}
		else {
			PREF_OVER = false;
		}
	}
	else {
		PREF_PANE = $('options');
	}
}


function initEvents(e)
{
	if(e.keyCode == Event.KEY_ESC){
		triggerClose();
		return;
	}

	if(e.target.tagName == 'INPUT' || e.target.className == 'comboTrigger')
	{
		var id = e.target.id;

		if(e.target.className == 'comboTrigger'){
			id = e.target.getAttribute('tid');
		}

		triggerClose(id.replace("f_", "t_"));
	}
	else {
		triggerClose();
	}
}

function dbg(obj, printt)
{
	var str = '';
	for(i in obj){
		if(typeof(obj[i]) != 'function'){
			str += i+" : "+obj[i]+"\n";
		}
	}
	if(printt){
		document.write('<pre>'+str+'</pre>');
	}
	else{
		alert(str);
	}
}

function parse_url(str, component) 
{
    var  o   = {
        strictMode: false,
        key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
        q:   {
            name:   "queryKey",
            parser: /(?:^|&)([^&=]*)=?([^&]*)/g
        },
        parser: {
            strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
            loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-protocol to catch file:/// (should restrict this)
        }
    };
    
    var m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
    uri = {},
    i   = 14;
    while (i--) {uri[o.key[i]] = m[i] || "";}
    // Uncomment the following to use the original more detailed (non-PHP) script
    /*
        uri[o.q.name] = {};
        uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
        if ($1) uri[o.q.name][$1] = $2;
        });
        return uri;
    */

    switch (component) {
        case 'PHP_URL_SCHEME':
            return uri.protocol;
        case 'PHP_URL_HOST':
            return uri.host;
        case 'PHP_URL_PORT':
            return uri.port;
        case 'PHP_URL_USER':
            return uri.user;
        case 'PHP_URL_PASS':
            return uri.password;
        case 'PHP_URL_PATH':
            return uri.path;
        case 'PHP_URL_QUERY':
            return uri.query;
        case 'PHP_URL_FRAGMENT':
            return uri.anchor;
        default:
            var retArr = {};
            if (uri.protocol !== '') {retArr.scheme=uri.protocol;}
            if (uri.host !== '') {retArr.host=uri.host;}
            if (uri.port !== '') {retArr.port=uri.port;}
            if (uri.user !== '') {retArr.user=uri.user;}
            if (uri.password !== '') {retArr.pass=uri.password;}
            if (uri.path !== '') {retArr.path=uri.path;}
            if (uri.query !== '') {retArr.query=uri.query;}
            if (uri.anchor !== '') {retArr.fragment=uri.anchor;}
            return retArr;
    }
}

function array_pop (array) 
{
    var key = '', cnt = 0;

    if (array.hasOwnProperty('length')) {
        // Indexed
        if (!array.length){
            // Done popping, are we?
            return null;
        }
        return array.pop();
    } else {
        // Associative
        for (key in array) {
            cnt++;
        }
        if (cnt) {
            delete(array[key]);
            return array[key];
        } else {
            return null;
        }
    }
}

function checkData(){
    
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (!filter.test($('Email').value)){
        alert("Please provide valid Email Address!");
        return false;
    }
    if ($('Names').value == ''){
        alert("Please provide Your Names!");
        return false;
    }

    return true;

}
